README
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
- This directory holds the implementation of individual MIB groups.
- Currently, this contains the eight MIB-2 groups, plus a basic template
- for new MIB groups (examples/example.c and examples/example.h)
- Additionally, you may wish to check out the 'mib2c' perl script in the
- SRCDIR/local directory that can convert a written mib into C template
- files for use with this package as mib modules.
- Each group consists of two files:
- examples/example.h: interface information
- - declaration of the initialisation function 'init_example'
- (optional)
- - declaration of the function(s) for retrieving variable
- information 'var_example'
- - declaration of the function(s) for setting variable
- information (if appropriate)
- - declaration of the function(s) for parsing the snmpd.conf file
- (optional)
- - a call to config_parse_dot_conf() to explain to the .conf
- parser which tokens we want to parse.
- (optional)
- - definitions of the MIB group 'magic numbers'
- declarations of the 'public' functions
- - a list of the variables in the group, including
- type information, mapping between magic numbers
- and OID sub-identifiers within the group,
- accessibility information, and the relevant
- function for retrieving this variable's value.
- They *must* be listed in the mib-descending order.
- - a call to 'config_load_mib', identifying the location of
- this MIB group within the general MIB structure.
- - a call to 'config_require' to identify any other files
- that are required by the implementation of this group.
- (optional)
- (these last three are only visible within the 'glue' file 'snmp_vars.c'
- (if at all), but are declared here for ease of maintainance)
- examples/example.c: implementation code
- (can be non-existant if only the .h file is needed)
- - a list of kernel information needed to report
- on this group
- - an initialisation function (optional)
- - a routine to parse an snmpd.conf line.
- - a routine to free resources from above and return to
- default settings.
- - 'header' function(s) to map the OID requested
- to the next appropriate OID
- (and similar system-independent setup)
- - function(s) (possibly system-specific) to
- determine and return the value of the
- variable requested.
- - (optionally) functions used to set values
- - other functions used internally
- To implement a new MIB group, copy the two files 'example.c'
- and 'example.h' to appropriate new files ({MODULENAME}.c and {MODULENAME}.h),
- and edit them as follows:
- example.h:
- globally change "example" to the new module name
- and update the initial comment.
- replace the EXAMPLE* defines with the list of
- variables within this new group
- fill in the 'MODULENAME_variables' structure with these
- new variables, updating the type, accessibility
- and sub-identifier information as appropriate.
- replace 'variableN' with the maximum size of the
- returned OID (omitting the group prefix).
- For non-table values, this will probably be one
- greater than the length of the sub-identifier.
- update or remove the 'config_parse_dot_conf' call if
- you need to handle lines in the snmpd.conf files.
- update the 'config_load_mib' call with the appropriate
- location within the global MIB structure, and
- its length (note that 'MIB' has length 6)
- provide a suitable 'config_require' call if this
- code uses routines from any other files within
- the 'mibgroup' directory (such as 'util_funcs.c')
- example.c:
- globally change "example" to the new module name
- and update the initial comment.
- replace the 'MODULENAME_nl' name list with any necessary
- kernel variables, and update the associated #define's
- replace the name length definition within the 'header'
- function with the length of the requesting OID
- (i.e. the sum of the lengths given in the subtree
- definition, and the variable structure above).
- replace the basic 'switch' structure within the
- 'var_MODULENAME' function with the necessary code
- to calculate the required information.
- (plus any other internal functions as needed).
- It will then be necessary to (re-)run the configure script with the
- option
- --with-mib-modules="MODULENAME"
- (where MODULENAME matches the name of the .c/.h file pair exactly).
- Note that if anything in the config_* macros changes, or the init function
- is added or removed, then the configure script will need to be re-run.