Hi,

If the kernel sensor doesn't have a description, snmpd should fill
something into that column to avoid an empty value. An empty value
makes it really hard to tell what the sensor is.

Before:

SNMPv2-SMI::enterprises.30155.2.1.2.1.2.1 = ""
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.2 = ""
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.3 = ""
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.4 = ""
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.5 = ""
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.6 = ""
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.7 = STRING: "VCore A"
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.8 = STRING: "VCore B"

After:

SNMPv2-SMI::enterprises.30155.2.1.2.1.2.1 = STRING: "temp0"
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.2 = STRING: "temp1"
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.3 = STRING: "temp2"
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.4 = STRING: "fan0"
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.5 = STRING: "fan1"
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.6 = STRING: "fan2"
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.7 = STRING: "VCore A"
SNMPv2-SMI::enterprises.30155.2.1.2.1.2.8 = STRING: "VCore B"


ok?



.joel




Index: src/usr.sbin/snmpd/mib.c
===================================================================
RCS file: /cvs/src/usr.sbin/snmpd/mib.c,v
retrieving revision 1.47
diff -p -u -r1.47 mib.c
--- src/usr.sbin/snmpd/mib.c    16 Sep 2011 20:52:48 -0000      1.47
+++ src/usr.sbin/snmpd/mib.c    30 Jan 2012 05:22:45 -0000
@@ -1271,6 +1271,7 @@ mib_sensors(struct oid *oid, struct ber_
        size_t                   len = sizeof(sensordev);
        struct sensor            sensor;
        size_t                   slen = sizeof(sensor);
+       char                     desc[32];
        int                      mib[] = { CTL_HW, HW_SENSORS, 0, 0, 0 };
        int                      i, j, k;
        u_int32_t                idx = 0, n;
@@ -1315,7 +1316,13 @@ mib_sensors(struct oid *oid, struct ber_
                ber = ber_add_integer(ber, (int32_t)n);
                break;
        case 2:
-               ber = ber_add_string(ber, sensor.desc);
+               if (sensor.desc[0] == '\0') {
+                       snprintf(desc, sizeof(desc), "%s%d",
+                           sensor_type_s[sensor.type],
+                           sensor.numt);
+                       ber = ber_add_string(ber, desc);
+               } else
+                       ber = ber_add_string(ber, sensor.desc);
                break;
        case 3:
                ber = ber_add_integer(ber, sensor.type);

Reply via email to