| .TH NETSNMP_MIB_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP" |
| .SH NAME |
| add_mibdir, |
| netsnmp_init_mib, |
| shutdown_mib, |
| netsnmp_read_module, |
| read_mib, |
| read_all_mibs, |
| add_module_replacement, |
| snmp_set_mib_errors, |
| snmp_set_mib_warnings, |
| snmp_set_save_descriptions, |
| read_objid, |
| snmp_parse_oid, |
| get_module_node, |
| print_mib, |
| print_objid, |
| fprint_objid, |
| snprint_objid, |
| print_description, |
| fprint_description, |
| snprint_description - netsnmp_mib_api functions |
| .SH SYNOPSIS |
| .B #include <net\-snmp/mib_api.h> |
| .PP |
| .SS Initialisation and Shutdown |
| .BI "int add_mibdir(const char *" "dirname" ); |
| .PP |
| .B "void netsnmp_init_mib(void); |
| .\".br |
| .\".BI "void init_mib(void);" " (deprecated)" |
| .\".br |
| .\".BI "void init_mib_internals(void);" " (deprecated)" |
| .br |
| .B "void shutdown_mib(void); |
| .SS Reading and Parsing MIBs |
| .BI "struct tree *netsnmp_read_module(const char *" "name" ); |
| .br |
| .\".BI "struct tree *read_module(const char *" "name" ");" " (deprecated)" |
| .\".PP |
| .BI "struct tree *read_mib(const char *" "filename" ); |
| .br |
| .B "struct tree *read_all_mibs(void); |
| .PP |
| .BI "int add_module_replacement(const char *" "old_module" "," |
| .br |
| .BI " const char *" "new_module" "," |
| .br |
| .BI " const char *" "tag" ", int " "len" ); |
| .PP |
| .BI "void snmp_set_mib_warnings(int " level ); |
| .br |
| .BI "void snmp_set_mib_errors(int " level ); |
| .br |
| .BI "void snmp_set_save_descriptions(int " save ");" |
| .SS Searching the MIB Tree |
| .PP |
| .BI "int read_objid(const char *" "input" "," |
| .br |
| .BI " oid *" "objid" ", size_t *" "objidlen" ); |
| .br |
| .BI "oid *snmp_parse_oid(const char *" "input" "," |
| .br |
| .BI " oid *" "objid" ", size_t *" "objidlen" ); |
| .br |
| .BI "int get_module_node(const char *" "name" ", const char *" "module" "," |
| .br |
| .BI " oid *" "objid" ", size_t *" "objidlen" ); |
| .SS Output |
| .PP |
| .BI "void print_mib(FILE *" "fp" ); |
| .PP |
| .BI "void print_objid(const oid *" objid ", size_t " objidlen ); |
| .br |
| .BI "void fprint_objid(FILE *" fp "," |
| .br |
| .BI " const oid *" objid ", size_t " objidlen ");" |
| .br |
| .BI "int snprint_objid(char *" buf ", size_t " "len" "," |
| .br |
| .BI " const oid *" objid ", size_t " objidlen ");" |
| .PP |
| .BI "void print_description(const oid *" objid ", size_t " objidlen ", int " width ); |
| .br |
| .BI "void fprint_description(FILE *" fp "," |
| .br |
| .BI " const oid *" objid ", size_t " objidlen ", int " width ); |
| .br |
| .BI "int snprint_description(char *" buf ", size_t " "len" "," |
| .br |
| .BI " const oid *" objid ", size_t " objidlen ", int " width ); |
| .br |
| .PP |
| .SH DESCRIPTION |
| The functions dealing with MIB modules fall into four groups - those |
| dealing with initialisation and shutdown, with reading in and parsing |
| MIB files, with searching the MIB tree, and output routines. |
| .SS Initialisation and Shutdown |
| .PP |
| .B add_mibdir |
| is used to add the specified directory to the path of locations which are |
| searched for files containing MIB modules. |
| Note that this does not actually load the MIB modules located |
| in that directory, but is simply an initialisation step to make |
| them available to |
| .BR netsnmp_read_module . |
| This function returns a count of files found in the directory, or a \-1 |
| if there is an error. |
| It should be called \fIbefore\fP invoking \fBnetsnmp_init_mib\fP. |
| .PP |
| .\".B init_mib_internals |
| .\"sets up the internal structures, preparatory to reading in MIB |
| .\"modules. It should be called \fIafter\fP all calls to |
| .\".BR add_mibdir , |
| .\"and before any calls to |
| .\".BR netsnmp_read_module . |
| .\".PP |
| .B netsnmp_init_mib |
| configures the MIB directory search path (using |
| .B add_mibdir |
| ), sets up the internal MIB framework, |
| and then loads the appropriate MIB modules (using |
| .BR netsnmp_read_module " and " read_mib ")." |
| See the ENVIRONMENTAL VARIABLES section for details. |
| .br |
| It should be called before any other |
| routine that manipulates or accesses the MIB tree |
| (but after any additional |
| .B add_mibdir |
| calls). |
| .PP |
| .B shutdown_mib |
| will clear the information that was gathered by |
| .BR netsnmp_read_module ", " add_mibdir " and " add_module_replacement . |
| It is strongly recommended that one does not invoke |
| .BR shutdown_mib |
| while there are SNMP sessions being actively managed. |
| .SS Reading and Parsing MIBs |
| .PP |
| .B netsnmp_read_module |
| takes the name of a MIB module (which need not be the same as the |
| name of the file that contains the module), locates this within the |
| configured list of MIB directories, and loads the definitions from |
| the module into the active MIB tree. |
| It also loads any MIB modules listed in the IMPORTS clause of this module. |
| .PP |
| .B read_mib |
| is similar, but takes the name of the file containing the MIB module. |
| Note that this file need not be located within the MIB directory |
| search list (although any modules listed in the IMPORTS clause do). |
| .PP |
| .B read_all_mibs |
| will read in all the MIB modules found on the MIB directory search list. |
| .PP |
| In general the parser is silent about what strangenesses it sees in |
| the MIB files. To get warnings reported, call |
| .B snmp_set_mib_warnings |
| with a |
| .I level |
| of 1 (or 2 for even more warnings). |
| .PP |
| .B add_module_replacement |
| can be used to allow new MIB modules to obsolete older ones, without |
| needing to amend the IMPORTS clauses of other modules. It takes the |
| names of the old and new modules, together with an indication of which |
| portions of the old module are affected. |
| .RS |
| .TS |
| tab(+); |
| lb lb lb |
| l l l. |
| tag + len + load the new module when: |
| NULL + 0 + always (the old module is a strict subset of |
| + + the new) |
| name + 0 + for the given tag only |
| name + non-0 + for any identifier with this prefix |
| .TE |
| .RE |
| It can also be used to handle errors in the module identifiers used |
| in MIB IMPORTS clauses (such as referring to |
| .I RFC1213 |
| instead of |
| .IR RFC1213\-MIB ). |
| .SS Searching the MIB Tree |
| .PP |
| .B read_objid |
| takes a string containing a textual version of an object identifier |
| (in either numeric or descriptor form), and transforms this into the |
| corresponding list of sub-identifiers. This is returned in the |
| .I output |
| parameter, with the number of sub-identifiers returned via |
| .IR out_len . |
| When called, |
| .I out_len |
| must hold the maximum length of the |
| .I output |
| array. |
| If multiple object identifiers are being processed, then this |
| length should be reset before each call. |
| This function returns a value of 1 if it succeeds in parsing the string |
| and 0 otherwise. |
| .PP |
| .B snmp_parse_oid |
| is similar, but returns a pointer to the parsed OID buffer (or NULL). |
| .PP |
| .B get_module_node |
| takes a descriptor and the name of a module, and returns the corresponding |
| oid list, in the same way as |
| .B read_objid |
| above. |
| .br |
| If the module name is specified as "ANY", then this routine will |
| assume that the descriptor given is unique within the tree, and will |
| return the matching entry. If this assumption is invalid, then the |
| behaviour as to which variable is returned is implementation |
| dependent. |
| .br |
| .SS Output |
| .B print_mib |
| will print out a representation of the currently active MIB tree to |
| the specified FILE pointer. |
| .PP |
| .B print_objid |
| will take an object identifier (as returned by |
| .BR read_objid ", " snmp_parse_oid " or " get_module_node ")," |
| and prints the textual form of this OID to the standard output. |
| .PP |
| .B fprint_objid |
| does the same, but prints to the FILE pointer specified by the initial |
| parameter. |
| .PP |
| .B snprint_objid |
| prints the same information into the buffer pointed to by |
| .I buf |
| which is of length |
| .IR len . |
| It returns the number of characters printed, or \-1 if the |
| buffer was not large enough. In the latter case, |
| .I buf |
| will typically contain a truncated version of the information (but |
| this behaviour is not guaranteed). |
| .PP |
| .BR print_description , |
| .BR fprint_description , |
| and |
| .B snprint_description |
| take a similar object identifier |
| and print out a version of the MIB definition for that object, |
| together with the full OID. The |
| .I width |
| argument controls how the OID is layed out. |
| .PP |
| By default the parser does not save descriptions since they may be |
| huge. In order to be able to print them, it is necessary to invoke |
| .BI snmp_set_save_descriptions(1) before |
| calling |
| .B init_mib |
| (or similar). |
| .SH "ENVIRONMENT VARIABLES" |
| .PP |
| The main use of environmental variables with respect to these API calls |
| is to configure which MIB modules should be loaded, and where they are |
| located. |
| .TP 10 |
| MIBDIRS |
| A colon separated list of directories to search for MIB modules. |
| .br |
| Default: DATADIR/snmp/mibs |
| .br |
| Used by |
| .BR init_mib ", " netsnmp_read_module ", " read_all_mibs |
| and (implicitly) by |
| .BR read_mib . |
| .TP 10 |
| MIBS |
| A colon separated list of MIB modules to load. |
| .br |
| The default list of modules will depend on how the Net-SNMP software |
| was originally compiled, but is typically: |
| IP\-MIB:IF\-MIB:TCP\-MIB:UDP\-MIB:SNMPv2\-MIB:RFC1213\-MIB: UCD\-SNMP\-MIB:HOST\-RESOURCES\-MIB |
| .IP |
| If the value of the |
| .B MIBS |
| environmental variable starts with a '+' character, |
| then these MIB modules will be added to the default list. |
| Otherwise these modules (plus any that they IMPORT from) will be loaded |
| .I instead |
| of the default list. |
| .IP |
| If the |
| .B MIBS |
| environmental variable has the value |
| .BR ALL " then " read_all_mibs |
| will be called to load the full collection of all available MIB modules. |
| .IP |
| Used by |
| .B init_mib |
| only. |
| .TP 10 |
| MIBFILES |
| A colon separated list of files to load. |
| .br |
| Default: (none) |
| .br |
| Used by |
| .B init_mib |
| only. |
| .SH "SEE ALSO" |
| netsnmp_session_api(3), netsnmp_pdu_api(3), netsnmp_varbind_api(3) |