/usr/include/net-snmp/agent/table_data.h is in libsnmp-dev 5.4.3~dfsg-2.4ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | /*
* table_iterator.h
*/
#ifndef _TABLE_DATA_HANDLER_H_
#define _TABLE_DATA_HANDLER_H_
#ifdef __cplusplus
extern "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);
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_ */
|