mib_api.3.def
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:11k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. .TH MIB_API 3 "06 Mar 2002" VVERSIONINFO "Net-SNMP"
  2. .UC 5
  3. .SH NAME
  4. init_mib, add_mibdir, init_mib_internals,
  5. add_module_replacement,
  6. read_module, read_mib, read_all_mibs,
  7. read_objid, read_module_node, get_module_node,
  8. snmp_set_mib_warnings, snmp_set_save_descriptions,
  9. shutdown_mib,
  10. print_mib,
  11. print_variable, fprint_variable, snprint_variable, sprint_realloc_variable,
  12. print_value, fprint_value, snprint_value, sprint_realloc_value,
  13. print_objid, fprint_objid, snprint_objid, sprint_realloc_objid,
  14. print_description, fprint_description - mib_api functions
  15. .SH SYNOPSIS
  16. .B #include <net-snmp/mib_api.h>
  17. .PP
  18. .B "void init_mib(void);
  19. .br
  20. .BI "int add_mibdir(char *" "dirname" );
  21. .br
  22. .BI "int add_module_replacement(char *" "old_module" ", char *" "new_module" ", char *" "tag" ", int " "len" );
  23. .br
  24. .B "void init_mib_internals(void);
  25. .br
  26. .BI "struct tree *read_module(char *" "name" );
  27. .br
  28. .BI "struct tree *read_mib(char *" "filename" );
  29. .br
  30. .B "struct tree *read_all_mibs(void);
  31. .PP
  32. .B "void shutdown_mib(void);
  33. .PP
  34. .BI "void print_mib(FILE *" "fp" );
  35. .PP
  36. .BI "int read_objid(char *" "input" ", oid *" "output" ", size_t *" "out_len" );
  37. .br
  38. .BI "int get_module_node(const char *" "name" ", const char *" "module" ", oid *" "objid" ", size_t *" "objidlen" );
  39. .PP
  40. .BI "void print_variable(const oid *" "objid" ", size_t " "objidlen" ", const netsnmp_variable_list *" "variable" );
  41. .br
  42. .BI "void fprint_variable(FILE *" fp ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
  43. .br
  44. .BI "int snprint_variable(char *" "buf" ", size_t " "len" ", const oid *" "objid" ", size_t " "objidlen" ", const netsnmp_variable_list *" "variable" );
  45. .br
  46. .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 );
  47. .PP
  48. .BI "void print_value(oid *objid, size_t objidlen, const netsnmp_variable_list *variable)
  49. .br
  50. .BI "void fprint_value(FILE *" fp ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
  51. .br
  52. .BI "int snprint_value(char *" buf ", size_t " "len" ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
  53. .br
  54. .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 );
  55. .PP
  56. .BI "void print_objid(const oid *" objid ", size_t " objidlen );
  57. .br
  58. .BI "void fprint_objid(FILE *" fp ", const oid *" objid ", size_t " objidlen );
  59. .br
  60. .BI "int snprint_objid(char *" buf ", size_t " "len" ", const oid *" objid ", size_t " objidlen );
  61. .br
  62. .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 );
  63. .PP
  64. .BI "void print_description(oid *" objid ", size_t " objidlen ", int " width );
  65. .br
  66. .BI "void fprint_description(FILE *" fp ", const oid *" objid ", size_t " objidlen ", int " width );
  67. .PP
  68. .BI "void snmp_set_mib_warnings(int " level );
  69. .br
  70. .BI "void snmp_set_save_descriptions(int " save ");"
  71. .PP
  72. .SH DESCRIPTION
  73. The functions dealing with MIB modules fall into four groups.  Those
  74. dealing with initialisation and shutdown, those that read in and
  75. parse MIB files, those that search the MIB tree, and various output
  76. routines.
  77. .SS Initialisation and Shutdown
  78. .B init_mib
  79. is a convenience function that handles all calls to
  80. .BR add_mibdir ", " read_module " and " read_mib
  81. for standard applications.  It should be called before any other
  82. routine that manipulates or accesses the MIB tree.  This routine sets
  83. up various internal structures, as well as reading in the default MIB
  84. modules, as detailed below.
  85. .PP
  86. .B add_mibdir
  87. is used to define the range of directory locations which are searched
  88. for files containing MIB modules (one module per file).  By default,
  89. this will be set to the directory
  90. .I DATADIR/mibs
  91. but this can be overridden by setting the environment variable
  92. .I MIBDIRS
  93. to a (colon-separated) list of directories to search.
  94. Note that this does not actually load the MIB modules located
  95. in that directory, but is an initialisation step to make them available.
  96. This function returns a count of files found in the directory, or a -1
  97. if there is an error.  
  98. .PP
  99. .B init_mib_internals
  100. sets up the internal structures, preparatory to reading in MIB
  101. modules.  It should be called after all calls to
  102. .BR add_mibdir ,
  103. and before and calls to
  104. .BR read_module .
  105. This is called automatically if
  106. .B init_mib
  107. is used.
  108. .PP
  109. .B shutdown_mib
  110. will clear the information that was gathered by 
  111. .BR read_module ", " add_mibdir " and " add_module_replacement .
  112. It is strongly recommended that one does not invoke
  113. .BR shutdown_mib
  114. while there are SNMP sessions being actively managed.
  115. .SS Reading and Parsing MIBs
  116. .B add_module_replacement
  117. can be used to allow new MIB modules to obsolete older ones, without
  118. needing to amend the imports clauses of other modules.  It takes the
  119. names of the old and new modules, together with an indication of which
  120. portions of the old module are affected.
  121. .RS
  122. .TS
  123. tab(+);
  124. lb lb lb
  125. l  l  l.
  126. tag + len + load the new module when:
  127. NULL + 0 + always (the old module is a strict subset of the new)
  128. name + 0 + for the given tag only
  129. name + non-0 + for any identifier with this prefix
  130. .TE
  131. .RE
  132. It can also be used to handle errors in the module identifiers used
  133. in MIB import clauses (such as referring to
  134. .I RFC1213
  135. instead of
  136. .IR RFC1213-MIB ).
  137. .PP
  138. .B read_module
  139. locates and parses the module specified, together with any modules
  140. that it imports from, and adds the contents of these modules to the
  141. active MIB tree.  Note that
  142. .B add_mibdir
  143. must first be called to add the directory containing the file with the
  144. module definition, if this is not in the standard path.
  145. .br
  146. By default, the following MIB modules will be loaded:  IP-MIB, IF-MIB,
  147. TCP-MIB, UDP-MIB, SNMPv2-MIB, RFC1213-MIB, UCD-SNMP-MIB.
  148. This can be overridden by setting the environment variable
  149. .I MIBS
  150. to a (colon-separated) list of modules to load.
  151. If this variable starts with a plus character, then the specified modules
  152. are added to the default list.  Otherwise only those modules listed are
  153. loaded (together with any others they import from).
  154. If
  155. .I MIBS
  156. is set to
  157. .IR ALL ,
  158. .B read_all_mibs
  159. is called to load all the MIB files found in all the specified
  160. .IR MIBDIRS .
  161. .PP
  162. .B read_mib
  163. parses the file specified, together with any modules that it imports
  164. from, and adds the contents to the active MIB tree.  Such a file can
  165. contain more then one module, though care must be taken that any
  166. imports occur earlier in the file, if they are not to be read from the
  167. installed modules.  Note that the file specified does not need to be
  168. in any of the directories initialised by
  169. .B add_mibdir
  170. (or the default setup), though any imported modules do.
  171. .br
  172. The environment variable
  173. .I MIBFILES
  174. can be set to a (colon-separated) list of files containing MIBs to load.
  175. .PP
  176. .B read_objid
  177. takes a string containing a textual version of an object identifier
  178. (in either numeric or descriptor form), and transforms this into the
  179. corresponding list of sub-identifiers.  This is returned in the
  180. .I output
  181. parameter, with the number of sub-identifiers returned via
  182. .IR out_len .
  183. When called, 
  184. .I out_len
  185. must hold the maximum length of the
  186. .I output
  187. array.
  188. This function returns a value of 1 if it succeeds in parsing the string
  189. and 0 otherwise.
  190. .SS Searching the MIB Tree
  191. .B get_module_node
  192. takes a descriptor and the name of a module, and returns the corresponding
  193. oid list, in the same way as
  194. .B read_objid
  195. above.
  196. .br
  197. If the module name is specified as "ANY", then this routine will
  198. assume that the descriptor given is unique within the tree, and will
  199. return the matching entry.  If this assumption is invalid, then the
  200. behaviour as to which variable is returned is implementation
  201. dependent.
  202. .SS Output
  203. .B print_mib
  204. will print out a representation of the currently active MIB tree to
  205. the specified FILE pointer.
  206. .PP
  207. .B print_variable
  208. will take an object identifier (as returned by
  209. .B read_objid
  210. or
  211. .BR get_module_node )
  212. and an instance of such a variable, and prints to the standard output
  213. the textual form of the object identifier together with the value
  214. of the variable.
  215. .B fprint_variable
  216. does the same, but prints to the FILE pointer specified by the initial
  217. parameter.
  218. .br
  219. .B snprint_variable
  220. prints the same information into the buffer pointed to by
  221. .I buf
  222. which is of length
  223. .IR len 
  224. and returns either the number of characters printed, or -1 if the
  225. buffer was not large enough.  In the latter case,
  226. .I buf
  227. will typically contained a truncated version of the information (but
  228. this behaviour is not guaranteed).  This function replaces the
  229. obsolete function
  230. .BR sprint_variable .
  231. .br
  232. .B sprint_realloc_variable
  233. is the low-level function used to implement all these functions.  It
  234. prints to a specified offset in a string buffer.  The
  235. .I buf
  236. parameter points to a pointer to that buffer;
  237. .I buf_len
  238. points to a variable holding the current size of that buffer, and
  239. .I out_len
  240. points to a variable holding the offset to which to print.
  241. .I out_len
  242. will be updated to hold the offset of the character following the last
  243. one added to the buffer.  If
  244. .I allow_realloc
  245. is 1, the buffer will be dynamically expanded, as necessary, to hold
  246. the output; the variables pointed to by
  247. .I buf
  248. and
  249. .I buf_len
  250. will be updated.  If
  251. .I allow_realloc
  252. is 0, the buffer will not be dynamically expanded.
  253. .B sprint_realloc_variable
  254. returns 0 if
  255. .I allow_realloc
  256. is 1 and an attempt to allocate memory to expand the buffer fails, or
  257. if
  258. .I allow_realloc
  259. is 0 and the output wouldn't fit in the buffer.  Otherwise it returns
  260. 1.  When using this function you should be careful to call
  261. .BR free (3)
  262. on
  263. .I *buf
  264. when you have finished with it.
  265. .PP
  266. .BR print_value ,
  267. .BR fprint_value ,
  268. .BR snprint_value
  269. and
  270. .B sprint_realloc_value
  271. do the same as the equivalent
  272. .B print_variable
  273. routines, but only displaying the value of the variable, without the
  274. corresponding object identifier.
  275. .PP
  276. .BR print_objid ,
  277. .BR fprint_objid ,
  278. .BR snprint_objid ,
  279. and
  280. .B sprint_realloc_objid
  281. take an object identifier (without an accompanying variable instance)
  282. and print out the textual representation.
  283. .PP
  284. .B print_description
  285. and
  286. .B fprint_description
  287. take an object identifier (as for
  288. .B print_objid
  289. above) and print out the associated DESCRIPTION clause. The 
  290. .I width
  291. argument gives the number of subidentifiers of an OID, e.g., .1.3.6
  292. is composed of 3 subidentifiers.
  293. .PP
  294. Note that there are no corresponding routines
  295. .B snprint_description
  296. or
  297. .BR sprint_realloc_description .
  298. By default the parser does not save descriptions since they may be
  299. huge.  In order to be able to print them, you must call
  300. .BR snmp_set_save_descriptions(1) .
  301. .PP
  302. In general the parser is silent about what strangenesses it sees in
  303. the MIB files. To get warnings reported, call
  304. .B snmp_set_mib_warnings
  305. with a
  306. .I level
  307. of 1 (or 2 for even more warnings).
  308. .SH "ENVIRONMENT VARIABLES"
  309. .TP 10
  310. MIBDIRS
  311. A colon separated list of directories to search for MIB modules.
  312. Default: DATADIR/snmp/mibs
  313. .TP 10
  314. MIBFILES
  315. A colon separated list of files to load.
  316. Default: (none)
  317. .TP 10
  318. MIBS
  319. A colon separated list of MIB modules to load.
  320. Default: IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB:UCD-SNMP-MIB.
  321. .SH "SEE ALSO"
  322. .BR snmp_api "(3)"