net-snmp  5.4.1
mib.h
00001 #ifndef MIB_H
00002 #define MIB_H
00003 
00004 #ifdef __cplusplus
00005 extern          "C" {
00006 #endif
00007     /*
00008      * mib.h - Definitions for the variables as defined in the MIB
00009      *
00010      * Update: 1998-07-17 <jhy@gsu.edu>
00011      * Added prototypes for print_oid_report* functions.
00012      */
00013 /***********************************************************
00014         Copyright 1988, 1989 by Carnegie Mellon University
00015 
00016                       All Rights Reserved
00017 
00018 Permission to use, copy, modify, and distribute this software and its 
00019 documentation for any purpose and without fee is hereby granted, 
00020 provided that the above copyright notice appear in all copies and that
00021 both that copyright notice and this permission notice appear in 
00022 supporting documentation, and that the name of CMU not be
00023 used in advertising or publicity pertaining to distribution of the
00024 software without specific, written prior permission.  
00025 
00026 CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
00027 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
00028 CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
00029 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
00030 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
00031 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
00032 SOFTWARE.
00033 ******************************************************************/
00034 
00035 #include <stdio.h>              /* for FILE */
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            netsnmp_init_mib(void);
00122 #ifndef NETSNMP_CLEAN_NAMESPACE
00123     void            init_mib(void);
00124 #endif
00125     void            shutdown_mib(void);
00126     void            print_description(oid *, size_t, int);
00127     void            fprint_description(FILE *, oid *, size_t, int);
00128     int             snprint_description(char *, size_t, oid *, size_t, int);
00129     int             sprint_realloc_description(u_char **, size_t *, size_t *,
00130                                                int, oid *, size_t, int);
00131     int             get_module_node(const char *, const char *, oid *,
00132                                     size_t *);
00133     int             get_wild_node(const char *, oid *, size_t *);
00134     int             get_node(const char *, oid *, size_t *);
00135     oid            *snmp_parse_oid(const char *, oid *, size_t *);
00136     struct tree    *get_tree(const oid *, size_t, struct tree *);
00137     struct tree    *get_tree_head(void);
00138     void            set_function(struct tree *);
00139 
00140     int             parse_one_oid_index(oid ** oidStart, size_t * oidLen,
00141                                         netsnmp_variable_list * data,
00142                                         int complete);
00143     int             parse_oid_indexes(oid * oidIndex, size_t oidLen,
00144                                       netsnmp_variable_list * data);
00145     int             build_oid_noalloc(oid * in, size_t in_len,
00146                                       size_t * out_len, oid * prefix,
00147                                       size_t prefix_len,
00148                                       netsnmp_variable_list * indexes);
00149     int             build_oid(oid ** out, size_t * out_len, oid * prefix,
00150                               size_t prefix_len,
00151                               netsnmp_variable_list * indexes);
00152     int             build_oid_segment(netsnmp_variable_list * var);
00153 
00154 
00155     void            print_variable(const oid * objid, size_t objidlen,
00156                                    const netsnmp_variable_list * variable);
00157 
00158     void            fprint_variable(FILE * fp,
00159                                     const oid * objid, size_t objidlen,
00160                                     const netsnmp_variable_list * variable);
00161 
00162     int             snprint_variable(char *buf, size_t buf_len,
00163                                      const oid * objid, size_t objidlen,
00164                                      const netsnmp_variable_list * variable);
00165 
00166     int             sprint_realloc_variable(u_char ** buf,
00167                                             size_t * buf_len,
00168                                             size_t * out_len,
00169                                             int allow_realloc,
00170                                             const oid * objid,
00171                                             size_t objidlen,
00172                                             const netsnmp_variable_list *
00173                                             variable);
00174 
00175 #ifndef NETSNMP_DISABLE_MIB_LOADING
00176     struct tree    *
00177 #else
00178     void
00179 #endif
00180                     netsnmp_sprint_realloc_objid_tree(u_char ** buf,
00181                                                       size_t * buf_len,
00182                                                       size_t * out_len,
00183                                                       int allow_realloc,
00184                                                       int *buf_overflow,
00185                                                       const oid * objid,
00186                                                       size_t objidlen);
00187 
00188     void
00189                     netsnmp_sprint_realloc_objid(u_char ** buf,
00190                                                  size_t * buf_len,
00191                                                  size_t * out_len,
00192                                                  int allow_realloc,
00193                                                  int *buf_overflow,
00194                                                  const oid * objid,
00195                                                  size_t objidlen);
00196 
00197     void            print_value(const oid * objid, size_t objidlen,
00198                                 const netsnmp_variable_list * variable);
00199 
00200     void            fprint_value(FILE * fp,
00201                                  const oid * objid, size_t objidlen,
00202                                  const netsnmp_variable_list * variable);
00203 
00204     int             snprint_value(char *buf, size_t buf_len,
00205                                   const oid * objid, size_t objidlen,
00206                                   const netsnmp_variable_list * variable);
00207 
00208     int             sprint_realloc_value(u_char ** buf, size_t * buf_len,
00209                                          size_t * out_len,
00210                                          int allow_realloc,
00211                                          const oid * objid,
00212                                          size_t objidlen,
00213                                          const netsnmp_variable_list * variable);
00214 
00215 
00216     void            print_objid(const oid * objid, size_t objidlen);
00217 
00218     void            fprint_objid(FILE * fp,
00219                                  const oid * objid, size_t objidlen);
00220 
00221     int             snprint_objid(char *buf, size_t buf_len,
00222                                   const oid * objid, size_t objidlen);
00223 
00224     int             sprint_realloc_objid(u_char ** buf, size_t * buf_len,
00225                                          size_t * out_len,
00226                                          int allow_realloc,
00227                                          const oid * objid,
00228                                          size_t objidlen);
00229 
00230 
00231     int             sprint_realloc_by_type(u_char ** buf, size_t * buf_len,
00232                                            size_t * out_len,
00233                                            int allow_realloc,
00234                                            const netsnmp_variable_list * var,
00235                                            const struct enum_list *enums,
00236                                            const char *hint,
00237                                            const char *units);
00238 
00239     int             sprint_realloc_hexstring(u_char ** buf,
00240                                              size_t * buf_len,
00241                                              size_t * out_len,
00242                                              int allow_realloc,
00243                                              const u_char *, size_t);
00244 
00245     int             sprint_realloc_asciistring(u_char ** buf,
00246                                                size_t * buf_len,
00247                                                size_t * out_len,
00248                                                int allow_realloc,
00249                                                const u_char * cp,
00250                                                size_t len);
00251 
00252     int             sprint_realloc_octet_string(u_char ** buf,
00253                                                 size_t * buf_len,
00254                                                 size_t * out_len,
00255                                                 int allow_realloc,
00256                                                 const netsnmp_variable_list *,
00257                                                 const struct enum_list *,
00258                                                 const char *,
00259                                                 const char *);
00260 
00261     int             sprint_realloc_opaque(u_char ** buf, size_t * buf_len,
00262                                           size_t * out_len,
00263                                           int allow_realloc,
00264                                           const netsnmp_variable_list *,
00265                                           const struct enum_list *, const char *,
00266                                           const char *);
00267 
00268     int             sprint_realloc_object_identifier(u_char ** buf,
00269                                                      size_t * buf_len,
00270                                                      size_t * out_len,
00271                                                      int allow_realloc,
00272                                                      const netsnmp_variable_list
00273                                                      *, const struct enum_list *,
00274                                                      const char *,
00275                                                      const char *);
00276 
00277     int             sprint_realloc_timeticks(u_char ** buf,
00278                                              size_t * buf_len,
00279                                              size_t * out_len,
00280                                              int allow_realloc,
00281                                              const netsnmp_variable_list *,
00282                                              const struct enum_list *,
00283                                              const char *, const char *);
00284 
00285     int             sprint_realloc_hinted_integer(u_char ** buf,
00286                                                   size_t * buf_len,
00287                                                   size_t * out_len,
00288                                                   int allow_realloc, long,
00289                                                   const char, const char *,
00290                                                   const char *);
00291 
00292     int             sprint_realloc_integer(u_char ** buf, size_t * buf_len,
00293                                            size_t * out_len,
00294                                            int allow_realloc,
00295                                            const netsnmp_variable_list *,
00296                                            const struct enum_list *,
00297                                            const char *, const char *);
00298 
00299     int             sprint_realloc_uinteger(u_char ** buf,
00300                                             size_t * buf_len,
00301                                             size_t * out_len,
00302                                             int allow_realloc,
00303                                             const netsnmp_variable_list *,
00304                                             const struct enum_list *,
00305                                             const char *, const char *);
00306 
00307     int             sprint_realloc_gauge(u_char ** buf, size_t * buf_len,
00308                                          size_t * out_len,
00309                                          int allow_realloc,
00310                                          const netsnmp_variable_list *,
00311                                          const struct enum_list *, const char *,
00312                                          const char *);
00313 
00314     int             sprint_realloc_counter(u_char ** buf, size_t * buf_len,
00315                                            size_t * out_len,
00316                                            int allow_realloc,
00317                                            const netsnmp_variable_list *,
00318                                            const struct enum_list *,
00319                                            const char *, const char *);
00320 
00321     int             sprint_realloc_networkaddress(u_char ** buf,
00322                                                   size_t * buf_len,
00323                                                   size_t * out_len,
00324                                                   int allow_realloc,
00325                                                   const netsnmp_variable_list *,
00326                                                   const struct enum_list *,
00327                                                   const char *,
00328                                                   const char *);
00329 
00330     int             sprint_realloc_ipaddress(u_char ** buf,
00331                                              size_t * buf_len,
00332                                              size_t * out_len,
00333                                              int allow_realloc,
00334                                              const netsnmp_variable_list *,
00335                                              const struct enum_list *,
00336                                              const char *, const char *);
00337 
00338     int             sprint_realloc_null(u_char ** buf, size_t * buf_len,
00339                                         size_t * out_len,
00340                                         int allow_realloc,
00341                                         const netsnmp_variable_list *,
00342                                         const struct enum_list *, const char *,
00343                                         const char *);
00344 
00345     int             sprint_realloc_bitstring(u_char ** buf,
00346                                              size_t * buf_len,
00347                                              size_t * out_len,
00348                                              int allow_realloc,
00349                                              const netsnmp_variable_list *,
00350                                              const struct enum_list *,
00351                                              const char *, const char *);
00352 
00353     int             sprint_realloc_nsapaddress(u_char ** buf,
00354                                                size_t * buf_len,
00355                                                size_t * out_len,
00356                                                int allow_realloc,
00357                                                const netsnmp_variable_list *,
00358                                                const struct enum_list *,
00359                                                const char *, const char *);
00360 
00361     int             sprint_realloc_counter64(u_char ** buf,
00362                                              size_t * buf_len,
00363                                              size_t * out_len,
00364                                              int allow_realloc,
00365                                              const netsnmp_variable_list *,
00366                                              const struct enum_list *,
00367                                              const char *, const char *);
00368 
00369     int             sprint_realloc_badtype(u_char ** buf, size_t * buf_len,
00370                                            size_t * out_len,
00371                                            int allow_realloc,
00372                                            const netsnmp_variable_list *,
00373                                            const struct enum_list *,
00374                                            const char *, const char *);
00375 
00376 #ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
00377     int             sprint_realloc_float(u_char ** buf, size_t * buf_len,
00378                                          size_t * out_len,
00379                                          int allow_realloc,
00380                                          const netsnmp_variable_list *,
00381                                          const struct enum_list *, const char *,
00382                                          const char *);
00383 
00384     int             sprint_realloc_double(u_char ** buf, size_t * buf_len,
00385                                           size_t * out_len,
00386                                           int allow_realloc,
00387                                           const netsnmp_variable_list *,
00388                                           const struct enum_list *, const char *,
00389                                           const char *);
00390 #endif
00391 
00392 
00393     int             snprint_by_type(char *buf, size_t buf_len,
00394                                     netsnmp_variable_list * var,
00395                                     const struct enum_list *enums,
00396                                     const char *hint, const char *units);
00397 
00398     int             snprint_hexstring(char *buf, size_t buf_len,
00399                                       const u_char *, size_t);
00400 
00401     int             snprint_asciistring(char *buf, size_t buf_len,
00402                                         const u_char * cp, size_t len);
00403 
00404     int             snprint_octet_string(char *buf, size_t buf_len,
00405                                          const netsnmp_variable_list *,
00406                                          const struct enum_list *, const char *,
00407                                          const char *);
00408 
00409     int             snprint_opaque(char *buf, size_t buf_len,
00410                                    const netsnmp_variable_list *,
00411                                    const struct enum_list *, const char *,
00412                                    const char *);
00413 
00414     int             snprint_object_identifier(char *buf, size_t buf_len,
00415                                               const netsnmp_variable_list *,
00416                                               const struct enum_list *,
00417                                               const char *, const char *);
00418 
00419     int             snprint_timeticks(char *buf, size_t buf_len,
00420                                       const netsnmp_variable_list *,
00421                                       const struct enum_list *, const char *,
00422                                       const char *);
00423 
00424     int             snprint_hinted_integer(char *buf, size_t buf_len,
00425                                            long, const char *,
00426                                            const char *);
00427 
00428     int             snprint_integer(char *buf, size_t buf_len,
00429                                     const netsnmp_variable_list *,
00430                                     const struct enum_list *, const char *,
00431                                     const char *);
00432 
00433     int             snprint_uinteger(char *buf, size_t buf_len,
00434                                      const netsnmp_variable_list *,
00435                                      const struct enum_list *, const char *,
00436                                      const char *);
00437 
00438     int             snprint_gauge(char *buf, size_t buf_len,
00439                                   const netsnmp_variable_list *,
00440                                   const struct enum_list *, const char *,
00441                                   const char *);
00442 
00443     int             snprint_counter(char *buf, size_t buf_len,
00444                                     const netsnmp_variable_list *,
00445                                     const struct enum_list *, const char *,
00446                                     const char *);
00447 
00448     int             snprint_networkaddress(char *buf, size_t buf_len,
00449                                            const netsnmp_variable_list *,
00450                                            const struct enum_list *,
00451                                            const char *, const char *);
00452 
00453     int             snprint_ipaddress(char *buf, size_t buf_len,
00454                                       const netsnmp_variable_list *,
00455                                       const struct enum_list *, const char *,
00456                                       const char *);
00457 
00458     int             snprint_null(char *buf, size_t buf_len,
00459                                  const netsnmp_variable_list *,
00460                                  const struct enum_list *, const char *,
00461                                  const char *);
00462 
00463     int             snprint_bitstring(char *buf, size_t buf_len,
00464                                       const netsnmp_variable_list *,
00465                                       const struct enum_list *, const char *,
00466                                       const char *);
00467 
00468     int             snprint_nsapaddress(char *buf, size_t buf_len,
00469                                         const netsnmp_variable_list *,
00470                                         const struct enum_list *, const char *,
00471                                         const char *);
00472 
00473     int             snprint_counter64(char *buf, size_t buf_len,
00474                                       const netsnmp_variable_list *,
00475                                       const struct enum_list *, const char *,
00476                                       const char *);
00477 
00478     int             snprint_badtype(char *buf, size_t buf_len,
00479                                     const netsnmp_variable_list *,
00480                                     const struct enum_list *, const char *,
00481                                     const char *);
00482 
00483 #ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
00484     int             snprint_float(char *buf, size_t buf_len,
00485                                   const netsnmp_variable_list *,
00486                                   const struct enum_list *, const char *,
00487                                   const char *);
00488 
00489     int             snprint_double(char *buf, size_t buf_len,
00490                                    const netsnmp_variable_list *,
00491                                    const struct enum_list *, const char *,
00492                                    const char *);
00493 #endif
00494 
00495     void            print_oid_report(FILE *);
00496     void            print_oid_report_enable_labeledoid(void);
00497     void            print_oid_report_enable_oid(void);
00498     void            print_oid_report_enable_suffix(void);
00499     void            print_oid_report_enable_symbolic(void);
00500     void            print_oid_report_enable_mibchildoid(void);
00501 
00502     const char     *parse_octet_hint(const char *hint, const char *value,
00503                                      unsigned char **new_val, int *new_val_len);
00504 
00505     void            clear_tree_flags(register struct tree *tp);
00506 
00507     char           *snmp_out_toggle_options(char *);
00508     void            snmp_out_toggle_options_usage(const char *, FILE *);
00509     char           *snmp_in_toggle_options(char *);
00510     char           *snmp_in_options(char *, int, char * const *);
00511     void            snmp_in_toggle_options_usage(const char *, FILE *);
00512     u_char          mib_to_asn_type(int mib_type);
00513 
00514 
00515     int             netsnmp_str2oid(const char *S, oid * O, int L);
00516 
00517 
00518 #define NETSNMP_STRING_OUTPUT_GUESS  1
00519 #define NETSNMP_STRING_OUTPUT_ASCII  2
00520 #define NETSNMP_STRING_OUTPUT_HEX    3
00521 
00522 #define NETSNMP_OID_OUTPUT_SUFFIX  1
00523 #define NETSNMP_OID_OUTPUT_MODULE  2
00524 #define NETSNMP_OID_OUTPUT_FULL    3
00525 #define NETSNMP_OID_OUTPUT_NUMERIC 4
00526 #define NETSNMP_OID_OUTPUT_UCD     5
00527 #define NETSNMP_OID_OUTPUT_NONE    6
00528 #ifdef __cplusplus
00529 }
00530 #endif
00531 #endif                          /* MIB_H */