summaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorGilles Chehade <gilles@cvs.openbsd.org>2007-12-10 23:23:22 +0000
committerGilles Chehade <gilles@cvs.openbsd.org>2007-12-10 23:23:22 +0000
commit4108109cd1025b486b8792b1c2f88e9bd4076b1a (patch)
tree0f64586dea973696369302c1573d9997f287d76f /usr.sbin
parent5d540252570bc7e5dd65128d8626469537183dd5 (diff)
add ip_mib table as well as support for retrieving ipForwarding and
ipDefaultTTL ok reyk@
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/snmpd/mib.c76
-rw-r--r--usr.sbin/snmpd/mib.h40
2 files changed, 113 insertions, 3 deletions
diff --git a/usr.sbin/snmpd/mib.c b/usr.sbin/snmpd/mib.c
index 968768f0652..ee185137bed 100644
--- a/usr.sbin/snmpd/mib.c
+++ b/usr.sbin/snmpd/mib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mib.c,v 1.3 2007/12/06 09:08:05 reyk Exp $ */
+/* $OpenBSD: mib.c,v 1.4 2007/12/10 23:23:21 gilles Exp $ */
/*
* Copyright (c) 2007 Reyk Floeter <reyk@vantronix.net>
@@ -1036,6 +1036,77 @@ mib_sensorvalue(struct sensor *s)
return (v);
}
+int mib_ipforwarding(struct oid *, struct ber_oid *, struct ber_element **);
+int mib_ipdefaultttl(struct oid *, struct ber_oid *, struct ber_element **);
+
+static struct oid ip_mib[] = {
+ { MIB(IPMIB), "ipMIB", OID_MIB },
+ { MIB(IPFORWARDING), "ipForwarding", OID_RD, mib_ipforwarding },
+ { MIB(IPDEFAULTTTL), "ipDefaultTTL", OID_RD, mib_ipdefaultttl },
+ { MIB(IPINRECEIVES), "ipInReceives" },
+ { MIB(IPINHDRERRORS), "ipInHdrErrors" },
+ { MIB(IPINADDRERRORS), "ipInAddrErrors" },
+ { MIB(IPFORWDATAGRAMS), "ipForwDatagrams" },
+ { MIB(IPINUNKNOWNPROTOS), "ipInUnknownProtos" },
+ { MIB(IPINDISCARDS), "ipInDiscards" },
+ { MIB(IPINDELIVERS), "ipInDelivers" },
+ { MIB(IPOUTREQUESTS), "ipOutRequests" },
+ { MIB(IPOUTDISCARDS), "ipOutDiscards" },
+ { MIB(IPOUTNOROUTES), "ipOutNoRoutes" },
+ { MIB(IPREASMTIMEOUT), "ipReasmTimeout" },
+ { MIB(IPREASMREQDS), "ipReasmReqds" },
+ { MIB(IPREASMOKS), "ipReasmOKs" },
+ { MIB(IPREASMFAILS), "ipReasmFails" },
+ { MIB(IPFRAGOKS), "ipFragOKs" },
+ { MIB(IPFRAGFAILS), "ipFragFails" },
+ { MIB(IPFRAGCREATES), "ipFragCreate" },
+ { MIBEND }
+};
+
+int
+mib_ipforwarding(struct oid *oid, struct ber_oid *o, struct ber_element **elm)
+{
+ int mib[4];
+ int v;
+ size_t len;
+
+ mib[0] = CTL_NET;
+ mib[1] = AF_INET;
+ mib[2] = IPPROTO_IP;
+ mib[3] = IPCTL_FORWARDING;
+
+ len = sizeof(v);
+
+ if (sysctl(mib, 4, &v, &len, NULL, 0) == -1)
+ return(-1);
+
+ *elm = ber_add_integer(*elm, v);
+
+ return (0);
+}
+
+int
+mib_ipdefaultttl(struct oid *oid, struct ber_oid *o, struct ber_element **elm)
+{
+ int mib[4];
+ int v;
+ size_t len;
+
+ mib[0] = CTL_NET;
+ mib[1] = AF_INET;
+ mib[2] = IPPROTO_IP;
+ mib[3] = IPCTL_DEFTTL;
+
+ len = sizeof(v);
+
+ if (sysctl(mib, 4, &v, &len, NULL, 0) == -1)
+ return(-1);
+
+ *elm = ber_add_integer(*elm, v);
+
+ return (0);
+}
+
/*
* Import all MIBs
*/
@@ -1049,6 +1120,9 @@ mib_init(void)
/* IF-MIB */
mps_mibtree(if_mib);
+ /* IP-MIB */
+ mps_mibtree(ip_mib);
+
/* some http://www.iana.org/assignments/enterprise-numbers */
mps_mibtree(enterprise_mib);
diff --git a/usr.sbin/snmpd/mib.h b/usr.sbin/snmpd/mib.h
index c5c82388213..5dbefc04bad 100644
--- a/usr.sbin/snmpd/mib.h
+++ b/usr.sbin/snmpd/mib.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: mib.h,v 1.3 2007/12/05 22:52:50 reyk Exp $ */
+/* $OpenBSD: mib.h,v 1.4 2007/12/10 23:23:21 gilles Exp $ */
/*
* Copyright (c) 2007 Reyk Floeter <reyk@vantronix.net>
@@ -166,7 +166,43 @@
#define MIB_IFOUTQLEN MIB_IFENTRY, 21
#define MIB_IFSPECIFIC MIB_IFENTRY, 22
-/* Some enterprise-sepcific OIDs */
+/* IP-MIB */
+#define MIB_IPMIB MIB_MIB_2, 4
+#define MIB_IPFORWARDING MIB_IPMIB, 1
+#define MIB_IPDEFAULTTTL MIB_IPMIB, 2
+#define MIB_IPINRECEIVES MIB_IPMIB, 3
+#define MIB_IPINHDRERRORS MIB_IPMIB, 4
+#define MIB_IPINADDRERRORS MIB_IPMIB, 5
+#define MIB_IPFORWDATAGRAMS MIB_IPMIB, 6
+#define MIB_IPINUNKNOWNPROTOS MIB_IPMIB, 7
+#define MIB_IPINDISCARDS MIB_IPMIB, 8
+#define MIB_IPINDELIVERS MIB_IPMIB, 9
+#define MIB_IPOUTREQUESTS MIB_IPMIB, 10
+#define MIB_IPOUTDISCARDS MIB_IPMIB, 11
+#define MIB_IPOUTNOROUTES MIB_IPMIB, 12
+#define MIB_IPREASMTIMEOUT MIB_IPMIB, 13
+#define MIB_IPREASMREQDS MIB_IPMIB, 14
+#define MIB_IPREASMOKS MIB_IPMIB, 15
+#define MIB_IPREASMFAILS MIB_IPMIB, 16
+#define MIB_IPFRAGOKS MIB_IPMIB, 17
+#define MIB_IPFRAGFAILS MIB_IPMIB, 18
+#define MIB_IPFRAGCREATES MIB_IPMIB, 19
+#define MIB_IPADDRTABLE MIB_IPMIB, 20
+#define MIB_IPADDRENTRY MIB_IPADDRTABLE, 1
+#define MIB_IPADENTADDR MIB_IPADDRENTRY, 2
+#define MIB_IPADENTIFINDEX MIB_IPADDRENTRY, 3
+#define MIB_IPADENTNETMASK MIB_IPADDRENTRY, 4
+#define MIB_IPADENTBCASTADDR MIB_IPADDRENTRY, 5
+#define MIB_IPADENTREASMMAXSIZE MIB_IPADDRENTRY, 6
+#define MIB_IPNETTOMEDIATABLE MIB_IPMIB, 22
+#define MIB_IPNETTOMEDIAENTRY MIB_IPNETTOMEDIATABLE, 1
+#define MIB_IPNETTOMEDIAIFINDEX MIB_IPNETTOMEDIAENTRY, 1
+#define MIB_IPNETTOMEDIAPHYSADDRESS MIB_IPNETTOMEDIAENTRY, 2
+#define MIB_IPNETTOMEDIANETADDRESS MIB_IPNETTOMEDIAENTRY, 3
+#define MIB_IPNETTOMEDIATYPE MIB_IPNETTOMEDIAENTRY, 4
+#define MIB_IPROUTINGDISCARDS MIB_IPMIB, 23
+
+/* Some enterprise-specific OIDs */
#define MIB_IBM MIB_ENTERPRISES, 2
#define MIB_CMU MIB_ENTERPRISES, 3
#define MIB_UNIX MIB_ENTERPRISES, 4