00001 #ifndef MIB_H
00002 #define MIB_H
00003
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include <stdio.h>
00036
00037 #define MIB 1, 3, 6, 1, 2, 1
00038
00039 #define MIB_IFTYPE_OTHER 1
00040 #define MIB_IFTYPE_REGULAR1822 2
00041 #define MIB_IFTYPE_HDH1822 3
00042 #define MIB_IFTYPE_DDNX25 4
00043 #define MIB_IFTYPE_RFC877X25 5
00044 #define MIB_IFTYPE_ETHERNETCSMACD 6
00045 #define MIB_IFTYPE_ISO88023CSMACD 7
00046 #define MIB_IFTYPE_ISO88024TOKENBUS 8
00047 #define MIB_IFTYPE_ISO88025TOKENRING 9
00048 #define MIB_IFTYPE_ISO88026MAN 10
00049 #define MIB_IFTYPE_STARLAN 11
00050 #define MIB_IFTYPE_PROTEON10MBIT 12
00051 #define MIB_IFTYPE_PROTEON80MBIT 13
00052 #define MIB_IFTYPE_HYPERCHANNEL 14
00053 #define MIB_IFTYPE_FDDI 15
00054 #define MIB_IFTYPE_LAPB 16
00055 #define MIB_IFTYPE_SDLC 17
00056 #define MIB_IFTYPE_T1CARRIER 18
00057 #define MIB_IFTYPE_CEPT 19
00058 #define MIB_IFTYPE_BASICISDN 20
00059 #define MIB_IFTYPE_PRIMARYISDN 21
00060 #define MIB_IFTYPE_PROPPOINTTOPOINTSERIAL 22
00061
00062 #define MIB_IFSTATUS_UP 1
00063 #define MIB_IFSTATUS_DOWN 2
00064 #define MIB_IFSTATUS_TESTING 3
00065
00066 #define MIB_FORWARD_GATEWAY 1
00067 #define MIB_FORWARD_HOST 2
00068
00069 #define MIB_IPROUTETYPE_OTHER 1
00070 #define MIB_IPROUTETYPE_INVALID 2
00071 #define MIB_IPROUTETYPE_DIRECT 3
00072 #define MIB_IPROUTETYPE_REMOTE 4
00073
00074 #define MIB_IPROUTEPROTO_OTHER 1
00075 #define MIB_IPROUTEPROTO_LOCAL 2
00076 #define MIB_IPROUTEPROTO_NETMGMT 3
00077 #define MIB_IPROUTEPROTO_ICMP 4
00078 #define MIB_IPROUTEPROTO_EGP 5
00079 #define MIB_IPROUTEPROTO_GGP 6
00080 #define MIB_IPROUTEPROTO_HELLO 7
00081 #define MIB_IPROUTEPROTO_RIP 8
00082 #define MIB_IPROUTEPROTO_ISIS 9
00083 #define MIB_IPROUTEPROTO_ESIS 10
00084 #define MIB_IPROUTEPROTO_CISCOIGRP 11
00085 #define MIB_IPROUTEPROTO_BBNSPFIGP 12
00086 #define MIB_IPROUTEPROTO_OIGP 13
00087
00088 #define MIB_TCPRTOALG_OTHER 1
00089 #define MIB_TCPRTOALG_CONSTANT 2
00090 #define MIB_TCPRTOALG_RSRE 3
00091 #define MIB_TCPRTOALG_VANJ 4
00092
00093 #define MIB_TCPCONNSTATE_CLOSED 1
00094 #define MIB_TCPCONNSTATE_LISTEN 2
00095 #define MIB_TCPCONNSTATE_SYNSENT 3
00096 #define MIB_TCPCONNSTATE_SYNRECEIVED 4
00097 #define MIB_TCPCONNSTATE_ESTABLISHED 5
00098 #define MIB_TCPCONNSTATE_FINWAIT1 6
00099 #define MIB_TCPCONNSTATE_FINWAIT2 7
00100 #define MIB_TCPCONNSTATE_CLOSEWAIT 8
00101 #define MIB_TCPCONNSTATE_LASTACK 9
00102 #define MIB_TCPCONNSTATE_CLOSING 10
00103 #define MIB_TCPCONNSTATE_TIMEWAIT 11
00104
00105 #define MIB_EGPNEIGHSTATE_IDLE 1
00106 #define MIB_EGPNEIGHSTATE_AQUISITION 2
00107 #define MIB_EGPNEIGHSTATE_DOWN 3
00108 #define MIB_EGPNEIGHSTATE_UP 4
00109 #define MIB_EGPNEIGHSTATE_CEASE 5
00110
00111 struct variable_list;
00112 struct enum_list;
00113
00114 void print_mib(FILE * fp);
00115 void print_ascii_dump(FILE *);
00116 int read_objid(const char *, oid *, size_t *);
00117 void register_mib_handlers(void);
00118 void netsnmp_set_mib_directory(const char *dir);
00119 char *netsnmp_get_mib_directory(void);
00120 void netsnmp_fixup_mib_directory(void);
00121 void init_mib(void);
00122 void shutdown_mib(void);
00123 void print_description(oid *, size_t, int);
00124 void fprint_description(FILE *, oid *, size_t, int);
00125 int snprint_description(char *, size_t, oid *, size_t, int);
00126 int sprint_realloc_description(u_char **, size_t *, size_t *,
00127 int, oid *, size_t, int);
00128 int get_module_node(const char *, const char *, oid *,
00129 size_t *);
00130 int get_wild_node(const char *, oid *, size_t *);
00131 int get_node(const char *, oid *, size_t *);
00132 oid *snmp_parse_oid(const char *, oid *, size_t *);
00133 struct tree *get_tree(const oid *, size_t, struct tree *);
00134 struct tree *get_tree_head(void);
00135 void set_function(struct tree *);
00136
00137 int parse_one_oid_index(oid ** oidStart, size_t * oidLen,
00138 netsnmp_variable_list * data,
00139 int complete);
00140 int parse_oid_indexes(oid * oidIndex, size_t oidLen,
00141 netsnmp_variable_list * data);
00142 int build_oid_noalloc(oid * in, size_t in_len,
00143 size_t * out_len, oid * prefix,
00144 size_t prefix_len,
00145 netsnmp_variable_list * indexes);
00146 int build_oid(oid ** out, size_t * out_len, oid * prefix,
00147 size_t prefix_len,
00148 netsnmp_variable_list * indexes);
00149 int build_oid_segment(netsnmp_variable_list * var);
00150
00151
00152 void print_variable(const oid * objid, size_t objidlen,
00153 const netsnmp_variable_list * variable);
00154
00155 void fprint_variable(FILE * fp,
00156 const oid * objid, size_t objidlen,
00157 const netsnmp_variable_list * variable);
00158
00159 int snprint_variable(char *buf, size_t buf_len,
00160 const oid * objid, size_t objidlen,
00161 const netsnmp_variable_list * variable);
00162
00163 int sprint_realloc_variable(u_char ** buf,
00164 size_t * buf_len,
00165 size_t * out_len,
00166 int allow_realloc,
00167 const oid * objid,
00168 size_t objidlen,
00169 const netsnmp_variable_list *
00170 variable);
00171
00172 #ifndef DISABLE_MIB_LOADING
00173 struct tree *
00174 #else
00175 void
00176 #endif
00177 netsnmp_sprint_realloc_objid_tree(u_char ** buf,
00178 size_t * buf_len,
00179 size_t * out_len,
00180 int allow_realloc,
00181 int *buf_overflow,
00182 const oid * objid,
00183 size_t objidlen);
00184
00185 void
00186 netsnmp_sprint_realloc_objid(u_char ** buf,
00187 size_t * buf_len,
00188 size_t * out_len,
00189 int allow_realloc,
00190 int *buf_overflow,
00191 const oid * objid,
00192 size_t objidlen);
00193
00194 void print_value(const oid * objid, size_t objidlen,
00195 const netsnmp_variable_list * variable);
00196
00197 void fprint_value(FILE * fp,
00198 const oid * objid, size_t objidlen,
00199 const netsnmp_variable_list * variable);
00200
00201 int snprint_value(char *buf, size_t buf_len,
00202 const oid * objid, size_t objidlen,
00203 const netsnmp_variable_list * variable);
00204
00205 int sprint_realloc_value(u_char ** buf, size_t * buf_len,
00206 size_t * out_len,
00207 int allow_realloc,
00208 const oid * objid,
00209 size_t objidlen,
00210 const netsnmp_variable_list * variable);
00211
00212
00213 void print_objid(const oid * objid, size_t objidlen);
00214
00215 void fprint_objid(FILE * fp,
00216 const oid * objid, size_t objidlen);
00217
00218 int snprint_objid(char *buf, size_t buf_len,
00219 const oid * objid, size_t objidlen);
00220
00221 int sprint_realloc_objid(u_char ** buf, size_t * buf_len,
00222 size_t * out_len,
00223 int allow_realloc,
00224 const oid * objid,
00225 size_t objidlen);
00226
00227
00228 int sprint_realloc_by_type(u_char ** buf, size_t * buf_len,
00229 size_t * out_len,
00230 int allow_realloc,
00231 const netsnmp_variable_list * var,
00232 const struct enum_list *enums,
00233 const char *hint,
00234 const char *units);
00235
00236 int sprint_realloc_hexstring(u_char ** buf,
00237 size_t * buf_len,
00238 size_t * out_len,
00239 int allow_realloc,
00240 const u_char *, size_t);
00241
00242 int sprint_realloc_asciistring(u_char ** buf,
00243 size_t * buf_len,
00244 size_t * out_len,
00245 int allow_realloc,
00246 const u_char * cp,
00247 size_t len);
00248
00249 int sprint_realloc_octet_string(u_char ** buf,
00250 size_t * buf_len,
00251 size_t * out_len,
00252 int allow_realloc,
00253 const netsnmp_variable_list *,
00254 const struct enum_list *,
00255 const char *,
00256 const char *);
00257
00258 int sprint_realloc_opaque(u_char ** buf, size_t * buf_len,
00259 size_t * out_len,
00260 int allow_realloc,
00261 const netsnmp_variable_list *,
00262 const struct enum_list *, const char *,
00263 const char *);
00264
00265 int sprint_realloc_object_identifier(u_char ** buf,
00266 size_t * buf_len,
00267 size_t * out_len,
00268 int allow_realloc,
00269 const netsnmp_variable_list
00270 *, const struct enum_list *,
00271 const char *,
00272 const char *);
00273
00274 int sprint_realloc_timeticks(u_char ** buf,
00275 size_t * buf_len,
00276 size_t * out_len,
00277 int allow_realloc,
00278 const netsnmp_variable_list *,
00279 const struct enum_list *,
00280 const char *, const char *);
00281
00282 int sprint_realloc_hinted_integer(u_char ** buf,
00283 size_t * buf_len,
00284 size_t * out_len,
00285 int allow_realloc, long,
00286 const char, const char *,
00287 const char *);
00288
00289 int sprint_realloc_integer(u_char ** buf, size_t * buf_len,
00290 size_t * out_len,
00291 int allow_realloc,
00292 const netsnmp_variable_list *,
00293 const struct enum_list *,
00294 const char *, const char *);
00295
00296 int sprint_realloc_uinteger(u_char ** buf,
00297 size_t * buf_len,
00298 size_t * out_len,
00299 int allow_realloc,
00300 const netsnmp_variable_list *,
00301 const struct enum_list *,
00302 const char *, const char *);
00303
00304 int sprint_realloc_gauge(u_char ** buf, size_t * buf_len,
00305 size_t * out_len,
00306 int allow_realloc,
00307 const netsnmp_variable_list *,
00308 const struct enum_list *, const char *,
00309 const char *);
00310
00311 int sprint_realloc_counter(u_char ** buf, size_t * buf_len,
00312 size_t * out_len,
00313 int allow_realloc,
00314 const netsnmp_variable_list *,
00315 const struct enum_list *,
00316 const char *, const char *);
00317
00318 int sprint_realloc_networkaddress(u_char ** buf,
00319 size_t * buf_len,
00320 size_t * out_len,
00321 int allow_realloc,
00322 const netsnmp_variable_list *,
00323 const struct enum_list *,
00324 const char *,
00325 const char *);
00326
00327 int sprint_realloc_ipaddress(u_char ** buf,
00328 size_t * buf_len,
00329 size_t * out_len,
00330 int allow_realloc,
00331 const netsnmp_variable_list *,
00332 const struct enum_list *,
00333 const char *, const char *);
00334
00335 int sprint_realloc_null(u_char ** buf, size_t * buf_len,
00336 size_t * out_len,
00337 int allow_realloc,
00338 const netsnmp_variable_list *,
00339 const struct enum_list *, const char *,
00340 const char *);
00341
00342 int sprint_realloc_bitstring(u_char ** buf,
00343 size_t * buf_len,
00344 size_t * out_len,
00345 int allow_realloc,
00346 const netsnmp_variable_list *,
00347 const struct enum_list *,
00348 const char *, const char *);
00349
00350 int sprint_realloc_nsapaddress(u_char ** buf,
00351 size_t * buf_len,
00352 size_t * out_len,
00353 int allow_realloc,
00354 const netsnmp_variable_list *,
00355 const struct enum_list *,
00356 const char *, const char *);
00357
00358 int sprint_realloc_counter64(u_char ** buf,
00359 size_t * buf_len,
00360 size_t * out_len,
00361 int allow_realloc,
00362 const netsnmp_variable_list *,
00363 const struct enum_list *,
00364 const char *, const char *);
00365
00366 int sprint_realloc_badtype(u_char ** buf, size_t * buf_len,
00367 size_t * out_len,
00368 int allow_realloc,
00369 const netsnmp_variable_list *,
00370 const struct enum_list *,
00371 const char *, const char *);
00372
00373 #ifdef OPAQUE_SPECIAL_TYPES
00374 int sprint_realloc_float(u_char ** buf, size_t * buf_len,
00375 size_t * out_len,
00376 int allow_realloc,
00377 const netsnmp_variable_list *,
00378 const struct enum_list *, const char *,
00379 const char *);
00380
00381 int sprint_realloc_double(u_char ** buf, size_t * buf_len,
00382 size_t * out_len,
00383 int allow_realloc,
00384 const netsnmp_variable_list *,
00385 const struct enum_list *, const char *,
00386 const char *);
00387 #endif
00388
00389
00390 int snprint_by_type(char *buf, size_t buf_len,
00391 netsnmp_variable_list * var,
00392 const struct enum_list *enums,
00393 const char *hint, const char *units);
00394
00395 int snprint_hexstring(char *buf, size_t buf_len,
00396 const u_char *, size_t);
00397
00398 int snprint_asciistring(char *buf, size_t buf_len,
00399 const u_char * cp, size_t len);
00400
00401 int snprint_octet_string(char *buf, size_t buf_len,
00402 const netsnmp_variable_list *,
00403 const struct enum_list *, const char *,
00404 const char *);
00405
00406 int snprint_opaque(char *buf, size_t buf_len,
00407 const netsnmp_variable_list *,
00408 const struct enum_list *, const char *,
00409 const char *);
00410
00411 int snprint_object_identifier(char *buf, size_t buf_len,
00412 const netsnmp_variable_list *,
00413 const struct enum_list *,
00414 const char *, const char *);
00415
00416 int snprint_timeticks(char *buf, size_t buf_len,
00417 const netsnmp_variable_list *,
00418 const struct enum_list *, const char *,
00419 const char *);
00420
00421 int snprint_hinted_integer(char *buf, size_t buf_len,
00422 long, const char *,
00423 const char *);
00424
00425 int snprint_integer(char *buf, size_t buf_len,
00426 const netsnmp_variable_list *,
00427 const struct enum_list *, const char *,
00428 const char *);
00429
00430 int snprint_uinteger(char *buf, size_t buf_len,
00431 const netsnmp_variable_list *,
00432 const struct enum_list *, const char *,
00433 const char *);
00434
00435 int snprint_gauge(char *buf, size_t buf_len,
00436 const netsnmp_variable_list *,
00437 const struct enum_list *, const char *,
00438 const char *);
00439
00440 int snprint_counter(char *buf, size_t buf_len,
00441 const netsnmp_variable_list *,
00442 const struct enum_list *, const char *,
00443 const char *);
00444
00445 int snprint_networkaddress(char *buf, size_t buf_len,
00446 const netsnmp_variable_list *,
00447 const struct enum_list *,
00448 const char *, const char *);
00449
00450 int snprint_ipaddress(char *buf, size_t buf_len,
00451 const netsnmp_variable_list *,
00452 const struct enum_list *, const char *,
00453 const char *);
00454
00455 int snprint_null(char *buf, size_t buf_len,
00456 const netsnmp_variable_list *,
00457 const struct enum_list *, const char *,
00458 const char *);
00459
00460 int snprint_bitstring(char *buf, size_t buf_len,
00461 const netsnmp_variable_list *,
00462 const struct enum_list *, const char *,
00463 const char *);
00464
00465 int snprint_nsapaddress(char *buf, size_t buf_len,
00466 const netsnmp_variable_list *,
00467 const struct enum_list *, const char *,
00468 const char *);
00469
00470 int snprint_counter64(char *buf, size_t buf_len,
00471 const netsnmp_variable_list *,
00472 const struct enum_list *, const char *,
00473 const char *);
00474
00475 int snprint_badtype(char *buf, size_t buf_len,
00476 const netsnmp_variable_list *,
00477 const struct enum_list *, const char *,
00478 const char *);
00479
00480 #ifdef OPAQUE_SPECIAL_TYPES
00481 int snprint_float(char *buf, size_t buf_len,
00482 const netsnmp_variable_list *,
00483 const struct enum_list *, const char *,
00484 const char *);
00485
00486 int snprint_double(char *buf, size_t buf_len,
00487 const netsnmp_variable_list *,
00488 const struct enum_list *, const char *,
00489 const char *);
00490 #endif
00491
00492 void print_oid_report(FILE *);
00493 void print_oid_report_enable_labeledoid(void);
00494 void print_oid_report_enable_oid(void);
00495 void print_oid_report_enable_suffix(void);
00496 void print_oid_report_enable_symbolic(void);
00497 void print_oid_report_enable_mibchildoid(void);
00498
00499 const char *parse_octet_hint(const char *hint, const char *value,
00500 unsigned char **new_val, int *new_val_len);
00501
00502 void clear_tree_flags(register struct tree *tp);
00503
00504 char *snmp_out_toggle_options(char *);
00505 void snmp_out_toggle_options_usage(const char *, FILE *);
00506 char *snmp_in_toggle_options(char *);
00507 char *snmp_in_options(char *, int, char * const *);
00508 void snmp_in_toggle_options_usage(const char *, FILE *);
00509 u_char mib_to_asn_type(int mib_type);
00510
00511
00512 int netsnmp_str2oid(const char *S, oid * O, int L);
00513
00514
00515 #define NETSNMP_STRING_OUTPUT_GUESS 1
00516 #define NETSNMP_STRING_OUTPUT_ASCII 2
00517 #define NETSNMP_STRING_OUTPUT_HEX 3
00518
00519 #define NETSNMP_OID_OUTPUT_SUFFIX 1
00520 #define NETSNMP_OID_OUTPUT_MODULE 2
00521 #define NETSNMP_OID_OUTPUT_FULL 3
00522 #define NETSNMP_OID_OUTPUT_NUMERIC 4
00523 #define NETSNMP_OID_OUTPUT_UCD 5
00524 #define NETSNMP_OID_OUTPUT_NONE 6
00525 #ifdef __cplusplus
00526 }
00527 #endif
00528 #endif