table_array: Helps you implement a table when data can be stored locally. The data is stored in a sorted array, using a binary search for lookups.(3)

NAME
table_array: Helps you implement a table when data can be stored locally. The data is stored in a sorted array, using a binary search for lookups. - The table_array handler is used (automatically) in conjuntion with the table handler. More...

  Functions
int netsnmp_register_table_array (netsnmp_handler_registration *reginfo, netsnmp_table_registration_info *tabreg, netsnmp_table_array_callbacks *cb, int group_rows)
register specified callbacks for the specified table/oid.
netsnmp_mib_handler * netsnmp_find_table_array_handler (netsnmp_handler_registration *reginfo)
find the handler for the table_array helper.
oid_array * netsnmp_extract_array_context (netsnmp_request_info *request)
find the context data used by the table_array helper.
const netsnmp_oid_array_header * netsnmp_table_array_get_by_index (netsnmp_handler_registration *reginfo, netsnmp_oid_array_header *hdr)
search for the specified index.
const netsnmp_oid_array_header ** netsnmp_table_array_get_subset (netsnmp_handler_registration *reginfo, netsnmp_oid_array_header *hdr, int *len)
returns all rows in the data set with the same prefix.
int netsnmp_table_array_check_row_status (netsnmp_table_array_callbacks *cb, netsnmp_oid_array_header *ctx_new, netsnmp_oid_array_header *ctx_old, netsnmp_array_group *ag, int *rs_new, int *rs_old)
this function is called to validate RowStatus transitions.

DETAILED DESCRIPTION

The table_array handler is used (automatically) in conjuntion with the table handler.

It is primarily intended to be used with the mib2c configuration file mib2c.array-user.conf.

The code generated by mib2c is useful when you have control of the data for each row. If you cannot control when rows are added and deleted (or at least be notified of changes to row data), then this handler is probably not for you.

This handler makes use of callbacks (function pointers) to handle various tasks. Code is generated for each callback, but will need to be reviewed and flushed out by the user.

NOTE NOTE NOTE: Once place where mib2c is somewhat lacking is with regards to tables with external indices. If your table makes use of one or more external indices, please review the generated code very carefully for comments regarding external indices.

NOTE NOTE NOTE: This helper, the API and callbacks are still being tested and may change.

The generated code will define a structure for storage of table related data. This structure must be used, as it contains the index OID for the row, which is used for keeping the array sorted. You can add addition fields or data to the structure for your own use.

The generated code will also have code to handle SNMP-SET processing. If your table does not support any SET operations, simply comment out the define <PREFIX>_SET_HANDLING (where <PREFIX> is your table name) in the header file.

Code will be generated to handle row creation. This code may be disabled by commenting out the define <PREFIX>_ROW_CREATION in the header file.

If your table contains a RowStatus object, by default the code will not allow object in an active row to be modified. To allow active rows to be modified, remove the comment block around the define <PREFIX>_CAN_MODIFY_ACTIVE_ROW in the header file.

Code will be generated to maintain a secondary index for all rows, stored in a binary tree. This is very useful for finding rows by a key other than the OID index. By default, the functions for maintaining this tree will be based on a character string. NOTE: this will likely be made into a more generic mechanism, using new callback methods, in the near future.

The generated code contains many TODO comments. Make sure you check each one to see if it applies to your code. Examples include checking indices for syntax (ranges, etc), initializing default values in newly created rows, checking for row activation and deactivation requirements, etc.

FUNCTION DOCUMENTATION

  oid_array* netsnmp_extract_array_context (netsnmp_request_info * request)

find the context data used by the table_array helper.

Definition at line 177 of file table_array.c.

  netsnmp_mib_handler* netsnmp_find_table_array_handler (netsnmp_handler_registration * reginfo)

find the handler for the table_array helper.

Definition at line 163 of file table_array.c.

Referenced by netsnmp_table_array_get_by_index(), and netsnmp_table_array_get_subset().

  int netsnmp_register_table_array (netsnmp_handler_registration * reginfo, netsnmp_table_registration_info * tabreg, netsnmp_table_array_callbacks * cb, int group_rows)

register specified callbacks for the specified table/oid.

If the group_rows parameter is set, the row related callbacks will be called once for each unique row index. Otherwise, each callback will be called only once, for all objects.

Definition at line 144 of file table_array.c.

  int netsnmp_table_array_check_row_status (netsnmp_table_array_callbacks * cb, netsnmp_oid_array_header * ctx_new, netsnmp_oid_array_header * ctx_old, netsnmp_array_group * ag, int * rs_new, int * rs_old)

this function is called to validate RowStatus transitions.

Definition at line 257 of file table_array.c.

  const netsnmp_oid_array_header* netsnmp_table_array_get_by_index (netsnmp_handler_registration * reginfo, netsnmp_oid_array_header * hdr)

search for the specified index.

This routine searches for modified rows first (i.e. during SET request processing).

Definition at line 186 of file table_array.c.

  const netsnmp_oid_array_header** netsnmp_table_array_get_subset (netsnmp_handler_registration * reginfo, netsnmp_oid_array_header * hdr, int * len)

returns all rows in the data set with the same prefix.

This is usefull when a table contains multiple indices.

Definition at line 224 of file table_array.c.