net-snmp 5.7
Modules | Defines | Functions
table
Net-SNMP Agent handler and extensibility API

Helps you implement a table. More...

Modules

 table_array
 

Helps you implement a table when data can be stored locally.


 table_container
 

Helps you implement a table when data can be found via a netsnmp_container.


 table_data
 

Helps you implement a table with datamatted storage.


 generic_table_API
 

General requirements for a table helper.


 table_iterator
 

The table iterator helper is designed to simplify the task of writing a table handler for the net-snmp agent when the data being accessed is not in an oid sorted form and must be accessed externally.


 table_row
 

Helps you implement a table shared across two or more subagents, or otherwise split into individual row slices.


 tdata
 

Implement a table with datamatted storage.


Defines

#define SPARSE_TABLE_HANDLER_NAME   "sparse_table"

Functions

void netsnmp_handler_owns_table_info (netsnmp_mib_handler *handler)
 Configures a handler such that table registration information is freed by netsnmp_handler_free().
void netsnmp_registration_owns_table_info (netsnmp_handler_registration *reg)
 Configures a handler such that table registration information is freed by netsnmp_handler_free().
int netsnmp_register_table (netsnmp_handler_registration *reginfo, netsnmp_table_registration_info *tabreq)
 creates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls netsnmp_register_handler() to register the table into the agent.
int netsnmp_unregister_table (netsnmp_handler_registration *reginfo)
NETSNMP_INLINE
netsnmp_table_request_info
netsnmp_extract_table_info (netsnmp_request_info *request)
 Extracts the processed table information from a given request.
netsnmp_table_registration_infonetsnmp_find_table_registration_info (netsnmp_handler_registration *reginfo)
 extracts the registered netsnmp_table_registration_info object from a netsnmp_handler_registration object
int table_helper_handler (netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests)
 implements the table helper handler
netsnmp_mib_handlernetsnmp_sparse_table_handler_get (void)
 create sparse table handler
int netsnmp_sparse_table_register (netsnmp_handler_registration *reginfo, netsnmp_table_registration_info *tabreq)
 creates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls netsnmp_register_handler() to register the table into the agent.
int netsnmp_table_build_result (netsnmp_handler_registration *reginfo, netsnmp_request_info *reqinfo, netsnmp_table_request_info *table_info, u_char type, u_char *result, size_t result_len)
 Builds the result to be returned to the agent given the table information.
int netsnmp_table_build_oid (netsnmp_handler_registration *reginfo, netsnmp_request_info *reqinfo, netsnmp_table_request_info *table_info)
 given a registration info object, a request object and the table info object it builds the request->requestvb->name oid from the index values and column information found in the table_info object.
int netsnmp_table_build_oid_from_index (netsnmp_handler_registration *reginfo, netsnmp_request_info *reqinfo, netsnmp_table_request_info *table_info)
 given a registration info object, a request object and the table info object it builds the request->requestvb->name oid from the index values and column information found in the table_info object.
int netsnmp_update_variable_list_from_index (netsnmp_table_request_info *tri)
 parses an OID into table indexses
int netsnmp_update_indexes_from_variable_list (netsnmp_table_request_info *tri)
 builds an oid given a set of indexes.
int netsnmp_check_getnext_reply (netsnmp_request_info *request, oid *prefix, size_t prefix_len, netsnmp_variable_list *newvar, netsnmp_variable_list **outvar)
 checks the original request against the current data being passed in if its greater than the request oid but less than the current valid return, set the current valid return to the new value.
netsnmp_table_registration_infonetsnmp_table_registration_info_clone (netsnmp_table_registration_info *tri)
void netsnmp_table_registration_info_free (netsnmp_table_registration_info *tri)

Detailed Description

Helps you implement a table.

This handler helps you implement a table by doing some of the processing for you.

This handler truly shows the power of the new handler mechanism. By creating a table handler and injecting it into your calling chain, or by using the netsnmp_register_table() function to register your table, you get access to some pre-parsed information. Specifically, the table handler pulls out the column number and indexes from the request oid so that you don't have to do the complex work to do that parsing within your own code.

To do this, the table handler needs to know up front how your table is structured. To inform it about this, you fill in a table_registeration_info structure that is passed to the table handler. It contains the asn index types for the table as well as the minimum and maximum column that should be used.


Function Documentation

