How can I get the syntax type and read/write access for an OID using NET-SNMP API?
I am writing an SNMP tool that reads and sets values on a remote machine using SNMP protocol. Before setting the value, I need to check its type and access permissions (whether it is allowed to write this value on the server or not) from the MIB file.
Unfortunately, I could not find any mention regarding how to do this in the Net-SNMP documentation.
Roughly speaking:
oid name[128];
size_t name_length = OID_LENGTH(name);
strict tree *tp;
read_objid("sysContact.0", &name, &name_length);
tp = get_tree(name, name_length, get_tree_head();
Then look through the net-snmp/library/parse.h file for the tree structure and all the good data you need is inside it.
Also see the apps/snmptranslate.c file for further examples.
What Wes said should probably work for what you're trying to do. Alternatively, in your implementation, to check the input type of the set value explicitly, use netsnmp_check_vb_type(). For checking permissions, net-snmp will throw a notWritable error if you try to modify a field without write access (as defined in the relevant MIB).