README
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. This directory holds the implementation of individual MIB groups.
  2. Currently, this contains the eight MIB-2 groups, plus a basic template
  3. for new MIB groups (examples/example.c and examples/example.h)
  4. Additionally, you may wish to check out the 'mib2c' perl script in the 
  5. SRCDIR/local directory that can convert a written mib into C template
  6. files for use with this package as mib modules.
  7. Each group consists of two files:
  8.   examples/example.h: interface information
  9. - declaration of the initialisation function 'init_example'
  10. (optional)
  11. - declaration of the function(s) for retrieving variable
  12. information 'var_example'
  13. - declaration of the function(s) for setting variable
  14. information (if appropriate)
  15. - declaration of the function(s) for parsing the snmpd.conf file
  16. (optional)
  17.         - a call to config_parse_dot_conf() to explain to the .conf
  18. parser which tokens we want to parse.
  19. (optional)
  20. - definitions of the MIB group 'magic numbers'
  21. declarations of the 'public' functions
  22. - a list of the variables in the group, including
  23. type information, mapping between magic numbers
  24. and OID sub-identifiers within the group,
  25. accessibility information, and the relevant
  26. function for retrieving this variable's value.
  27.                 They *must* be listed in the mib-descending order.
  28. - a call to 'config_load_mib', identifying the location of
  29. this MIB group within the general MIB structure.
  30. - a call to 'config_require' to identify any other files
  31. that are required by the implementation of this group.
  32. (optional)
  33.     (these last three are only visible within the 'glue' file 'snmp_vars.c'
  34. (if at all), but are declared here for ease of maintainance)
  35.   examples/example.c: implementation code
  36. (can be non-existant if only the .h file is needed)
  37. - a list of kernel information needed to report
  38. on this group
  39. - an initialisation function (optional)
  40.         - a routine to parse an snmpd.conf line.
  41.         - a routine to free resources from above and return to 
  42.                 default settings.
  43. - 'header' function(s) to map the OID requested
  44. to the next appropriate OID
  45. (and similar system-independent setup)
  46. - function(s) (possibly system-specific) to
  47. determine and return the value of the
  48. variable requested.
  49. - (optionally) functions used to set values
  50. - other functions used internally
  51. To implement a new MIB group, copy the two files 'example.c'
  52. and 'example.h' to appropriate new files ({MODULENAME}.c and {MODULENAME}.h),
  53. and edit them as follows:
  54. example.h:
  55. globally change "example" to the new module name
  56.     and update the initial comment.
  57. replace the EXAMPLE* defines with the list of
  58.     variables within this new group
  59. fill in the 'MODULENAME_variables' structure with these
  60.     new variables, updating the type, accessibility
  61.     and sub-identifier information as appropriate.
  62. replace 'variableN' with the maximum size of the
  63.     returned OID (omitting the group prefix).
  64.     For non-table values, this will probably be one
  65.     greater than the length of the sub-identifier.
  66.                 update or remove the 'config_parse_dot_conf' call if
  67.                     you need to handle lines in the snmpd.conf files.
  68. update the 'config_load_mib' call with the appropriate
  69.     location within the global MIB structure, and
  70.     its length (note that 'MIB' has length 6)
  71. provide a suitable 'config_require' call if this
  72.     code uses routines from any other files within
  73.     the 'mibgroup' directory (such as 'util_funcs.c')
  74. example.c:
  75. globally change "example" to the new module name
  76.     and update the initial comment.
  77. replace the 'MODULENAME_nl' name list with any necessary
  78.     kernel variables, and update the associated #define's
  79. replace the name length definition within the 'header'
  80.     function with the length of the requesting OID
  81.     (i.e. the sum of the lengths given in the subtree
  82.      definition, and the variable structure above).
  83. replace the basic 'switch' structure within the
  84.     'var_MODULENAME' function with the necessary code
  85.     to calculate the required information.
  86. (plus any other internal functions as needed).
  87.   It will then be necessary to (re-)run the configure script with the
  88. option
  89. --with-mib-modules="MODULENAME"
  90. (where MODULENAME matches the name of the .c/.h file pair exactly).
  91. Note that if anything in the config_* macros changes, or the init function
  92. is added or removed, then the configure script will need to be re-run.