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

SNMP编程

开发平台:

Unix_Linux

  1. /*
  2.  * table_container.h
  3.  * $Id: table_container.h,v 1.7.2.1 2005/02/08 21:58:18 nba Exp $
  4.  */
  5. #ifndef _TABLE_CONTAINER_HANDLER_H_
  6. #define _TABLE_CONTAINER_HANDLER_H_
  7. #ifdef __cplusplus
  8. extern          "C" {
  9. #endif
  10.     /*
  11.      * The table container helper is designed to simplify the task of
  12.      * writing a table handler for the net-snmp agent when the data being
  13.      * accessed is accessible via a netsnmp_container.
  14.      * 
  15.      * Functionally, it is a specialized version of the more
  16.      * generic table helper but easies the burden of GETNEXT processing by
  17.      * retrieving the appropriate row for each index through
  18.      * function calls which should be supplied by the module that wishes
  19.      * help.  The module the table_container helps should, afterwards,
  20.      * never be called for the case of "MODE_GETNEXT" and only for the GET
  21.      * and SET related modes instead.
  22.      */
  23.     
  24. #include <net-snmp/library/container.h>
  25. #include <net-snmp/agent/table.h>
  26.     
  27. #define TABLE_CONTAINER_ROW       "table_container:row"
  28. #define TABLE_CONTAINER_CONTAINER "table_container:container"
  29.     
  30. #define TABLE_CONTAINER_KEY_NETSNMP_INDEX         1 /* default */
  31. #define TABLE_CONTAINER_KEY_VARBIND_INDEX         2
  32. #define TABLE_CONTAINER_KEY_VARBIND_RAW           3
  33.     /*
  34.      * register a container table
  35.      */
  36.     int            
  37.     netsnmp_container_table_register(netsnmp_handler_registration *reginfo,
  38.                                      netsnmp_table_registration_info
  39.                                      *tabreq,
  40.                                      netsnmp_container *container,
  41.                                      char key_type);
  42.     /*
  43.      * get an injectable containe table handler
  44.      */
  45.     netsnmp_mib_handler *
  46.     netsnmp_container_table_handler_get(netsnmp_table_registration_info *tabreq,
  47.                                         netsnmp_container *container,
  48.                                         char key_type);
  49.     
  50.     /** find the context data used by the table_container helper */
  51. #ifdef NETSNMP_USE_INLINE
  52.     NETSNMP_STATIC_INLINE void *
  53.     netsnmp_container_table_row_extract(netsnmp_request_info *request)
  54.     {
  55.         /*
  56.          * NOTE: this function must match in table_container.c and table_container.h.
  57.          *       if you change one, change them both!
  58.          */
  59.         return netsnmp_request_get_list_data(request, TABLE_CONTAINER_ROW);
  60.     }
  61. #else
  62.     void *
  63.     netsnmp_container_table_extract_context(netsnmp_request_info *request);
  64. #endif /* inline */
  65.     void netsnmp_container_table_row_insert(netsnmp_request_info *request,
  66.                                             netsnmp_index *row);
  67.     /** retrieve the container used by the table_container helper */
  68.     netsnmp_container*
  69.     netsnmp_container_table_container_extract(netsnmp_request_info *request);
  70.     void *
  71.     netsnmp_container_table_find_next_row(netsnmp_request_info *request,
  72.                                           netsnmp_table_request_info *tblreq,
  73.                                           netsnmp_container *container,
  74.                                           char key_type );
  75. #ifdef __cplusplus
  76. }
  77. #endif
  78. #endif                          /* _TABLE_CONTAINER_HANDLER_H_ */