Search code examples
net-snmp

Why I can not 'get' a net-snmp table column but 'getnext' is ok?


I am trying to develop a net-snmp subagent, and came across something confusing.

Why I can not get a net-snmp table column but 'getnext' is ok in mib-browser?

I generated the code by mib2c -c mib2c.iterate.conf.

In mib-browser, get operation alerts: can not retrieve data. unknown oid ...,
getnext is okay.

So, why ? Does it have something to do with mib2c.iterate.conf ?


Solution

  • Quoting snmpgetnext man page:

    the variable that is lexicographically "next" in the remote entity's MIB will be returned. For example: snmpgetnext -c public zeus interfaces.ifTable.ifEntry.ifType.1 will retrieve the variable interfaces.ifTable.ifEntry.ifType.2: interfaces.ifTable.ifEntry.ifType.2 = softwareLoopback(24)

    in other words, the OID you are looking up does not exist so GET fails but the one lexicographically after it gets returned ok via GETNEXT.

    $ snmpget -v 2C -c public myserver .1.3.6.1.2.1.4.31.3.1.3.2.9
    IP-MIB::ipIfStatsInReceives.ipv6.9 = Counter32: 48
    
    $ snmpgetnext -v 2C -c public myserver .1.3.6.1.2.1.4.31.3.1.3.2.9
    IP-MIB::ipIfStatsInReceives.ipv6.10 = Counter32: 24
    
    $ snmpget -v 2C -c public myserver .1.3.6.1.2.1.4.31.3.1.3.2.10
    IP-MIB::ipIfStatsInReceives.ipv6.10 = Counter32: 24