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

SNMP编程

开发平台:

Unix_Linux

  1. #ifndef SNMP_ENUM_H
  2. #define SNMP_ENUM_H
  3. #ifdef __cplusplus
  4. extern          "C" {
  5. #endif
  6.     struct snmp_enum_list {
  7.         struct snmp_enum_list *next;
  8.         int             value;
  9.         char           *label;
  10.     };
  11. #define SE_MAX_IDS 5
  12. #define SE_MAX_SUBIDS 32        /* needs to be a multiple of 8 */
  13.     /*
  14.      * begin storage definitions 
  15.      */
  16.     /*
  17.      * These definitions correspond with the "storid" argument to the API 
  18.      */
  19. #define SE_LIBRARY_ID     0
  20. #define SE_MIB_ID         1
  21. #define SE_APPLICATION_ID 2
  22. #define SE_ASSIGNED_ID    3
  23.     /*
  24.      * library specific enum locations 
  25.      */
  26.     /*
  27.      * error codes 
  28.      */
  29. #define SE_OK            0
  30. #define SE_NOMEM         1
  31. #define SE_ALREADY_THERE 2
  32. #define SE_DNE           -2
  33.     int             init_snmp_enum(const char *type);
  34.     struct snmp_enum_list *se_find_list(unsigned int major,
  35.                                         unsigned int minor);
  36.     struct snmp_enum_list *se_find_slist(const char *listname);
  37.     int             se_store_in_list(struct snmp_enum_list *,
  38.                                      unsigned int major, unsigned int minor);
  39.     int             se_find_value(unsigned int major, unsigned int minor,
  40.                                   const char *label);
  41.     int             se_find_free_value(unsigned int major, unsigned int minor);
  42.     char           *se_find_label(unsigned int major, unsigned int minor,
  43.                                   int value);
  44.     int             se_add_pair(unsigned int major, unsigned int minor,
  45.                                 char *label, int value);
  46.     /*
  47.      * finds a list of enums in a list of enum structs associated by a name. 
  48.      */
  49.     /*
  50.      * find a list, and then operate on that list
  51.      *   ( direct methods further below if you already have the list pointer)
  52.      */
  53.     char           *se_find_label_in_slist(const char *listname,
  54.                                            int value);
  55.     int             se_find_value_in_slist(const char *listname,
  56.                                            const char *label);
  57.     int             se_find_free_value_in_slist(const char *listname);
  58.     int             se_add_pair_to_slist(const char *listname, char *label,
  59.                                          int value);
  60.     /*
  61.      * operates directly on a possibly external list 
  62.      */
  63.     char           *se_find_label_in_list(struct snmp_enum_list *list,
  64.                                           int value);
  65.     int             se_find_value_in_list(struct snmp_enum_list *list,
  66.                                           const char *label);
  67.     int             se_find_free_value_in_list(struct snmp_enum_list *list);
  68.     int             se_add_pair_to_list(struct snmp_enum_list **list,
  69.                                         char *label, int value);
  70.     /*
  71.      * Persistent enumeration lists
  72.      */
  73.     void            se_store_enum_list(struct snmp_enum_list *new_list,
  74.                                        const char *token, char *type);
  75.     void            se_store_list(unsigned int major, unsigned int minor, char *type);
  76.     void            se_store_slist(const char *listname, char *type);
  77.     int             se_store_slist_callback(int majorID, int minorID,
  78.                                            void *serverargs, void *clientargs);
  79.     void            se_read_conf(const char *word, char *cptr);
  80.     void            clear_snmp_enum(void);
  81. #ifdef __cplusplus
  82. }
  83. #endif
  84. #endif                          /* SNMP_ENUM_H */