100
100
.RI "NETSNMP_INLINE void \fBnetsnmp_table_dataset_remove_row\fP (\fBnetsnmp_table_data_set\fP *table, \fBnetsnmp_table_row\fP *row)"
102
.RI "\fIremoves a row from the table, but doesn't delete/free anything \fP"
102
.RI "\fIremoves a row from the table, but doesn't delete/free the column values \fP"
104
104
.RI "NETSNMP_INLINE void \fBnetsnmp_table_dataset_remove_and_delete_row\fP (\fBnetsnmp_table_data_set\fP *table, \fBnetsnmp_table_row\fP *row)"
106
.RI "\fIremoves a row from the table and then deletes it (and all it's data) \fP"
106
.RI "\fIremoves a row from the table and then deletes it (and all its data) \fP"
108
.RI "void \fBnetsnmp_table_set_multi_add_default_row\fP (va_dcl)"
108
.RI "void \fBnetsnmp_table_set_multi_add_default_row\fP (\fBnetsnmp_table_data_set\fP *tset,...)"
110
110
.RI "\fIadds multiple data column definitions to each row. \fP"
112
.RI "void \fBnetsnmp_table_set_add_indexes\fP (va_alist)"
112
.RI "void \fBnetsnmp_table_set_add_indexes\fP (\fBnetsnmp_table_data_set\fP *tset,...)"
114
114
.RI "\fIadds multiple indexes to a table_dataset helper object. \fP"
116
116
.RI "int \fBnetsnmp_table_set_num_rows\fP (\fBnetsnmp_table_data_set\fP *table)"
123
.RI "size_t \fBdata_set_cache_s::data_len\fP"
126
.RI "int \fBnewrow_stash_s::state\fP"
129
.RI "int \fBnewrow_stash_s::created\fP"
132
.RI "int \fBnewrow_stash_s::deleted\fP"
135
119
.SH "Detailed Description"
137
This handler helps you implement a table where all the data is expected to be stored within the agent itself and not in some external storage location.
139
It handles all MIB requests including GETs, GETNEXTs and SETs. It's possible to simply create a table without actually ever defining a handler to be called when SNMP requests come in. To use the data, you can either attach a sub-handler that merely uses/manipulates the data further when requests come in, or you can loop through it externally when it's actually needed. This handler is most useful in cases where a table is holding configuration data for something which gets triggered via another event.
141
NOTE NOTE NOTE: This helper isn't complete and is likely to change somewhat over time. Specifically, the way it stores data internally may change drastically.
121
Helps you implement a table with automatted storage.
123
This handler helps you implement a table where all the data is expected to be stored within the agent itself and not in some external storage location. It handles all MIB requests including GETs, GETNEXTs and SETs. It's possible to simply create a table without actually ever defining a handler to be called when SNMP requests come in. To use the data, you can either attach a sub-handler that merely uses/manipulates the data further when requests come in, or you can loop through it externally when it's actually needed. This handler is most useful in cases where a table is holding configuration data for something which gets triggered via another event.
125
NOTE NOTE NOTE: This helper isn't complete and is likely to change somewhat over time. Specifically, the way it stores data internally may change drastically.
142
126
.SH "Function Documentation"
144
128
.SS "\fBnetsnmp_table_data_set\fP* netsnmp_create_table_data_set (const char * table_name)"
159
143
extracts a netsnmp_table_data_set pointer from a given request
161
Definition at line 187 of file table_dataset.c.
145
Definition at line 188 of file table_dataset.c.
163
147
References netsnmp_request_get_list_data().
164
148
.SS "\fBnetsnmp_table_data_set_storage\fP* netsnmp_extract_table_data_set_column (\fBnetsnmp_request_info\fP * request, unsigned int column)"
166
150
extracts a netsnmp_table_data_set pointer from a given request
168
Definition at line 173 of file table_dataset.c.
152
Definition at line 174 of file table_dataset.c.
170
154
References netsnmp_extract_table_row_data(), and netsnmp_table_data_set_find_column().
171
155
.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_table_data_set_handler (\fBnetsnmp_table_data_set\fP * data_set)"
173
157
Given a netsnmp_table_data_set definition, create a handler for it.
175
Definition at line 86 of file table_dataset.c.
159
Definition at line 87 of file table_dataset.c.
177
161
References netsnmp_mib_handler_s::flags, MIB_HANDLER_AUTO_NEXT, netsnmp_mib_handler_s::myvoid, netsnmp_create_handler(), netsnmp_table_data_set_helper_handler(), NULL, and snmp_log().
217
201
register a given data_set at a given oid (specified in the netsnmp_handler_registration pointer).
219
The reginfo->handler->access_method *may* be null if the call doesn't ever want to be called for SNMP operations.
203
The reginfo->handler->access_method *may* be null if the call doesn't ever want to be called for SNMP operations.
223
207
\fBdata_set.c\fP.
225
Definition at line 113 of file table_dataset.c.
209
Definition at line 114 of file table_dataset.c.
227
211
References netsnmp_table_data_set_storage_s::column, netsnmp_table_data_set_s::default_row, netsnmp_table_registration_info_s::indexes, netsnmp_table_data_s::indexes_template, netsnmp_table_registration_info_s::max_column, netsnmp_table_registration_info_s::min_column, netsnmp_get_table_data_set_handler(), netsnmp_inject_handler(), netsnmp_register_table_data(), netsnmp_table_data_set_storage_s::next, NULL, snmp_clone_varbind(), SNMP_MALLOC_TYPEDEF, SNMP_MAX, SNMP_MIN, and netsnmp_table_data_set_s::table.
232
216
sets a given column in a row with data given a type, value, and length.
234
Data is memdup'ed by the function.
218
Data is memdup'ed by the function.
238
222
\fBdata_set.c\fP.
240
Definition at line 233 of file table_dataset.c.
224
Definition at line 234 of file table_dataset.c.
242
References netsnmp_table_data_set_storage_s::column, netsnmp_table_row_s::data, netsnmp_table_data_set_storage_s::data, netsnmp_table_data_set_storage_s::data_len, memdup(), netsnmp_table_data_set_find_column(), netsnmp_table_data_set_storage_s::next, SNMP_FREE, snmp_log(), SNMP_MALLOC_TYPEDEF, and netsnmp_table_data_set_storage_s::type.
226
References netsnmp_table_data_set_storage_s::column, netsnmp_table_row_s::data, netsnmp_table_data_set_storage_s::data, netsnmp_table_data_set_storage_s::data_len, memdup(), netsnmp_table_data_set_find_column(), netsnmp_table_data_set_storage_s::next, SNMP_FREE, snmp_log(), SNMP_MALLOC_TYPEDEF, netsnmp_table_data_set_storage_s::string, netsnmp_table_data_set_storage_s::type, and netsnmp_table_data_set_storage_s::voidp.
244
228
Referenced by netsnmp_config_parse_add_row(), and netsnmp_table_data_set_create_row_from_defaults().
245
229
.SS "\fBnetsnmp_table_row\fP* netsnmp_table_data_set_clone_row (\fBnetsnmp_table_row\fP * row)"
247
231
clones a dataset row, including all data.
249
Definition at line 347 of file table_dataset.c.
233
Definition at line 348 of file table_dataset.c.
251
235
References netsnmp_table_row_s::data, memdup(), netsnmp_table_data_clone_row(), netsnmp_table_dataset_delete_row(), netsnmp_table_data_set_storage_s::next, and NULL.
256
240
creates a new row from an existing defined default set
258
Definition at line 389 of file table_dataset.c.
242
Definition at line 390 of file table_dataset.c.
260
References netsnmp_table_row_s::data, netsnmp_create_table_data_row(), netsnmp_mark_row_column_writable(), netsnmp_set_row_column(), and NULL.
244
References netsnmp_table_data_set_storage_s::column, netsnmp_table_data_set_storage_s::data, netsnmp_table_data_set_storage_s::data_len, netsnmp_create_table_data_row(), netsnmp_mark_row_column_writable(), netsnmp_set_row_column(), netsnmp_table_data_set_storage_s::next, NULL, netsnmp_table_data_set_storage_s::type, netsnmp_table_data_set_storage_s::voidp, and netsnmp_table_data_set_storage_s::writable.
262
246
Referenced by netsnmp_table_data_set_create_newrowstash().
263
247
.SS "\fBnetsnmp_table_data_set_storage\fP* netsnmp_table_data_set_find_column (\fBnetsnmp_table_data_set_storage\fP * start, unsigned int column)"
265
249
Finds a column within a given storage set, given the pointer to the start of the storage set list.
267
Definition at line 161 of file table_dataset.c.
251
Definition at line 162 of file table_dataset.c.
269
253
References netsnmp_table_data_set_storage_s::column, and netsnmp_table_data_set_storage_s::next.
276
260
This is the routine that takes care of all SNMP requests coming into the table.
278
Definition at line 427 of file table_dataset.c.
262
Definition at line 428 of file table_dataset.c.
280
References netsnmp_table_data_set_s::allow_creation, netsnmp_table_request_info_s::colnum, newrow_stash_s::created, netsnmp_table_data_set_storage_s::data, netsnmp_table_row_s::data, netsnmp_table_data_set_storage_s::data_len, newrow_stash_s::deleted, netsnmp_table_request_info_s::index_oid, netsnmp_table_request_info_s::index_oid_len, netsnmp_vardata::integer, netsnmp_agent_request_info_s::mode, netsnmp_mib_handler_s::myvoid, netsnmp_table_data_s::name, variable_list::name, variable_list::name_length, netsnmp_create_data_list(), netsnmp_extract_table_info(), netsnmp_extract_table_row(), netsnmp_oid_stash_add_data(), netsnmp_oid_stash_get_data(), netsnmp_request_add_list_data(), netsnmp_set_request_error(), netsnmp_strdup_and_null(), netsnmp_table_data_build_result(), netsnmp_table_data_set_clone_row(), netsnmp_table_data_set_create_newrowstash(), netsnmp_table_data_set_find_column(), netsnmp_table_dataset_add_row(), netsnmp_table_dataset_delete_row(), netsnmp_table_dataset_remove_and_delete_row(), netsnmp_table_dataset_replace_row(), newrow_stash_s::newrow, netsnmp_request_info_s::next, NULL, netsnmp_request_info_s::processed, netsnmp_request_info_s::requestvb, netsnmp_handler_registration_s::rootoid_len, netsnmp_table_data_set_s::rowstatus_column, SNMP_FREE, snmp_log(), SNMP_MALLOC_TYPEDEF, snprint_objid(), newrow_stash_s::state, netsnmp_vardata::string, netsnmp_table_data_set_s::table, variable_list::type, netsnmp_table_data_set_storage_s::type, variable_list::val, variable_list::val_len, and netsnmp_table_data_set_storage_s::writable.
264
References netsnmp_table_data_set_s::allow_creation, netsnmp_table_request_info_s::colnum, newrow_stash_s::created, netsnmp_table_data_set_storage_s::data, netsnmp_table_row_s::data, netsnmp_table_data_set_storage_s::data_len, newrow_stash_s::deleted, netsnmp_table_request_info_s::index_oid, netsnmp_table_request_info_s::index_oid_len, netsnmp_table_data_set_storage_s::integer, netsnmp_vardata::integer, netsnmp_agent_request_info_s::mode, netsnmp_mib_handler_s::myvoid, netsnmp_table_data_s::name, variable_list::name, variable_list::name_length, netsnmp_create_data_list(), netsnmp_extract_table_info(), netsnmp_extract_table_row(), netsnmp_oid_stash_add_data(), netsnmp_oid_stash_get_data(), netsnmp_request_add_list_data(), netsnmp_set_request_error(), netsnmp_strdup_and_null(), netsnmp_table_data_build_result(), netsnmp_table_data_set_clone_row(), netsnmp_table_data_set_create_newrowstash(), netsnmp_table_data_set_find_column(), netsnmp_table_dataset_add_row(), netsnmp_table_dataset_delete_row(), netsnmp_table_dataset_remove_and_delete_row(), netsnmp_table_dataset_replace_row(), newrow_stash_s::newrow, netsnmp_request_info_s::next, NULL, netsnmp_request_info_s::processed, netsnmp_request_info_s::requestvb, netsnmp_handler_registration_s::rootoid_len, netsnmp_table_data_set_s::rowstatus_column, SNMP_FREE, snmp_log(), SNMP_MALLOC_TYPEDEF, snprint_objid(), newrow_stash_s::state, netsnmp_vardata::string, netsnmp_table_data_set_storage_s::string, netsnmp_table_data_set_s::table, variable_list::type, netsnmp_table_data_set_storage_s::type, variable_list::val, variable_list::val_len, netsnmp_table_data_set_storage_s::voidp, and netsnmp_table_data_set_storage_s::writable.
282
266
Referenced by netsnmp_get_table_data_set_handler().
283
267
.SS "NETSNMP_INLINE void netsnmp_table_dataset_add_index (\fBnetsnmp_table_data_set\fP * table, u_char type)"
322
306
deletes a single dataset table data.
324
returns the (possibly still good) next pointer of the deleted data object.
326
Definition at line 1072 of file table_dataset.c.
328
References netsnmp_table_data_set_storage_s::data, netsnmp_table_data_set_storage_s::next, NULL, and SNMP_FREE.
308
returns the (possibly still good) next pointer of the deleted data object.
310
Definition at line 1073 of file table_dataset.c.
312
References netsnmp_table_data_set_storage_s::data, netsnmp_table_data_set_storage_s::next, NULL, SNMP_FREE, and netsnmp_table_data_set_storage_s::voidp.
330
314
Referenced by netsnmp_table_dataset_delete_all_data().
331
315
.SS "NETSNMP_INLINE void netsnmp_table_dataset_delete_row (\fBnetsnmp_table_row\fP * row)"
333
317
deletes all the data from this node and beyond in the linked list
335
Definition at line 1095 of file table_dataset.c.
319
Definition at line 1096 of file table_dataset.c.
337
321
References netsnmp_table_data_delete_row(), and netsnmp_table_dataset_delete_all_data().
339
323
Referenced by netsnmp_table_data_set_clone_row(), and netsnmp_table_data_set_helper_handler().
340
324
.SS "NETSNMP_INLINE void netsnmp_table_dataset_remove_and_delete_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * row)"
342
removes a row from the table and then deletes it (and all it's data)
326
removes a row from the table and then deletes it (and all its data)
344
Definition at line 1119 of file table_dataset.c.
328
Definition at line 1120 of file table_dataset.c.
346
330
References netsnmp_table_data_remove_and_delete_row(), netsnmp_table_dataset_delete_all_data(), and netsnmp_table_data_set_s::table.
348
332
Referenced by netsnmp_table_data_set_helper_handler().
349
333
.SS "NETSNMP_INLINE void netsnmp_table_dataset_remove_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * row)"
351
removes a row from the table, but doesn't delete/free anything
335
removes a row from the table, but doesn't delete/free the column values
353
Definition at line 1108 of file table_dataset.c.
337
Definition at line 1109 of file table_dataset.c.
355
339
References netsnmp_table_data_remove_and_delete_row(), and netsnmp_table_data_set_s::table.
356
340
.SS "NETSNMP_INLINE void netsnmp_table_dataset_replace_row (\fBnetsnmp_table_data_set\fP * table, \fBnetsnmp_table_row\fP * origrow, \fBnetsnmp_table_row\fP * newrow)"
358
342
adds a new row to a dataset table
360
Definition at line 1059 of file table_dataset.c.
344
Definition at line 1060 of file table_dataset.c.
362
346
References netsnmp_table_data_replace_row(), and netsnmp_table_data_set_s::table.
369
353
Arguments should be the table_set, column number, variable type and finally a 1 if it is allowed to be writable, or a 0 if not. If the default_value field is not NULL, it will be used to populate new valuse in that column fro newly created rows. It is copied into the storage template (free your calling argument).
371
returns SNMPERR_SUCCESS or SNMPERR_FAILURE
373
Definition at line 289 of file table_dataset.c.
375
References netsnmp_table_data_set_storage_s::column, netsnmp_table_data_set_storage_s::data, netsnmp_table_data_set_storage_s::data_len, netsnmp_table_data_set_s::default_row, memdup(), netsnmp_table_data_set_find_column(), netsnmp_table_data_set_storage_s::next, NULL, snmp_log(), SNMP_MALLOC_TYPEDEF, netsnmp_table_data_set_storage_s::type, and netsnmp_table_data_set_storage_s::writable.
355
returns SNMPERR_SUCCESS or SNMPERR_FAILURE
357
Definition at line 290 of file table_dataset.c.
359
References netsnmp_table_data_set_storage_s::column, netsnmp_table_data_set_storage_s::data, netsnmp_table_data_set_storage_s::data_len, netsnmp_table_data_set_s::default_row, memdup(), netsnmp_table_data_set_find_column(), netsnmp_table_data_set_storage_s::next, NULL, snmp_log(), SNMP_MALLOC_TYPEDEF, netsnmp_table_data_set_storage_s::type, netsnmp_table_data_set_storage_s::voidp, and netsnmp_table_data_set_storage_s::writable.
377
361
Referenced by netsnmp_config_parse_table_set(), and netsnmp_table_set_multi_add_default_row().
378
.SS "void netsnmp_table_set_add_indexes (va_alist)"
362
.SS "void netsnmp_table_set_add_indexes (\fBnetsnmp_table_data_set\fP * tset, ...)"
380
364
adds multiple indexes to a table_dataset helper object.
382
366
To end the list, use a 0 after the list of ASN index types.
384
Definition at line 1180 of file table_dataset.c.
368
Definition at line 1178 of file table_dataset.c.
386
370
References netsnmp_table_dataset_add_index().
387
.SS "void netsnmp_table_set_multi_add_default_row (va_dcl)"
371
.SS "void netsnmp_table_set_multi_add_default_row (\fBnetsnmp_table_data_set\fP * tset, ...)"
389
373
adds multiple data column definitions to each row.
391
Functionally, this is a wrapper around calling netsnmp_table_set_add_default_row repeatedly for you.
375
Functionally, this is a wrapper around calling netsnmp_table_set_add_default_row repeatedly for you.
395
379
\fBdata_set.c\fP.
397
Definition at line 1141 of file table_dataset.c.
381
Definition at line 1140 of file table_dataset.c.
399
383
References netsnmp_table_set_add_default_row().