.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)
