On 08/04/2008, Kris van Rens <[EMAIL PROTECTED]> wrote:
>         size_t if_oid_len = MAX_OID_LEN;
>         read_objid("IF-MIB::ifNumber.0", if_oid, &if_oid_len);

Remember that this sets the value of 'if_oid_len' to be the actual
length of the OID for 'ifNumber.0'  (i.e. 10)


>         for (i = 0; i < num_if; i++) {
>                 sprintf(oid_str, "IF-MIB::ifPhysAddress.%d", i+1);

if_oid_len still has the value 10, so there isn't room in the
'if_oid' buffer to hold the OID for the ifPhysAddress instances.
(Well, actually there is, but 'read_objid()' thinks there isn't).

Try resetting if_oid_len  to be MAX_OID_LEN before each
call to read_objid()'

>                 read_objid(oid_str, if_oid, &if_oid_len);
>                 snmp_add_null_var(req, if_oid, if_oid_len);
>         }



You are also assuming that ifTable entries will always be
in a strict consecutive sequence (starting from 1).   That's
probably true for most simple systems, but it's not guaranteed.
   It is perfectly valid to have 3 interfaces, with indexes 2, 3
and 27, for example.

You might want to look at using a sequence of GETNEXT requests,
or (if your agent supports SNMPv2c or SNMPv3), a GETBULK
request, which would do the same thing but in one go.

Dave

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Net-snmp-coders mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to