diff options
author | Hideki Yamane <henrich@debian.org> | 2014-03-30 19:38:48 +0900 |
---|---|---|
committer | Hideki Yamane <henrich@debian.org> | 2014-03-30 19:38:48 +0900 |
commit | 7769a9595c3da9a35f31b42451b1f6c3ed4004fa (patch) | |
tree | 009bf8fd68af6bb1129e07dd8c1ed205010d81f8 /include/net-snmp/agent/table_container.h | |
parent | 2e7891b0311204e0ecd5dc4a4334df01f3a6a1b4 (diff) | |
download | pkg-net-snmp-7769a9595c3da9a35f31b42451b1f6c3ed4004fa.tar.gz |
Imported Upstream version 5.7.2~dfsg
Diffstat (limited to 'include/net-snmp/agent/table_container.h')
-rw-r--r-- | include/net-snmp/agent/table_container.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/include/net-snmp/agent/table_container.h b/include/net-snmp/agent/table_container.h new file mode 100644 index 0000000..b342110 --- /dev/null +++ b/include/net-snmp/agent/table_container.h @@ -0,0 +1,108 @@ +/* + * table_container.h + * $Id$ + */ +#ifndef _TABLE_CONTAINER_HANDLER_H_ +#define _TABLE_CONTAINER_HANDLER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + + /* + * The table container helper is designed to simplify the task of + * writing a table handler for the net-snmp agent when the data being + * accessed is accessible via a netsnmp_container. + * + * Functionally, it is a specialized version of the more + * generic table helper but easies the burden of GETNEXT processing by + * retrieving the appropriate row for each index through + * function calls which should be supplied by the module that wishes + * help. The module the table_container helps should, afterwards, + * never be called for the case of "MODE_GETNEXT" and only for the GET + * and SET related modes instead. + */ + +#include <net-snmp/library/container.h> +#include <net-snmp/agent/table.h> + +#define TABLE_CONTAINER_ROW "table_container:row" +#define TABLE_CONTAINER_CONTAINER "table_container:container" + +#define TABLE_CONTAINER_KEY_NETSNMP_INDEX 1 /* default */ +#define TABLE_CONTAINER_KEY_VARBIND_INDEX 2 +#define TABLE_CONTAINER_KEY_VARBIND_RAW 3 + +/* ==================================== + * Container Table API: MIB maintenance + * ==================================== */ + + /* + * get an injectable container table handler + */ + netsnmp_mib_handler * + netsnmp_container_table_handler_get(netsnmp_table_registration_info *tabreq, + netsnmp_container *container, + char key_type); + /* + * register a container table + */ + int + netsnmp_container_table_register(netsnmp_handler_registration *reginfo, + netsnmp_table_registration_info *tabreq, + netsnmp_container *container, + char key_type); + int + netsnmp_container_table_unregister(netsnmp_handler_registration *reginfo); + + /** retrieve the container used by the table_container helper */ + netsnmp_container* + netsnmp_container_table_container_extract(netsnmp_request_info *request); + + /** find the context data used by the table_container helper */ +#ifdef NETSNMP_USE_INLINE + NETSNMP_STATIC_INLINE void * + netsnmp_container_table_row_extract(netsnmp_request_info *request) + { + /* + * NOTE: this function must match in table_container.c and table_container.h. + * if you change one, change them both! + */ + return netsnmp_request_get_list_data(request, TABLE_CONTAINER_ROW); + } + + NETSNMP_STATIC_INLINE void * + netsnmp_container_table_extract_context(netsnmp_request_info *request) + { + /* + * NOTE: this function must match in table_container.c and table_container.h. + * if you change one, change them both! + */ + return netsnmp_request_get_list_data(request, TABLE_CONTAINER_ROW); + } +#else + void * + netsnmp_container_table_row_extract(netsnmp_request_info *request); + void * + netsnmp_container_table_extract_context(netsnmp_request_info *request); +#endif /* inline */ + + void netsnmp_container_table_row_insert(netsnmp_request_info *request, + netsnmp_index *row); + void netsnmp_container_table_row_remove(netsnmp_request_info *request, + netsnmp_index *row); + +/* =================================== + * Container Table API: Row operations + * =================================== */ + + void * + netsnmp_container_table_find_next_row(netsnmp_request_info *request, + netsnmp_table_request_info *tblreq, + netsnmp_container *container, + char key_type ); +#ifdef __cplusplus +} +#endif + +#endif /* _TABLE_CONTAINER_HANDLER_H_ */ |