From 5231b3e8fcbd6c0cb69706739a553991ba10088c Mon Sep 17 00:00:00 2001 From: Reyk Floeter Date: Tue, 23 Dec 2008 08:06:11 +0000 Subject: export the livelock counter in a private mib openBSD.5. discussed with dlg@ --- usr.sbin/snmpd/mib.c | 41 ++++++++++++++++++++++++++++++++++++++++- usr.sbin/snmpd/mib.h | 17 ++++++++++++++++- usr.sbin/snmpd/snmpd.h | 3 ++- 3 files changed, 58 insertions(+), 3 deletions(-) (limited to 'usr.sbin') diff --git a/usr.sbin/snmpd/mib.c b/usr.sbin/snmpd/mib.c index cc4a3dda78c..0be3f9ce3d0 100644 --- a/usr.sbin/snmpd/mib.c +++ b/usr.sbin/snmpd/mib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mib.c,v 1.29 2008/12/19 14:02:20 reyk Exp $ */ +/* $OpenBSD: mib.c,v 1.30 2008/12/23 08:06:10 reyk Exp $ */ /* * Copyright (c) 2007, 2008 Reyk Floeter @@ -1217,6 +1217,7 @@ int mib_sensornum(struct oid *, struct ber_oid *, struct ber_element **); int mib_sensors(struct oid *, struct ber_oid *, struct ber_element **); const char *mib_sensorunit(struct sensor *); char *mib_sensorvalue(struct sensor *); +int mib_memiftable(struct oid *, struct ber_oid *, struct ber_element **); static struct oid openbsd_mib[] = { { MIB(sensorMIBObjects), OID_MIB }, @@ -1228,6 +1229,11 @@ static struct oid openbsd_mib[] = { { MIB(sensorValue), OID_TRD, mib_sensors }, { MIB(sensorUnits), OID_TRD, mib_sensors }, { MIB(sensorStatus), OID_TRD, mib_sensors }, + { MIB(memMIBObjects), OID_MIB }, + { MIB(memMIBVersion), OID_RD, mps_getint, NULL, NULL, + OIDVER_OPENBSD_MEM }, + { MIB(memIfName), OID_TRD, mib_memiftable }, + { MIB(memIfLiveLocks), OID_TRD, mib_memiftable }, { MIBEND } }; @@ -1393,6 +1399,39 @@ mib_sensorvalue(struct sensor *s) return (v); } +int +mib_memiftable(struct oid *oid, struct ber_oid *o, struct ber_element **elm) +{ + struct ber_element *ber = *elm; + u_int32_t idx = 0; + struct kif *kif; + + idx = o->bo_id[OIDIDX_memIfEntry]; + if ((kif = mib_ifget(idx)) == NULL) + return (1); + + o->bo_id[OIDIDX_memIfEntry] = kif->if_index; + ber = ber_add_oid(ber, o); + + switch (o->bo_id[OIDIDX_memIf]) { + case 1: + ber = ber_add_string(ber, kif->if_name); + break; + case 2: + ber = ber_add_integer(ber, kif->if_data.ifi_livelocks); + ber_set_header(ber, BER_CLASS_APPLICATION, SNMP_T_COUNTER64); + break; + default: + return (-1); + } + + return (0); +} + +/* + * Defined in IP-MIB.txt + */ + int mib_getipstat(struct ipstat *); int mib_ipstat(struct oid *, struct ber_oid *, struct ber_element **); int mib_ipforwarding(struct oid *, struct ber_oid *, struct ber_element **); diff --git a/usr.sbin/snmpd/mib.h b/usr.sbin/snmpd/mib.h index 6f4ff2fc719..c324d632158 100644 --- a/usr.sbin/snmpd/mib.h +++ b/usr.sbin/snmpd/mib.h @@ -1,4 +1,4 @@ -/* $OpenBSD: mib.h,v 1.18 2008/12/19 14:02:20 reyk Exp $ */ +/* $OpenBSD: mib.h,v 1.19 2008/12/23 08:06:10 reyk Exp $ */ /* * Copyright (c) 2007, 2008 Reyk Floeter @@ -389,6 +389,15 @@ #define MIB_sensorStatus MIB_sensorEntry, 7 #define MIB_carpMIBObjects MIB_openBSD, 3 #define MIB_ipsecMIBObjects MIB_openBSD, 4 +#define MIB_memMIBObjects MIB_openBSD, 5 +#define MIB_memMIBVersion MIB_memMIBObjects, 1 +#define OIDVER_OPENBSD_MEM 1 +#define MIB_memIfTable MIB_memMIBObjects, 2 +#define MIB_memIfEntry MIB_memIfTable, 1 +#define OIDIDX_memIf 10 +#define OIDIDX_memIfEntry 11 +#define MIB_memIfName MIB_memIfEntry, 1 +#define MIB_memIfLiveLocks MIB_memIfEntry, 2 #define MIB_localSystem MIB_openBSD, 23 #define MIB_SYSOID_DEFAULT MIB_openBSD, 23, 1 #define MIB_localTest MIB_openBSD, 42 @@ -661,6 +670,12 @@ { MIBDECL(sensorValue) }, \ { MIBDECL(sensorUnits) }, \ { MIBDECL(sensorStatus) }, \ + { MIBDECL(memMIBObjects) }, \ + { MIBDECL(memMIBVersion) }, \ + { MIBDECL(memIfTable) }, \ + { MIBDECL(memIfEntry) }, \ + { MIBDECL(memIfName) }, \ + { MIBDECL(memIfLiveLocks) }, \ { MIBDECL(localSystem) }, \ { MIBDECL(localTest) }, \ \ diff --git a/usr.sbin/snmpd/snmpd.h b/usr.sbin/snmpd/snmpd.h index 6e2b7a8b4d8..b84d33299ac 100644 --- a/usr.sbin/snmpd/snmpd.h +++ b/usr.sbin/snmpd/snmpd.h @@ -1,4 +1,4 @@ -/* $OpenBSD: snmpd.h,v 1.22 2008/12/08 11:34:55 reyk Exp $ */ +/* $OpenBSD: snmpd.h,v 1.23 2008/12/23 08:06:10 reyk Exp $ */ /* * Copyright (c) 2007, 2008 Reyk Floeter @@ -430,6 +430,7 @@ int mps_getts(struct oid *, struct ber_oid *, struct ber_element **); void mps_encodeinaddr(struct ber_oid *, struct in_addr *, int); void mps_decodeinaddr(struct ber_oid *, struct in_addr *, int); +struct ber_oid *mps_table(struct oid *, struct ber_oid *, struct ber_oid *); /* smi.c */ int smi_init(void); -- cgit v1.2.3