📄 table_data.h
字号:
/* * table_iterator.h */#ifndef _TABLE_DATA_HANDLER_H_#define _TABLE_DATA_HANDLER_H_#ifdef __cplusplusextern "C" {#endif /* * This helper is designed to completely automate the task of storing * tables of data within the agent that are not tied to external data * sources (like the kernel, hardware, or other processes, etc). IE, * all rows within a table are expected to be added manually using * functions found below. */#define TABLE_DATA_NAME "table_data"#define TABLE_DATA_ROW "table_data"#define TABLE_DATA_TABLE "table_data_table" typedef struct netsnmp_table_row_s { netsnmp_variable_list *indexes; /* stored permanently if store_indexes = 1 */ oid *index_oid; size_t index_oid_len; void *data; /* the data to store */ struct netsnmp_table_row_s *next, *prev; /* if used in a list */ } netsnmp_table_row; typedef struct netsnmp_table_data_s { netsnmp_variable_list *indexes_template; /* containing only types */ char *name; /* if !NULL, it's registered globally */ int flags; /* not currently used */ int store_indexes; netsnmp_table_row *first_row; netsnmp_table_row *last_row; } netsnmp_table_data;/* ================================= * Table Data API: Table maintenance * ================================= */ void netsnmp_table_data_generate_index_oid( netsnmp_table_row *row); netsnmp_table_data *netsnmp_create_table_data(const char *name); netsnmp_table_row *netsnmp_create_table_data_row(void); netsnmp_table_row *netsnmp_table_data_clone_row( netsnmp_table_row *row); void *netsnmp_table_data_delete_row(netsnmp_table_row *row); int netsnmp_table_data_add_row( netsnmp_table_data *table, netsnmp_table_row *row); NETSNMP_INLINE void netsnmp_table_data_replace_row(netsnmp_table_data *table, netsnmp_table_row *origrow, netsnmp_table_row *newrow); netsnmp_table_row *netsnmp_table_data_remove_row(netsnmp_table_data *table, netsnmp_table_row *row); void *netsnmp_table_data_remove_and_delete_row(netsnmp_table_data *table, netsnmp_table_row *row);/* ================================= * Table Data API: MIB maintenance * ================================= */ netsnmp_mib_handler * netsnmp_get_table_data_handler(netsnmp_table_data *table); int netsnmp_register_table_data(netsnmp_handler_registration *reginfo, netsnmp_table_data *table, netsnmp_table_registration_info *table_info); int netsnmp_register_read_only_table_data( netsnmp_handler_registration *reginfo, netsnmp_table_data *table, netsnmp_table_registration_info *table_info); Netsnmp_Node_Handler netsnmp_table_data_helper_handler; netsnmp_table_data *netsnmp_extract_table( netsnmp_request_info *); netsnmp_table_row *netsnmp_extract_table_row(netsnmp_request_info *); void *netsnmp_extract_table_row_data(netsnmp_request_info *); void netsnmp_insert_table_row(netsnmp_request_info *, netsnmp_table_row *); int netsnmp_table_data_build_result(netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *request, netsnmp_table_row *row, int column, u_char type, u_char * result_data, size_t result_data_len);/* ================================= * Table Data API: Row operations * ================================= */ netsnmp_table_row *netsnmp_table_data_get_first_row( netsnmp_table_data *table); netsnmp_table_row *netsnmp_table_data_get_next_row( netsnmp_table_data *table, netsnmp_table_row *row); netsnmp_table_row *netsnmp_table_data_get(netsnmp_table_data *table, netsnmp_variable_list *indexes); netsnmp_table_row *netsnmp_table_data_get_from_oid( netsnmp_table_data *table, oid * searchfor, size_t searchfor_len); int netsnmp_table_data_num_rows(netsnmp_table_data *table);/* ================================= * Table Data API: Index operations * ================================= */#define netsnmp_table_data_add_index(thetable, type) snmp_varlist_add_variable(&thetable->indexes_template, NULL, 0, type, NULL, 0)#define netsnmp_table_row_add_index(row, type, value, value_len) snmp_varlist_add_variable(&row->indexes, NULL, 0, type, (const u_char *) value, value_len)#ifdef __cplusplus}#endif#endif /* _TABLE_DATA_HANDLER_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -