/usr/include/net-snmp/agent/table_dataset.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 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | /*
* table_iterator.h
*/
#ifndef _TABLE_DATA_SET_HANDLER_H_
#define _TABLE_DATA_SET_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.
*/
void netsnmp_init_table_dataset(void);
#define TABLE_DATA_SET_NAME "netsnmp_table_data_set"
/*
* return SNMP_ERR_NOERROR or some SNMP specific protocol error id
*/
typedef int (Netsnmp_Value_Change_Ok) (char *old_value,
size_t old_value_len,
char *new_value,
size_t new_value_len,
void *mydata);
/*
* stored within a given row
*/
typedef struct netsnmp_table_data_set_storage_s {
unsigned int column;
/*
* info about it?
*/
char writable;
Netsnmp_Value_Change_Ok *change_ok_fn;
void *my_change_data;
/*
* data actually stored
*/
u_char type;
union { /* value of variable */
void *voidp;
long *integer;
u_char *string;
oid *objid;
u_char *bitstring;
struct counter64 *counter64;
#ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
float *floatVal;
double *doubleVal;
#endif /* NETSNMP_WITH_OPAQUE_SPECIAL_TYPES */
} data;
u_long data_len;
struct netsnmp_table_data_set_storage_s *next;
} netsnmp_table_data_set_storage;
typedef struct netsnmp_table_data_set_s {
netsnmp_table_data *table;
netsnmp_table_data_set_storage *default_row;
int allow_creation; /* set to 1 to allow creation of new rows */
unsigned int rowstatus_column;
} netsnmp_table_data_set;
/* ============================
* DataSet API: Table maintenance
* ============================ */
netsnmp_table_data_set *netsnmp_create_table_data_set(const char *);
netsnmp_table_row *netsnmp_table_data_set_clone_row( netsnmp_table_row *row);
void netsnmp_table_dataset_delete_all_data(
netsnmp_table_data_set_storage *data);
void netsnmp_table_dataset_delete_row(netsnmp_table_row *row);
void netsnmp_table_dataset_add_row(netsnmp_table_data_set
*table,
netsnmp_table_row *row);
void
netsnmp_table_dataset_replace_row(netsnmp_table_data_set *table,
netsnmp_table_row *origrow,
netsnmp_table_row *newrow);
void netsnmp_table_dataset_remove_row(netsnmp_table_data_set
*table,
netsnmp_table_row *row);
void
netsnmp_table_dataset_remove_and_delete_row(netsnmp_table_data_set
*table,
netsnmp_table_row *row);
/* ============================
* DataSet API: Default row operations
* ============================ */
/*
* to set, add column, type, (writable) ? 1 : 0
*/
/*
* default value, if not NULL, is the default value used in row
* creation. It is copied into the storage template (free your
* calling argument).
*/
int netsnmp_table_set_add_default_row(netsnmp_table_data_set *,
unsigned int, int, int,
void *default_value,
size_t default_value_len);
#if HAVE_STDARG_H
void netsnmp_table_set_multi_add_default_row(netsnmp_table_data_set *,
...);
#else
void netsnmp_table_set_multi_add_default_row(va_alist);
#endif
/* ============================
* DataSet API: MIB maintenance
* ============================ */
netsnmp_mib_handler
*netsnmp_get_table_data_set_handler(netsnmp_table_data_set *);
Netsnmp_Node_Handler netsnmp_table_data_set_helper_handler;
int netsnmp_register_table_data_set(netsnmp_handler_registration *,
netsnmp_table_data_set *,
netsnmp_table_registration_info *);
netsnmp_table_data_set
*netsnmp_extract_table_data_set(netsnmp_request_info *request);
netsnmp_table_data_set_storage
*netsnmp_extract_table_data_set_column(netsnmp_request_info *,
unsigned int);
/* ============================
* DataSet API: Config-based operations
* ============================ */
void netsnmp_register_auto_data_table(netsnmp_table_data_set *table_set,
char *registration_name);
void netsnmp_config_parse_table_set(const char *token, char *line);
void netsnmp_config_parse_add_row( const char *token, char *line);
/* ============================
* DataSet API: Row operations
* ============================ */
netsnmp_table_row *netsnmp_table_data_set_get_first_row(netsnmp_table_data_set *table);
netsnmp_table_row *netsnmp_table_data_set_get_next_row( netsnmp_table_data_set *table,
netsnmp_table_row *row);
int netsnmp_table_set_num_rows(netsnmp_table_data_set *table);
/* ============================
* DataSet API: Column operations
* ============================ */
netsnmp_table_data_set_storage
*netsnmp_table_data_set_find_column(netsnmp_table_data_set_storage *,
unsigned int);
int netsnmp_mark_row_column_writable( netsnmp_table_row *row,
int column, int writable);
int netsnmp_set_row_column( netsnmp_table_row *,
unsigned int, int, const char *,
size_t);
/* ============================
* DataSet API: Index operations
* ============================ */
void netsnmp_table_dataset_add_index(netsnmp_table_data_set
*table, u_char type);
#if HAVE_STDARG_H
void netsnmp_table_set_add_indexes(netsnmp_table_data_set *tset, ...);
#else
void netsnmp_table_helper_add_indexes(va_alist);
#endif
#ifdef __cplusplus
}
#endif
#define netsnmp_table_row_add_column(row, type, value, value_len) snmp_varlist_add_variable(&row->indexes, NULL, 0, type, (u_char *) value, value_len)
#endif /* _TABLE_DATA_SET_HANDLER_H_ */
|