summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Gwynne <dlg@cvs.openbsd.org>2008-03-15 23:50:55 +0000
committerDavid Gwynne <dlg@cvs.openbsd.org>2008-03-15 23:50:55 +0000
commitebdf6e5dc2d02df80812fbbf9231f261f4a5ac8b (patch)
tree49fe1292f8ef2316db8f092bc13f6be0b71b86ae
parent1242880058859866013326194c53687136409597 (diff)
provide sizeofa for counting the number of elements in an array. use it for
passing the length of the mib in all these sysctl calls. ok reyk@
-rw-r--r--usr.sbin/snmpd/mib.c29
1 files changed, 11 insertions, 18 deletions
diff --git a/usr.sbin/snmpd/mib.c b/usr.sbin/snmpd/mib.c
index 7da35e160f0..364729a00bd 100644
--- a/usr.sbin/snmpd/mib.c
+++ b/usr.sbin/snmpd/mib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mib.c,v 1.21 2008/03/15 00:56:08 dlg Exp $ */
+/* $OpenBSD: mib.c,v 1.22 2008/03/15 23:50:54 dlg Exp $ */
/*
* Copyright (c) 2007, 2008 Reyk Floeter <reyk@vantronix.net>
@@ -62,6 +62,8 @@ int mib_setsnmp(struct oid *, struct ber_oid *, struct ber_element **);
static struct oid mib_tree[] = MIB_TREE;
static struct ber_oid zerodotzero = { { 0, 0 }, 2 };
+#define sizeofa(_a) (sizeof(_a) / sizeof((_a)[0]))
+
/* base MIB tree */
static struct oid base_mib[] = {
{ MIB(mib_2), OID_MIB },
@@ -346,11 +348,10 @@ mib_hrmemory(struct oid *oid, struct ber_oid *o, struct ber_element **elm)
{
struct ber_element *ber = *elm;
int mib[] = { CTL_HW, HW_PHYSMEM64 };
- size_t miblen = sizeof(mib) / sizeof(mib[0]);
u_int64_t physmem;
size_t len = sizeof(physmem);
- if (sysctl(mib, miblen, &physmem, &len, NULL, 0) == -1)
+ if (sysctl(mib, sizeof(mib), &physmem, &len, NULL, 0) == -1)
return (-1);
ber = ber_add_integer(ber, physmem / 1024);
@@ -636,8 +637,7 @@ mib_iftable(struct oid *oid, struct ber_oid *o, struct ber_element **elm)
mib[3] = IPCTL_IFQUEUE;
mib[4] = IFQCTL_DROPS;
len = sizeof(ifq);
- if (sysctl(mib, sizeof(mib) / sizeof(mib[0]),
- &ifq, &len, 0, 0) == -1) {
+ if (sysctl(mib, sizeofa(mib), &ifq, &len, 0, 0) == -1) {
log_info("mib_iftable: %s: invalid ifq: %s",
kif->if_name, strerror(errno));
return (-1);
@@ -653,8 +653,7 @@ mib_iftable(struct oid *oid, struct ber_oid *o, struct ber_element **elm)
mib[3] = IPCTL_IFQUEUE;
mib[4] = IFQCTL_LEN;
len = sizeof(ifq);
- if (sysctl(mib, sizeof(mib) / sizeof(mib[0]),
- &ifq, &len, 0, 0) == -1) {
+ if (sysctl(mib, sizeofa(mib), &ifq, &len, 0, 0) == -1) {
log_info("mib_iftable: %s: invalid ifq: %s",
kif->if_name, strerror(errno));
return (-1);
@@ -871,13 +870,11 @@ mib_sensornum(struct oid *oid, struct ber_oid *o, struct ber_element **elm)
struct sensordev sensordev;
size_t len = sizeof(sensordev);
int mib[] = { CTL_HW, HW_SENSORS, 0 };
- size_t miblen = sizeof(mib) / sizeof(mib[0]);
int i, c;
for (i = c = 0; i < MAXSENSORDEVICES; i++) {
mib[2] = i;
- if (sysctl(mib, miblen,
- &sensordev, &len, NULL, 0) == -1) {
+ if (sysctl(mib, sizeof(mib), &sensordev, &len, NULL, 0) == -1) {
if (errno != ENOENT)
return (-1);
continue;
@@ -907,8 +904,7 @@ mib_sensors(struct oid *oid, struct ber_oid *o, struct ber_element **elm)
for (i = c = 0, n = 1; i < MAXSENSORDEVICES; i++) {
mib[2] = i;
- if (sysctl(mib, 3,
- &sensordev, &len, NULL, 0) == -1) {
+ if (sysctl(mib, 3, &sensordev, &len, NULL, 0) == -1) {
if (errno != ENOENT)
return (-1);
continue;
@@ -1105,8 +1101,7 @@ mib_ipforwarding(struct oid *oid, struct ber_oid *o, struct ber_element **elm)
int v;
size_t len = sizeof(v);
- if (sysctl(mib, sizeof(mib) / sizeof(mib[0]),
- &v, &len, NULL, 0) == -1)
+ if (sysctl(mib, sizeofa(mib), &v, &len, NULL, 0) == -1)
return (-1);
*elm = ber_add_integer(*elm, v);
@@ -1121,8 +1116,7 @@ mib_ipdefaultttl(struct oid *oid, struct ber_oid *o, struct ber_element **elm)
int v;
size_t len = sizeof(v);
- if (sysctl(mib, sizeof(mib) / sizeof(mib[0]),
- &v, &len, NULL, 0) == -1)
+ if (sysctl(mib, sizeofa(mib), &v, &len, NULL, 0) == -1)
return (-1);
*elm = ber_add_integer(*elm, v);
@@ -1136,8 +1130,7 @@ mib_getipstat(struct ipstat *ipstat)
int mib[] = { CTL_NET, AF_INET, IPPROTO_IP, IPCTL_STATS };
size_t len = sizeof(*ipstat);
- return (sysctl(mib, sizeof(mib) / sizeof(mib[0]),
- ipstat, &len, NULL, 0));
+ return (sysctl(mib, sizeofa(mib), ipstat, &len, NULL, 0));
}
int