summaryrefslogtreecommitdiff
path: root/man/mib_api.3.def
diff options
context:
space:
mode:
Diffstat (limited to 'man/mib_api.3.def')
-rw-r--r--man/mib_api.3.def322
1 files changed, 322 insertions, 0 deletions
diff --git a/man/mib_api.3.def b/man/mib_api.3.def
new file mode 100644
index 0000000..2818273
--- /dev/null
+++ b/man/mib_api.3.def
@@ -0,0 +1,322 @@
+.TH MIB_API 3 "06 Mar 2002" VVERSIONINFO "Net-SNMP"
+.UC 5
+.SH NAME
+init_mib, add_mibdir, init_mib_internals,
+add_module_replacement,
+read_module, read_mib, read_all_mibs,
+read_objid, read_module_node, get_module_node,
+snmp_set_mib_warnings, snmp_set_save_descriptions,
+shutdown_mib,
+print_mib,
+print_variable, fprint_variable, snprint_variable, sprint_realloc_variable,
+print_value, fprint_value, snprint_value, sprint_realloc_value,
+print_objid, fprint_objid, snprint_objid, sprint_realloc_objid,
+print_description, fprint_description - mib_api functions
+.SH SYNOPSIS
+.B #include <net-snmp/mib_api.h>
+.PP
+.B "void init_mib(void);
+.br
+.BI "int add_mibdir(const char *" "dirname" );
+.br
+.BI "int add_module_replacement(const char *" "old_module" ", const char *" "new_module" ", const char *" "tag" ", int " "len" );
+.br
+.B "void init_mib_internals(void);
+.br
+.BI "struct tree *read_module(const char *" "name" );
+.br
+.BI "struct tree *read_mib(const char *" "filename" );
+.br
+.B "struct tree *read_all_mibs(void);
+.PP
+.B "void shutdown_mib(void);
+.PP
+.BI "void print_mib(FILE *" "fp" );
+.PP
+.BI "int read_objid(const char *" "input" ", oid *" "output" ", size_t *" "out_len" );
+.br
+.BI "int get_module_node(const char *" "name" ", const char *" "module" ", oid *" "objid" ", size_t *" "objidlen" );
+.PP
+.BI "void print_variable(const oid *" "objid" ", size_t " "objidlen" ", const netsnmp_variable_list *" "variable" );
+.br
+.BI "void fprint_variable(FILE *" fp ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
+.br
+.BI "int snprint_variable(char *" "buf" ", size_t " "len" ", const oid *" "objid" ", size_t " "objidlen" ", const netsnmp_variable_list *" "variable" );
+.br
+.BI "int sprint_realloc_variable(u_char **" buf ", size_t *" buf_len ", size_t *" out_len ", int " allow_realloc ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
+.PP
+.BI "void print_value(oid *objid, size_t objidlen, const netsnmp_variable_list *variable)
+.br
+.BI "void fprint_value(FILE *" fp ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
+.br
+.BI "int snprint_value(char *" buf ", size_t " "len" ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
+.br
+.BI "int sprint_realloc_value(u_char **" buf ", size_t *" buf_len ", size_t *" out_len ", int " allow_realloc ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
+.PP
+.BI "void print_objid(const oid *" objid ", size_t " objidlen );
+.br
+.BI "void fprint_objid(FILE *" fp ", const oid *" objid ", size_t " objidlen );
+.br
+.BI "int snprint_objid(char *" buf ", size_t " "len" ", const oid *" objid ", size_t " objidlen );
+.br
+.BI "int sprint_realloc_objid(u_char **" buf ", size_t *" buf_len ", size_t *" out_len ", int "allow_realloc ", const oid *" objid ", size_t " objidlen );
+.PP
+.BI "void print_description(oid *" objid ", size_t " objidlen ", int " width );
+.br
+.BI "void fprint_description(FILE *" fp ", const oid *" objid ", size_t " objidlen ", int " width );
+.PP
+.BI "void snmp_set_mib_warnings(int " level );
+.br
+.BI "void snmp_set_save_descriptions(int " save ");"
+.PP
+.SH DESCRIPTION
+The functions dealing with MIB modules fall into four groups. Those
+dealing with initialisation and shutdown, those that read in and
+parse MIB files, those that search the MIB tree, and various output
+routines.
+.SS Initialisation and Shutdown
+.B init_mib
+is a convenience function that handles all calls to
+.BR add_mibdir ", " read_module " and " read_mib
+for standard applications. It should be called before any other
+routine that manipulates or accesses the MIB tree. This routine sets
+up various internal structures, as well as reading in the default MIB
+modules, as detailed below.
+.PP
+.B add_mibdir
+is used to define the range of directory locations which are searched
+for files containing MIB modules (one module per file). By default,
+this will be set to the directory
+.I DATADIR/mibs
+but this can be overridden by setting the environment variable
+.I MIBDIRS
+to a (colon-separated) list of directories to search.
+Note that this does not actually load the MIB modules located
+in that directory, but is an initialisation step to make them available.
+This function returns a count of files found in the directory, or a -1
+if there is an error.
+.PP
+.B init_mib_internals
+sets up the internal structures, preparatory to reading in MIB
+modules. It should be called after all calls to
+.BR add_mibdir ,
+and before and calls to
+.BR read_module .
+This is called automatically if
+.B init_mib
+is used.
+.PP
+.B shutdown_mib
+will clear the information that was gathered by
+.BR 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
+.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 import clauses (such as referring to
+.I RFC1213
+instead of
+.IR RFC1213-MIB ).
+.PP
+.B read_module
+locates and parses the module specified, together with any modules
+that it imports from, and adds the contents of these modules to the
+active MIB tree. Note that
+.B add_mibdir
+must first be called to add the directory containing the file with the
+module definition, if this is not in the standard path.
+.br
+By default, the following MIB modules will be loaded: IP-MIB, IF-MIB,
+TCP-MIB, UDP-MIB, SNMPv2-MIB, RFC1213-MIB, UCD-SNMP-MIB.
+This can be overridden by setting the environment variable
+.I MIBS
+to a (colon-separated) list of modules to load.
+If this variable starts with a plus character, then the specified modules
+are added to the default list. Otherwise only those modules listed are
+loaded (together with any others they import from).
+If
+.I MIBS
+is set to
+.IR ALL ,
+.B read_all_mibs
+is called to load all the MIB files found in all the specified
+.IR MIBDIRS .
+.PP
+.B read_mib
+parses the file specified, together with any modules that it imports
+from, and adds the contents to the active MIB tree. Such a file can
+contain more then one module, though care must be taken that any
+imports occur earlier in the file, if they are not to be read from the
+installed modules. Note that the file specified does not need to be
+in any of the directories initialised by
+.B add_mibdir
+(or the default setup), though any imported modules do.
+.br
+The environment variable
+.I MIBFILES
+can be set to a (colon-separated) list of files containing MIBs to load.
+.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.
+.SS Searching the MIB Tree
+.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.
+.SS Output
+.B print_mib
+will print out a representation of the currently active MIB tree to
+the specified FILE pointer.
+.PP
+.B print_variable
+will take an object identifier (as returned by
+.B read_objid
+or
+.BR get_module_node )
+and an instance of such a variable, and prints to the standard output
+the textual form of the object identifier together with the value
+of the variable.
+.B fprint_variable
+does the same, but prints to the FILE pointer specified by the initial
+parameter.
+.br
+.B snprint_variable
+prints the same information into the buffer pointed to by
+.I buf
+which is of length
+.IR len
+and returns either the number of characters printed, or -1 if the
+buffer was not large enough. In the latter case,
+.I buf
+will typically contained a truncated version of the information (but
+this behaviour is not guaranteed). This function replaces the
+obsolete function
+.BR sprint_variable .
+.br
+.B sprint_realloc_variable
+is the low-level function used to implement all these functions. It
+prints to a specified offset in a string buffer. The
+.I buf
+parameter points to a pointer to that buffer;
+.I buf_len
+points to a variable holding the current size of that buffer, and
+.I out_len
+points to a variable holding the offset to which to print.
+.I out_len
+will be updated to hold the offset of the character following the last
+one added to the buffer. If
+.I allow_realloc
+is 1, the buffer will be dynamically expanded, as necessary, to hold
+the output; the variables pointed to by
+.I buf
+and
+.I buf_len
+will be updated. If
+.I allow_realloc
+is 0, the buffer will not be dynamically expanded.
+.B sprint_realloc_variable
+returns 0 if
+.I allow_realloc
+is 1 and an attempt to allocate memory to expand the buffer fails, or
+if
+.I allow_realloc
+is 0 and the output wouldn't fit in the buffer. Otherwise it returns
+1. When using this function you should be careful to call
+.BR free (3)
+on
+.I *buf
+when you have finished with it.
+.PP
+.BR print_value ,
+.BR fprint_value ,
+.BR snprint_value
+and
+.B sprint_realloc_value
+do the same as the equivalent
+.B print_variable
+routines, but only displaying the value of the variable, without the
+corresponding object identifier.
+.PP
+.BR print_objid ,
+.BR fprint_objid ,
+.BR snprint_objid ,
+and
+.B sprint_realloc_objid
+take an object identifier (without an accompanying variable instance)
+and print out the textual representation.
+.PP
+.BI print_description ,
+.BI fprint_description ,
+.BI snprint_description ,
+and
+.B sprint_realloc_description
+take an object identifier (as for
+.B print_objid
+above) 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, you must call
+.BR snmp_set_save_descriptions(1) .
+.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).
+.SH "ENVIRONMENT VARIABLES"
+.TP 10
+MIBDIRS
+A colon separated list of directories to search for MIB modules.
+Default: DATADIR/snmp/mibs
+.TP 10
+MIBFILES
+A colon separated list of files to load.
+Default: (none)
+.TP 10
+MIBS
+A colon separated list of MIB modules to load.
+Default: IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB:UCD-SNMP-MIB.
+.SH "SEE ALSO"
+.BR snmp_api "(3)"