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

SNMP编程

开发平台:

Unix_Linux

  1. /*
  2.  * $Id: baby_steps.h,v 1.7 2004/09/14 02:29:15 rstory Exp $
  3.  */
  4. #ifndef BABY_STEPS_H
  5. #define BABY_STEPS_H
  6. #ifdef __cplusplus
  7. extern          "C" {
  8. #endif
  9. #include <net-snmp/agent/agent_handler.h>
  10.     /*
  11.      * Flags for baby step modes
  12.      */
  13. #define BABY_STEP_NONE                  0
  14. #define BABY_STEP_PRE_REQUEST           (0x1 <<  1)
  15. #define BABY_STEP_OBJECT_LOOKUP         (0x1 <<  2)
  16. #define BABY_STEP_CHECK_VALUE           (0x1 <<  3)
  17. #define BABY_STEP_ROW_CREATE            (0x1 <<  4)
  18. #define BABY_STEP_UNDO_SETUP            (0x1 <<  5)
  19. #define BABY_STEP_SET_VALUE             (0x1 <<  6)
  20. #define BABY_STEP_CHECK_CONSISTENCY     (0x1 <<  7)
  21. #define BABY_STEP_UNDO_SET              (0x1 <<  8)
  22. #define BABY_STEP_COMMIT                (0x1 <<  9)
  23. #define BABY_STEP_UNDO_COMMIT           (0x1 << 10)
  24. #define BABY_STEP_IRREVERSIBLE_COMMIT   (0x1 << 11)
  25. #define BABY_STEP_UNDO_CLEANUP          (0x1 << 12)
  26. #define BABY_STEP_POST_REQUEST          (0x1 << 13)
  27. #define BABY_STEP_ALL                   (0xffffffff)
  28. #define BABY_STEP_CHECK_OBJECT          BABY_STEP_CHECK_VALUE
  29. #define BABY_STEP_SET_VALUES            BABY_STEP_SET_VALUE
  30. #define BABY_STEP_UNDO_SETS             BABY_STEP_UNDO_SET
  31. /** @name baby_steps
  32.  *
  33.  * This helper expands the original net-snmp set modes into the newer, finer
  34.  * grained modes.
  35.  *
  36.  *  @{ */
  37.     typedef struct netsnmp_baby_steps_modes_s {
  38.        u_int       registered;
  39.        u_int       completed;
  40.     } netsnmp_baby_steps_modes;
  41. void                 netsnmp_baby_steps_init(void);
  42. netsnmp_mib_handler *netsnmp_baby_steps_handler_get(u_long modes);
  43. /** @} */
  44. /** @name access_multiplexer
  45.  *
  46.  * This helper calls individual access methods based on the mode. All
  47.  * access methods share the same handler, and the same myvoid pointer.
  48.  * If you need individual myvoid pointers, check out the multiplexer
  49.  * handler (though it currently only works for traditional modes).
  50.  *
  51.  *  @{ */
  52. /** @struct netsnmp_mib_handler_access_methods
  53.  *  Defines the access methods to be called by the access_multiplexer helper
  54.  */
  55. typedef struct netsnmp_baby_steps_access_methods_s {
  56.       
  57.    /*
  58.     * baby step modes
  59.     */
  60.    Netsnmp_Node_Handler *pre_request;
  61.    Netsnmp_Node_Handler *object_lookup;
  62.    Netsnmp_Node_Handler *get_values;
  63.    Netsnmp_Node_Handler *object_syntax_checks;
  64.    Netsnmp_Node_Handler *row_creation;
  65.    Netsnmp_Node_Handler *undo_setup;
  66.    Netsnmp_Node_Handler *set_values;
  67.    Netsnmp_Node_Handler *consistency_checks;
  68.    Netsnmp_Node_Handler *commit;
  69.    Netsnmp_Node_Handler *undo_sets;
  70.    Netsnmp_Node_Handler *undo_cleanup;
  71.    Netsnmp_Node_Handler *undo_commit;
  72.    Netsnmp_Node_Handler *irreversible_commit;
  73.    Netsnmp_Node_Handler *post_request;
  74.    void                 *my_access_void;
  75. } netsnmp_baby_steps_access_methods;
  76.     netsnmp_mib_handler * netsnmp_baby_steps_access_multiplexer_get(
  77.         netsnmp_baby_steps_access_methods *);
  78.     int netsnmp_baby_step_mode2flag( u_int mode );
  79. /** @} */
  80. /** backwards compatability. don't use in new code */
  81. #define netsnmp_get_baby_steps_handler netsnmp_baby_steps_handler_get
  82. #define netsnmp_init_baby_steps_helper netsnmp_baby_steps_handler_init
  83. #ifdef __cplusplus
  84. }
  85. #endif
  86. #endif /* baby_steps */