int netsnmp_check_getnext_reply ( netsnmp_request_info request,
oid *  prefix,
size_t  prefix_len,
netsnmp_variable_list newvar,
netsnmp_variable_list **  outvar 
)

checks the original request against the current data being passed in if its greater than the request oid but less than the current valid return, set the current valid return to the new value.

returns 1 if outvar was replaced with the oid from newvar (success). returns 0 if not.

Definition at line 1002 of file table.c.

NETSNMP_INLINE netsnmp_table_request_info* netsnmp_extract_table_info ( netsnmp_request_info request)

Extracts the processed table information from a given request.

Call this from subhandlers on a request to extract the processed netsnmp_request_info information. The resulting information includes the index values and the column number.

Parameters:
requestpopulated netsnmp request structure
Returns:
populated netsnmp_table_request_info structure

Definition at line 179 of file table.c.

netsnmp_table_registration_info* netsnmp_find_table_registration_info ( netsnmp_handler_registration reginfo)

extracts the registered netsnmp_table_registration_info object from a netsnmp_handler_registration object

Definition at line 188 of file table.c.

void netsnmp_handler_owns_table_info ( netsnmp_mib_handler handler)

Configures a handler such that table registration information is freed by netsnmp_handler_free().

Should only be called if handler->myvoid points to an object of type netsnmp_table_registration_info.

Definition at line 124 of file table.c.

int netsnmp_register_table ( netsnmp_handler_registration reginfo,
netsnmp_table_registration_info tabreq 
)

creates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls netsnmp_register_handler() to register the table into the agent.

Definition at line 151 of file table.c.

void netsnmp_registration_owns_table_info ( netsnmp_handler_registration reg)

Configures a handler such that table registration information is freed by netsnmp_handler_free().

Should only be called if reg->handler->myvoid points to an object of type netsnmp_table_registration_info.

Definition at line 139 of file table.c.

netsnmp_mib_handler* netsnmp_sparse_table_handler_get ( void  )

create sparse table handler

Definition at line 816 of file table.c.

int netsnmp_sparse_table_register ( netsnmp_handler_registration reginfo,
netsnmp_table_registration_info tabreq 
)

creates a table handler given the netsnmp_table_registration_info object, inserts it into the request chain and then calls netsnmp_register_handler() to register the table into the agent.

handler1 is in reginfo... remove and free??

both handlers now in reginfo, so nothing to do on error

Definition at line 827 of file table.c.

int netsnmp_table_build_oid ( netsnmp_handler_registration reginfo,
netsnmp_request_info reqinfo,
netsnmp_table_request_info table_info 
)

given a registration info object, a request object and the table info object it builds the request->requestvb->name oid from the index values and column information found in the table_info object.

Index values are extracted from the table_info varbinds.

.Entry

.column

Definition at line 904 of file table.c.

int netsnmp_table_build_oid_from_index ( netsnmp_handler_registration reginfo,
netsnmp_request_info reqinfo,
netsnmp_table_request_info table_info 
)

given a registration info object, a request object and the table info object it builds the request->requestvb->name oid from the index values and column information found in the table_info object.

Index values are extracted from the table_info index oid.

Definition at line 942 of file table.c.

int netsnmp_table_build_result ( netsnmp_handler_registration reginfo,
netsnmp_request_info reqinfo,
netsnmp_table_request_info table_info,
u_char  type,
u_char *  result,
size_t  result_len 
)

Builds the result to be returned to the agent given the table information.

Use this function to return results from lowel level handlers to the agent. It takes care of building the proper resulting oid (containing proper indexing) and inserts the result value into the returning varbind.

Definition at line 872 of file table.c.

int netsnmp_update_indexes_from_variable_list ( netsnmp_table_request_info tri)

builds an oid given a set of indexes.

Definition at line 984 of file table.c.

int netsnmp_update_variable_list_from_index ( netsnmp_table_request_info tri)

parses an OID into table indexses

Definition at line 968 of file table.c.

int table_helper_handler ( netsnmp_mib_handler handler,
netsnmp_handler_registration reginfo,
netsnmp_agent_request_info reqinfo,
netsnmp_request_info requests 
)

implements the table helper handler

XXX-rks: memory leak. add cleanup handler?

none available

got one ok

for loop

clear first request so we wont try to run FREE mode

set actual error

Definition at line 196 of file table.c.