8 * mib.h - Definitions for the variables as defined in the MIB
10 * Update: 1998-07-17 <jhy@gsu.edu>
11 * Added prototypes for print_oid_report* functions.
13 /***********************************************************
14 Copyright 1988, 1989 by Carnegie Mellon University
18 Permission to use, copy, modify, and distribute this software and its
19 documentation for any purpose and without fee is hereby granted,
20 provided that the above copyright notice appear in all copies and that
21 both that copyright notice and this permission notice appear in
22 supporting documentation, and that the name of CMU not be
23 used in advertising or publicity pertaining to distribution of the
24 software without specific, written prior permission.
26 CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
27 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
28 CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
29 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
30 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
31 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
33 ******************************************************************/
35 #include <stdio.h> /* for FILE */
37 #define MIB 1, 3, 6, 1, 2, 1
39 #define MIB_IFTYPE_OTHER 1
40 #define MIB_IFTYPE_REGULAR1822 2
41 #define MIB_IFTYPE_HDH1822 3
42 #define MIB_IFTYPE_DDNX25 4
43 #define MIB_IFTYPE_RFC877X25 5
44 #define MIB_IFTYPE_ETHERNETCSMACD 6
45 #define MIB_IFTYPE_ISO88023CSMACD 7
46 #define MIB_IFTYPE_ISO88024TOKENBUS 8
47 #define MIB_IFTYPE_ISO88025TOKENRING 9
48 #define MIB_IFTYPE_ISO88026MAN 10
49 #define MIB_IFTYPE_STARLAN 11
50 #define MIB_IFTYPE_PROTEON10MBIT 12
51 #define MIB_IFTYPE_PROTEON80MBIT 13
52 #define MIB_IFTYPE_HYPERCHANNEL 14
53 #define MIB_IFTYPE_FDDI 15
54 #define MIB_IFTYPE_LAPB 16
55 #define MIB_IFTYPE_SDLC 17
56 #define MIB_IFTYPE_T1CARRIER 18
57 #define MIB_IFTYPE_CEPT 19
58 #define MIB_IFTYPE_BASICISDN 20
59 #define MIB_IFTYPE_PRIMARYISDN 21
60 #define MIB_IFTYPE_PROPPOINTTOPOINTSERIAL 22
62 #define MIB_IFSTATUS_UP 1
63 #define MIB_IFSTATUS_DOWN 2
64 #define MIB_IFSTATUS_TESTING 3
66 #define MIB_FORWARD_GATEWAY 1
67 #define MIB_FORWARD_HOST 2
69 #define MIB_IPROUTETYPE_OTHER 1
70 #define MIB_IPROUTETYPE_INVALID 2
71 #define MIB_IPROUTETYPE_DIRECT 3
72 #define MIB_IPROUTETYPE_REMOTE 4
74 #define MIB_IPROUTEPROTO_OTHER 1
75 #define MIB_IPROUTEPROTO_LOCAL 2
76 #define MIB_IPROUTEPROTO_NETMGMT 3
77 #define MIB_IPROUTEPROTO_ICMP 4
78 #define MIB_IPROUTEPROTO_EGP 5
79 #define MIB_IPROUTEPROTO_GGP 6
80 #define MIB_IPROUTEPROTO_HELLO 7
81 #define MIB_IPROUTEPROTO_RIP 8
82 #define MIB_IPROUTEPROTO_ISIS 9
83 #define MIB_IPROUTEPROTO_ESIS 10
84 #define MIB_IPROUTEPROTO_CISCOIGRP 11
85 #define MIB_IPROUTEPROTO_BBNSPFIGP 12
86 #define MIB_IPROUTEPROTO_OIGP 13
88 #define MIB_TCPRTOALG_OTHER 1
89 #define MIB_TCPRTOALG_CONSTANT 2
90 #define MIB_TCPRTOALG_RSRE 3
91 #define MIB_TCPRTOALG_VANJ 4
93 #define MIB_TCPCONNSTATE_CLOSED 1
94 #define MIB_TCPCONNSTATE_LISTEN 2
95 #define MIB_TCPCONNSTATE_SYNSENT 3
96 #define MIB_TCPCONNSTATE_SYNRECEIVED 4
97 #define MIB_TCPCONNSTATE_ESTABLISHED 5
98 #define MIB_TCPCONNSTATE_FINWAIT1 6
99 #define MIB_TCPCONNSTATE_FINWAIT2 7
100 #define MIB_TCPCONNSTATE_CLOSEWAIT 8
101 #define MIB_TCPCONNSTATE_LASTACK 9
102 #define MIB_TCPCONNSTATE_CLOSING 10
103 #define MIB_TCPCONNSTATE_TIMEWAIT 11
105 #define MIB_EGPNEIGHSTATE_IDLE 1
106 #define MIB_EGPNEIGHSTATE_AQUISITION 2
107 #define MIB_EGPNEIGHSTATE_DOWN 3
108 #define MIB_EGPNEIGHSTATE_UP 4
109 #define MIB_EGPNEIGHSTATE_CEASE 5
111 struct variable_list;
114 void print_mib(FILE * fp);
115 void print_ascii_dump(FILE *);
116 int read_objid(const char *, oid *, size_t *);
117 void register_mib_handlers(void);
118 void netsnmp_set_mib_directory(const char *dir);
119 char *netsnmp_get_mib_directory(void);
120 void netsnmp_fixup_mib_directory(void);
122 void shutdown_mib(void);
123 void print_description(oid *, size_t, int);
124 void fprint_description(FILE *, oid *, size_t, int);
125 int get_module_node(const char *, const char *, oid *,
127 int get_wild_node(const char *, oid *, size_t *);
128 int get_node(const char *, oid *, size_t *);
129 oid *snmp_parse_oid(const char *, oid *, size_t *);
130 struct tree *get_symbol(oid *, size_t, struct tree *, char *);
131 struct tree *get_tree(const oid *, size_t, struct tree *);
132 struct tree *get_tree_head(void);
133 void set_function(struct tree *);
135 int parse_one_oid_index(oid ** oidStart, size_t * oidLen,
136 netsnmp_variable_list * data,
138 int parse_oid_indexes(oid * oidIndex, size_t oidLen,
139 netsnmp_variable_list * data);
140 int build_oid_noalloc(oid * in, size_t in_len,
141 size_t * out_len, oid * prefix,
143 netsnmp_variable_list * indexes);
144 int build_oid(oid ** out, size_t * out_len, oid * prefix,
146 netsnmp_variable_list * indexes);
147 int build_oid_segment(netsnmp_variable_list * var);
150 void print_variable(const oid * objid, size_t objidlen,
151 netsnmp_variable_list * variable);
153 void fprint_variable(FILE * fp,
154 const oid * objid, size_t objidlen,
155 netsnmp_variable_list * variable);
157 int snprint_variable(char *buf, size_t buf_len,
158 const oid * objid, size_t objidlen,
159 netsnmp_variable_list * variable);
161 int sprint_realloc_variable(u_char ** buf,
167 netsnmp_variable_list *
170 struct tree *netsnmp_sprint_realloc_objid_tree(u_char ** buf,
178 void print_value(const oid * objid, size_t objidlen,
179 netsnmp_variable_list * variable);
181 void fprint_value(FILE * fp,
182 const oid * objid, size_t objidlen,
183 netsnmp_variable_list * variable);
185 int snprint_value(char *buf, size_t buf_len,
186 const oid * objid, size_t objidlen,
187 netsnmp_variable_list * variable);
189 int sprint_realloc_value(u_char ** buf, size_t * buf_len,
194 netsnmp_variable_list * variable);
197 void print_objid(const oid * objid, size_t objidlen);
199 void fprint_objid(FILE * fp,
200 const oid * objid, size_t objidlen);
202 int snprint_objid(char *buf, size_t buf_len,
203 const oid * objid, size_t objidlen);
205 int sprint_realloc_objid(u_char ** buf, size_t * buf_len,
212 int sprint_realloc_by_type(u_char ** buf, size_t * buf_len,
215 netsnmp_variable_list * var,
216 struct enum_list *enums,
220 int sprint_realloc_hexstring(u_char ** buf,
224 const u_char *, size_t);
226 int sprint_realloc_asciistring(u_char ** buf,
233 int sprint_realloc_octet_string(u_char ** buf,
237 netsnmp_variable_list *,
242 int sprint_realloc_opaque(u_char ** buf, size_t * buf_len,
245 netsnmp_variable_list *,
246 struct enum_list *, const char *,
249 int sprint_realloc_object_identifier(u_char ** buf,
253 netsnmp_variable_list
254 *, struct enum_list *,
258 int sprint_realloc_timeticks(u_char ** buf,
262 netsnmp_variable_list *,
264 const char *, const char *);
266 int sprint_realloc_hinted_integer(u_char ** buf,
269 int allow_realloc, long,
270 const char, const char *,
273 int sprint_realloc_integer(u_char ** buf, size_t * buf_len,
276 netsnmp_variable_list *,
278 const char *, const char *);
280 int sprint_realloc_uinteger(u_char ** buf,
284 netsnmp_variable_list *,
286 const char *, const char *);
288 int sprint_realloc_gauge(u_char ** buf, size_t * buf_len,
291 netsnmp_variable_list *,
292 struct enum_list *, const char *,
295 int sprint_realloc_counter(u_char ** buf, size_t * buf_len,
298 netsnmp_variable_list *,
300 const char *, const char *);
302 int sprint_realloc_networkaddress(u_char ** buf,
306 netsnmp_variable_list *,
311 int sprint_realloc_ipaddress(u_char ** buf,
315 netsnmp_variable_list *,
317 const char *, const char *);
319 int sprint_realloc_null(u_char ** buf, size_t * buf_len,
322 netsnmp_variable_list *,
323 struct enum_list *, const char *,
326 int sprint_realloc_bitstring(u_char ** buf,
330 netsnmp_variable_list *,
332 const char *, const char *);
334 int sprint_realloc_nsapaddress(u_char ** buf,
338 netsnmp_variable_list *,
340 const char *, const char *);
342 int sprint_realloc_counter64(u_char ** buf,
346 netsnmp_variable_list *,
348 const char *, const char *);
350 int sprint_realloc_badtype(u_char ** buf, size_t * buf_len,
353 netsnmp_variable_list *,
355 const char *, const char *);
357 #ifdef OPAQUE_SPECIAL_TYPES
358 int sprint_realloc_float(u_char ** buf, size_t * buf_len,
361 netsnmp_variable_list *,
362 struct enum_list *, const char *,
365 int sprint_realloc_double(u_char ** buf, size_t * buf_len,
368 netsnmp_variable_list *,
369 struct enum_list *, const char *,
374 int snprint_by_type(char *buf, size_t buf_len,
375 netsnmp_variable_list * var,
376 struct enum_list *enums,
377 const char *hint, const char *units);
379 int snprint_hexstring(char *buf, size_t buf_len,
380 const u_char *, size_t);
382 int snprint_asciistring(char *buf, size_t buf_len,
383 const u_char * cp, size_t len);
385 int snprint_octet_string(char *buf, size_t buf_len,
386 netsnmp_variable_list *,
387 struct enum_list *, const char *,
390 int snprint_opaque(char *buf, size_t buf_len,
391 netsnmp_variable_list *,
392 struct enum_list *, const char *,
395 int snprint_object_identifier(char *buf, size_t buf_len,
396 netsnmp_variable_list *,
398 const char *, const char *);
400 int snprint_timeticks(char *buf, size_t buf_len,
401 netsnmp_variable_list *,
402 struct enum_list *, const char *,
405 int snprint_hinted_integer(char *buf, size_t buf_len,
409 int snprint_integer(char *buf, size_t buf_len,
410 netsnmp_variable_list *,
411 struct enum_list *, const char *,
414 int snprint_uinteger(char *buf, size_t buf_len,
415 netsnmp_variable_list *,
416 struct enum_list *, const char *,
419 int snprint_gauge(char *buf, size_t buf_len,
420 netsnmp_variable_list *,
421 struct enum_list *, const char *,
424 int snprint_counter(char *buf, size_t buf_len,
425 netsnmp_variable_list *,
426 struct enum_list *, const char *,
429 int snprint_networkaddress(char *buf, size_t buf_len,
430 netsnmp_variable_list *,
432 const char *, const char *);
434 int snprint_ipaddress(char *buf, size_t buf_len,
435 netsnmp_variable_list *,
436 struct enum_list *, const char *,
439 int snprint_null(char *buf, size_t buf_len,
440 netsnmp_variable_list *,
441 struct enum_list *, const char *,
444 int snprint_bitstring(char *buf, size_t buf_len,
445 netsnmp_variable_list *,
446 struct enum_list *, const char *,
449 int snprint_nsapaddress(char *buf, size_t buf_len,
450 netsnmp_variable_list *,
451 struct enum_list *, const char *,
454 int snprint_counter64(char *buf, size_t buf_len,
455 netsnmp_variable_list *,
456 struct enum_list *, const char *,
459 int snprint_badtype(char *buf, size_t buf_len,
460 netsnmp_variable_list *,
461 struct enum_list *, const char *,
464 #ifdef OPAQUE_SPECIAL_TYPES
465 int snprint_float(char *buf, size_t buf_len,
466 netsnmp_variable_list *,
467 struct enum_list *, const char *,
470 int snprint_double(char *buf, size_t buf_len,
471 netsnmp_variable_list *,
472 struct enum_list *, const char *,
476 void print_oid_report(FILE *);
477 void print_oid_report_enable_labeledoid(void);
478 void print_oid_report_enable_oid(void);
479 void print_oid_report_enable_suffix(void);
480 void print_oid_report_enable_symbolic(void);
482 const char *parse_octet_hint(const char *hint, const char *value,
483 unsigned char **new_val, int *new_val_len);
485 void clear_tree_flags(register struct tree *tp);
487 char *snmp_out_toggle_options(char *);
488 void snmp_out_toggle_options_usage(const char *, FILE *);
489 char *snmp_in_toggle_options(char *);
490 void snmp_in_toggle_options_usage(const char *, FILE *);
491 u_char mib_to_asn_type(int mib_type);
494 int netsnmp_str2oid(const char *S, oid * O, int L);
497 #define NETSNMP_STRING_OUTPUT_GUESS 1
498 #define NETSNMP_STRING_OUTPUT_ASCII 2
499 #define NETSNMP_STRING_OUTPUT_HEX 3
501 #define NETSNMP_OID_OUTPUT_SUFFIX 1
502 #define NETSNMP_OID_OUTPUT_MODULE 2
503 #define NETSNMP_OID_OUTPUT_FULL 3
504 #define NETSNMP_OID_OUTPUT_NUMERIC 4
505 #define NETSNMP_OID_OUTPUT_UCD 5
506 #define NETSNMP_OID_OUTPUT_NONE 6