I'm not sure why snmpwalk is behaving the way it is. Here's my code: http://www.dreness.com/bits/tech/persist_test.py
The issue can be demonstrated with excerpts from my debug log. If I send an snmpwalk to the top of my OID tree (i.e. the one defined in snmpd.conf), it behaves as expected:
in: PING
out: PONG
in: getnext
in: .1.3.6.1.4.1.8072.9999.9999
- relative target: ||
- getnext is working .1.1
- < .1.1
out: .1.3.6.1.4.1.8072.9999.9999.1.1
out: integer
out: 707
in: PING
out: PONG
in: getnext
in: .1.3.6.1.4.1.8072.9999.9999.1.1
- relative target: |.1.1|
- getnext is working .1.1
- .1.1 < .1.1
- getnext is working .1.2
- .1.1 < .1.2
out: .1.3.6.1.4.1.8072.9999.9999.1.2
out: integer
out: 260
in: PING
out: PONG
in: getnext
in: .1.3.6.1.4.1.8072.9999.9999.1.2
- relative target: |.1.2|
- getnext is working .1.1
- .1.2 < .1.1
- getnext is working .1.2
- .1.2 < .1.2
out: NONE
and snmpwalk reports:
{66} andre@dhcp6 [~] % snmpwalk -v 1 -c <foo> tiny.937 .1.3.6.1.4.1.8072.9999.9999
SNMPv2-SMI::enterprises.8072.9999.9999.1.1 = INTEGER: 707
SNMPv2-SMI::enterprises.8072.9999.9999.1.2 = INTEGER: 260
but if I target .1.3.6.1.4.1.8072.9999.9999.1.1, something different happens:
in: PING
out: PONG
in: getnext
in: .1.3.6.1.4.1.8072.9999.9999.1.1
- relative target: |.1.1|
- getnext is working .1.1
- .1.1 < .1.1
- getnext is working .1.2
- .1.1 < .1.2
out: .1.3.6.1.4.1.8072.9999.9999.1.2
out: integer
out: 260
in: PING
out: PONG
in: get
in: .1.3.6.1.4.1.8072.9999.9999.1.1
- relative target: |.1.1|
out: .1.3.6.1.4.1.8072.9999.9999.1.1
out: integer
out: 707
with snmpwalk reporting:
{67} andre@dhcp6 [~] % snmpwalk -v 1 -c <foo> tiny.937 .1.3.6.1.4.1.8072.9999.9999.1.1
SNMPv2-SMI::enterprises.8072.9999.9999.1.1 = INTEGER: 707
Can anybody explain why snmpwalk can't get past .1.1 in the second example, even though I return .1.2?