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

SNMP编程

开发平台:

Unix_Linux

  1. #ifndef AGENT_REGISTRY_H
  2. #define AGENT_REGISTRY_H
  3. /***********************************************************************/
  4. /*
  5.  * new version2 agent handler API structures 
  6.  */
  7. /***********************************************************************/
  8. #include <net-snmp/agent/snmp_agent.h>
  9. #ifdef __cplusplus
  10. extern          "C" {
  11. #endif
  12. /***********************************************************************/
  13.     /*
  14.      * requests api definitions 
  15.      */
  16. /***********************************************************************/
  17.     /*
  18.      * the structure of parameters passed to registered ACM modules 
  19.      */
  20. struct view_parameters {
  21.     netsnmp_pdu    *pdu;
  22.     oid            *name;
  23.     size_t          namelen;
  24.     int             test;
  25.     int             errorcode; /*  Do not change unless you're
  26.     specifying an error, as it starts
  27.     in a success state.  */
  28.     int             check_subtree;
  29. };
  30. struct register_parameters {
  31.     oid            *name;
  32.     size_t          namelen;
  33.     int             priority;
  34.     int             range_subid;
  35.     oid             range_ubound;
  36.     int             timeout;
  37.     u_char          flags;
  38.     const char     *contextName;
  39. };
  40. typedef struct subtree_context_cache_s {
  41.     char *context_name;
  42.     struct netsnmp_subtree_s *first_subtree;
  43.     struct subtree_context_cache_s *next;
  44. } subtree_context_cache;
  45. void             setup_tree   (void);
  46. void             shutdown_tree    (void);
  47. netsnmp_subtree *netsnmp_subtree_find   (oid *, size_t, netsnmp_subtree *,
  48.    const char *context_name);
  49. netsnmp_subtree *netsnmp_subtree_find_next(oid *, size_t, netsnmp_subtree *,
  50.    const char *context_name);
  51. netsnmp_subtree *netsnmp_subtree_find_prev(oid *, size_t,netsnmp_subtree *,
  52.    const char *context_name);
  53. netsnmp_subtree *netsnmp_subtree_find_first(const char *context_name);
  54. netsnmp_session *get_session_for_oid    (oid *, size_t, 
  55.     const char *context_name);
  56. subtree_context_cache *get_top_context_cache(void);
  57. void netsnmp_set_lookup_cache_size(int newsize);
  58. int netsnmp_get_lookup_cache_size(void);
  59. #define MIB_REGISTERED_OK  0
  60. #define MIB_DUPLICATE_REGISTRATION -1
  61. #define MIB_REGISTRATION_FAILED -2
  62. #define MIB_UNREGISTERED_OK  0
  63. #define MIB_NO_SUCH_REGISTRATION -1
  64. #define MIB_UNREGISTRATION_FAILED -2
  65. #define DEFAULT_MIB_PRIORITY 127
  66. int             register_mib    (const char *, struct variable *,
  67.     size_t, size_t, oid *, size_t);
  68. int             register_mib_priority    (const char *, struct variable *,
  69.     size_t, size_t, oid *, size_t,
  70.     int);
  71. int             register_mib_range    (const char *, struct variable *,
  72.     size_t, size_t, oid *, size_t, 
  73.     int, int, oid, netsnmp_session *);
  74. int register_mib_context    (const char *, struct variable *,
  75.     size_t, size_t, oid *, size_t,
  76.     int, int, oid, netsnmp_session *,
  77.     const char *, int, int);
  78. int netsnmp_register_mib_table_row    (const char *, struct variable *,
  79.     size_t, size_t, oid *, size_t, 
  80.     int, int, netsnmp_session *,
  81.     const char *, int, int);
  82. int unregister_mib    (oid *, size_t);
  83. int             unregister_mib_priority    (oid *, size_t, int);
  84. int             unregister_mib_range    (oid *, size_t, int, int, oid);
  85. int             unregister_mib_context    (oid *, size_t, int, int, oid,
  86.     const char *);
  87. void            clear_context              (void);
  88. void            unregister_mibs_by_session (netsnmp_session *);
  89. int     netsnmp_unregister_mib_table_row   (oid *mibloc, size_t mibloclen,
  90.     int priority, int var_subid,
  91.     oid range_ubound,
  92.     const char *context);
  93. int             compare_tree    (const oid *, size_t, 
  94.     const oid *, size_t);
  95. int             in_a_view    (oid *, size_t *, 
  96.     netsnmp_pdu *, int);
  97. int             check_access    (netsnmp_pdu *pdu);
  98. int             netsnmp_acm_check_subtree  (netsnmp_pdu *, oid *, size_t);
  99. void            register_mib_reattach    (void);
  100. void            register_mib_detach    (void);
  101. /*
  102.  * REGISTER_MIB(): This macro simply loads register_mib with less pain:
  103.  * 
  104.  * descr:   A short description of the mib group being loaded.
  105.  * var:     The variable structure to load.
  106.  * vartype: The variable structure used to define it (variable[2, 4, ...])
  107.  * theoid:  An *initialized* *exact length* oid pointer.
  108.  *          (sizeof(theoid) *must* return the number of elements!) 
  109.  */
  110. #define REGISTER_MIB(descr, var, vartype, theoid)                      
  111.   if (register_mib(descr, (struct variable *) var, sizeof(struct vartype), 
  112.                sizeof(var)/sizeof(struct vartype),                     
  113.                theoid, sizeof(theoid)/sizeof(oid)) != MIB_REGISTERED_OK ) 
  114. DEBUGMSGTL(("register_mib", "%s registration failedn", descr));
  115. #define NUM_EXTERNAL_FDS 32
  116. #define FD_REGISTERED_OK  0
  117. #define FD_REGISTRATION_FAILED -2
  118. #define FD_UNREGISTERED_OK  0
  119. #define FD_NO_SUCH_REGISTRATION -1
  120. extern int      external_readfd[NUM_EXTERNAL_FDS],   external_readfdlen;
  121. extern int      external_writefd[NUM_EXTERNAL_FDS],  external_writefdlen;
  122. extern int      external_exceptfd[NUM_EXTERNAL_FDS], external_exceptfdlen;
  123. extern void     (*external_readfdfunc[NUM_EXTERNAL_FDS])   (int, void *);
  124. extern void     (*external_writefdfunc[NUM_EXTERNAL_FDS])  (int, void *);
  125. extern void     (*external_exceptfdfunc[NUM_EXTERNAL_FDS]) (int, void *);
  126. extern void    *external_readfd_data[NUM_EXTERNAL_FDS];
  127. extern void    *external_writefd_data[NUM_EXTERNAL_FDS];
  128. extern void    *external_exceptfd_data[NUM_EXTERNAL_FDS];
  129. int             register_readfd(int, void (*func)(int, void *),   void *);
  130. int             register_writefd(int, void (*func)(int, void *),  void *);
  131. int             register_exceptfd(int, void (*func)(int, void *), void *);
  132. int             unregister_readfd(int);
  133. int             unregister_writefd(int);
  134. int             unregister_exceptfd(int);
  135. #define NUM_EXTERNAL_SIGS 32
  136. #define SIG_REGISTERED_OK  0
  137. #define SIG_REGISTRATION_FAILED -2
  138. #define SIG_UNREGISTERED_OK  0
  139. extern int      external_signal_scheduled[NUM_EXTERNAL_SIGS];
  140. extern void     (*external_signal_handler[NUM_EXTERNAL_SIGS])(int);
  141. int             register_signal(int, void (*func)(int));
  142. int             unregister_signal(int);
  143. /*
  144.  * internal API.  Don't use this.  Use netsnmp_register_handler instead 
  145.  */
  146. struct netsnmp_handler_registration_s;
  147. int             netsnmp_register_mib(const char *, struct variable *,
  148.      size_t, size_t, oid *, size_t,
  149.      int, int, oid, netsnmp_session *,
  150.      const char *, int, int,
  151.      struct netsnmp_handler_registration_s *,
  152.      int);
  153. #ifdef __cplusplus
  154. }
  155. #endif
  156. #endif                          /* AGENT_REGISTRY_H */