Hi,

I would like to report was looks like a bug in snmpd.

When walking on the ifTable my client crashes when walking over 10G interfaces.
Tcpdump shows that ifSpeed (1.3.6.1.2.1.2.2.1.5) is sending the value 
10000000000 (10Gbps).
But ifSpeed is of type GAUGE and maxes out at 2^32-1 (4Gbps-1).

My MIB browser  states :
"An estimate of the interface's current bandwidth in bits
per second.  For interfaces which do not vary in bandwidth
or for those where no accurate estimation can be made, this
object should contain the nominal bandwidth.  If the
bandwidth of the interface is greater than the maximum value
reportable by this object then this object should report its
maximum value (4,294,967,295) and ifHighSpeed must be used
to report the interace's speed.  For a sub-layer which has
no concept of bandwidth, this object should be zero."

So I guess the case block at line 1111 in /usr.sbin/snmpd/mib.c should read :
                case 5:
                               i = kif->if_baudrate >= 4294967295 ?
                                               4294967295 : kif->if_baudrate ;
                               ber = ber_add_integer(ber, i);
                               ber_set_header(ber, BER_CLASS_APPLICATION, 
SNMP_T_GAUGE32);
                break;
instead of
                case 5:
                               ber = ber_add_integer(ber, kif->if_baudrate);
                               ber_set_header(ber, BER_CLASS_APPLICATION, 
SNMP_T_GAUGE32);
                break;

Is my assumption correct or have I missed something ?

I'm gonna give it a try while a fix perhaps makes its way in the next release 
or patches.

Have a nice day and thanks for your nice work in OpenBSD !

Best regards
Arnaud

Reply via email to