netsnmp_table_data.3
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:16k
- .TH "table_data: Helps you implement a table with datamatted storage." 3 "28 Nov 2005" "Version 5.2.1.rc3" "net-snmp" " -*- nroff -*-
- .ad l
- .nh
- .SH NAME
- table_data: Helps you implement a table with datamatted storage. - This helper helps you implement a table where all the indexes are expected to be stored within the agent itself and not in some external storage location.
- .PP
- .SS "Modules"
- .in +1c
- .ti -1c
- .RI "fBtable_dataset: Helps you implement a table with automatted storage.fP"
- .br
- .RI "fIThis 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. fP"
- .PP
- .in -1c
- .SS "Functions"
- .in +1c
- .ti -1c
- .RI "void fBnetsnmp_table_data_generate_index_oidfP (fBnetsnmp_table_rowfP *row)"
- .br
- .RI "fIgenerates the index portion of an table oid from a varlist. fP"
- .ti -1c
- .RI "int fBnetsnmp_table_data_add_rowfP (fBnetsnmp_table_datafP *table, fBnetsnmp_table_rowfP *row)"
- .br
- .RI "fIAdds a row of data to a given table (stored in proper lexographical order). fP"
- .ti -1c
- .RI "fBnetsnmp_table_rowfP * fBnetsnmp_table_data_remove_rowfP (fBnetsnmp_table_datafP *table, fBnetsnmp_table_rowfP *row)"
- .br
- .RI "fIremoves a row of data to a given table and returns it (no free's called) fP"
- .ti -1c
- .RI "void * fBnetsnmp_table_data_delete_rowfP (fBnetsnmp_table_rowfP *row)"
- .br
- .RI "fIdeletes a row's memory. fP"
- .ti -1c
- .RI "void * fBnetsnmp_table_data_remove_and_delete_rowfP (fBnetsnmp_table_datafP *table, fBnetsnmp_table_rowfP *row)"
- .br
- .RI "fIremoves and frees a row of data to a given table and returns the void * fP"
- .ti -1c
- .RI "NETSNMP_INLINE void fBnetsnmp_table_data_replace_rowfP (fBnetsnmp_table_datafP *table, fBnetsnmp_table_rowfP *origrow, fBnetsnmp_table_rowfP *newrow)"
- .br
- .RI "fIswaps out origrow with newrow. fP"
- .ti -1c
- .RI "fBnetsnmp_table_rowfP * fBnetsnmp_table_data_getfP (fBnetsnmp_table_datafP *table, fBnetsnmp_variable_listfP *indexes)"
- .br
- .RI "fIfinds the data in 'datalist' stored at 'indexes' fP"
- .ti -1c
- .RI "fBnetsnmp_table_rowfP * fBnetsnmp_table_data_get_from_oidfP (fBnetsnmp_table_datafP *table, oid *searchfor, size_t searchfor_len)"
- .br
- .RI "fIfinds the data in 'datalist' stored at the searchfor oid fP"
- .ti -1c
- .RI "fBnetsnmp_table_rowfP * fBnetsnmp_table_data_get_first_rowfP (fBnetsnmp_table_datafP *table)"
- .br
- .RI "fIreturns the first row in the table fP"
- .ti -1c
- .RI "fBnetsnmp_table_rowfP * fBnetsnmp_table_data_get_next_rowfP (fBnetsnmp_table_datafP *table, fBnetsnmp_table_rowfP *row)"
- .br
- .RI "fIreturns the next row in the table fP"
- .ti -1c
- .RI "fBnetsnmp_mib_handlerfP * fBnetsnmp_get_table_data_handlerfP (fBnetsnmp_table_datafP *table)"
- .br
- .RI "fICreates a table_data handler and returns it. fP"
- .ti -1c
- .RI "int fBnetsnmp_register_table_datafP (fBnetsnmp_handler_registrationfP *reginfo, fBnetsnmp_table_datafP *table, fBnetsnmp_table_registration_infofP *table_info)"
- .br
- .RI "fIregisters a handler as a data table. fP"
- .ti -1c
- .RI "int fBnetsnmp_register_read_only_table_datafP (fBnetsnmp_handler_registrationfP *reginfo, fBnetsnmp_table_datafP *table, fBnetsnmp_table_registration_infofP *table_info)"
- .br
- .RI "fIregisters a handler as a read-only data table If table_info != NULL, it registers it as a normal table too. fP"
- .ti -1c
- .RI "int fBnetsnmp_table_data_helper_handlerfP (fBnetsnmp_mib_handlerfP *handler, fBnetsnmp_handler_registrationfP *reginfo, fBnetsnmp_agent_request_infofP *reqinfo, fBnetsnmp_request_infofP *requests)"
- .br
- .RI "fIThe helper handler that takes care of passing a specific row of data down to the lower handler(s). fP"
- .ti -1c
- .RI "fBnetsnmp_table_datafP * fBnetsnmp_create_table_datafP (const char *name)"
- .br
- .RI "fIcreates and returns a pointer to table data set fP"
- .ti -1c
- .RI "fBnetsnmp_table_rowfP * fBnetsnmp_create_table_data_rowfP (void)"
- .br
- .RI "fIcreates and returns a pointer to table data set fP"
- .ti -1c
- .RI "NETSNMP_INLINE void fBnetsnmp_insert_table_rowfP (fBnetsnmp_request_infofP *request, fBnetsnmp_table_rowfP *row)"
- .br
- .RI "fIinserts a newly created table_data row into a request fP"
- .ti -1c
- .RI "fBnetsnmp_table_rowfP * fBnetsnmp_extract_table_rowfP (fBnetsnmp_request_infofP *request)"
- .br
- .RI "fIextracts the row being accessed passed from the table_data helper fP"
- .ti -1c
- .RI "fBnetsnmp_table_datafP * fBnetsnmp_extract_tablefP (fBnetsnmp_request_infofP *request)"
- .br
- .RI "fIextracts the table being accessed passed from the table_data helper fP"
- .ti -1c
- .RI "void * fBnetsnmp_extract_table_row_datafP (fBnetsnmp_request_infofP *request)"
- .br
- .RI "fIextracts the data from the row being accessed passed from the table_data helper fP"
- .ti -1c
- .RI "int fBnetsnmp_table_data_build_resultfP (fBnetsnmp_handler_registrationfP *reginfo, fBnetsnmp_agent_request_infofP *reqinfo, fBnetsnmp_request_infofP *request, fBnetsnmp_table_rowfP *row, int column, u_char type, u_char *result_data, size_t result_data_len)"
- .br
- .RI "fIbuilds a result given a row, a varbind to set and the data fP"
- .ti -1c
- .RI "fBnetsnmp_table_rowfP * fBnetsnmp_table_data_clone_rowfP (fBnetsnmp_table_rowfP *row)"
- .br
- .RI "fIclones a data row. fP"
- .ti -1c
- .RI "int fBnetsnmp_table_data_num_rowsfP (fBnetsnmp_table_datafP *table)"
- .br
- .in -1c
- .SH "Detailed Description"
- .PP
- This helper helps you implement a table where all the indexes are expected to be stored within the agent itself and not in some external storage location.
- .PP
- It can be used to store a list of rows, where a row consists of the indexes to the table and a generic data pointer. You can then implement a subhandler which is passed the exact row definition and data it must return data for or accept data for. Complex GETNEXT handling is greatly simplified in this case.
- .SH "Function Documentation"
- .PP
- .SS "fBnetsnmp_table_datafP* netsnmp_create_table_data (const char * name)"
- .PP
- creates and returns a pointer to table data set
- .PP
- Definition at line 563 of file table_data.c.
- .PP
- References netsnmp_table_data_s::name, and SNMP_MALLOC_TYPEDEF.
- .PP
- Referenced by netsnmp_create_table_data_set().
- .SS "fBnetsnmp_table_rowfP* netsnmp_create_table_data_row (void)"
- .PP
- creates and returns a pointer to table data set
- .PP
- fBExamples: fP
- .in +1c
- fBdata_set.cfP.
- .PP
- Definition at line 573 of file table_data.c.
- .PP
- References SNMP_MALLOC_TYPEDEF.
- .PP
- Referenced by netsnmp_config_parse_add_row(), and netsnmp_table_data_set_create_row_from_defaults().
- .SS "fBnetsnmp_table_datafP* netsnmp_extract_table (fBnetsnmp_request_infofP * request)"
- .PP
- extracts the table being accessed passed from the table_data helper
- .PP
- Definition at line 654 of file table_data.c.
- .PP
- References netsnmp_request_get_list_data().
- .SS "fBnetsnmp_table_rowfP* netsnmp_extract_table_row (fBnetsnmp_request_infofP * request)"
- .PP
- extracts the row being accessed passed from the table_data helper
- .PP
- Definition at line 646 of file table_data.c.
- .PP
- References netsnmp_request_get_list_data().
- .PP
- Referenced by netsnmp_extract_table_row_data(), and netsnmp_table_data_set_helper_handler().
- .SS "void* netsnmp_extract_table_row_data (fBnetsnmp_request_infofP * request)"
- .PP
- extracts the data from the row being accessed passed from the table_data helper
- .PP
- Definition at line 663 of file table_data.c.
- .PP
- References netsnmp_table_row_s::data, netsnmp_extract_table_row(), and NULL.
- .PP
- Referenced by netsnmp_extract_table_data_set_column().
- .SS "fBnetsnmp_mib_handlerfP* netsnmp_get_table_data_handler (fBnetsnmp_table_datafP * table)"
- .PP
- Creates a table_data handler and returns it.
- .PP
- Definition at line 282 of file table_data.c.
- .PP
- References netsnmp_mib_handler_s::flags, MIB_HANDLER_AUTO_NEXT, netsnmp_mib_handler_s::myvoid, netsnmp_create_handler(), netsnmp_table_data_helper_handler(), NULL, and snmp_log().
- .PP
- Referenced by netsnmp_register_table_data().
- .SS "NETSNMP_INLINE void netsnmp_insert_table_row (fBnetsnmp_request_infofP * request, fBnetsnmp_table_rowfP * row)"
- .PP
- inserts a newly created table_data row into a request
- .PP
- Definition at line 581 of file table_data.c.
- .PP
- References build_oid_noalloc(), netsnmp_table_request_info_s::indexes, netsnmp_create_data_list(), netsnmp_extract_table_info(), netsnmp_request_add_list_data(), netsnmp_request_info_s::next, NULL, netsnmp_request_info_s::prev, and snmp_oid_compare().
- .SS "int netsnmp_register_read_only_table_data (fBnetsnmp_handler_registrationfP * reginfo, fBnetsnmp_table_datafP * table, fBnetsnmp_table_registration_infofP * table_info)"
- .PP
- registers a handler as a read-only data table If table_info != NULL, it registers it as a normal table too.
- .PP
- Definition at line 316 of file table_data.c.
- .PP
- References netsnmp_get_read_only_handler(), netsnmp_inject_handler(), and netsnmp_register_table_data().
- .SS "int netsnmp_register_table_data (fBnetsnmp_handler_registrationfP * reginfo, fBnetsnmp_table_datafP * table, fBnetsnmp_table_registration_infofP * table_info)"
- .PP
- registers a handler as a data table.
- .PP
- If table_info != NULL, it registers it as a normal table too.
- .PP
- Definition at line 305 of file table_data.c.
- .PP
- References netsnmp_get_table_data_handler(), netsnmp_inject_handler(), and netsnmp_register_table().
- .PP
- Referenced by netsnmp_register_read_only_table_data(), and netsnmp_register_table_data_set().
- .SS "int netsnmp_table_data_add_row (fBnetsnmp_table_datafP * table, fBnetsnmp_table_rowfP * row)"
- .PP
- Adds a row of data to a given table (stored in proper lexographical order).
- .PP
- returns SNMPERR_SUCCESS on successful addition. or SNMPERR_GENERR on failure (E.G., indexes already existed)
- .PP
- xxx-rks: remove invalid row?
- .PP
- Definition at line 51 of file table_data.c.
- .PP
- References netsnmp_table_data_s::first_row, netsnmp_table_row_s::index_oid, netsnmp_table_row_s::index_oid_len, netsnmp_table_row_s::indexes, netsnmp_table_data_s::last_row, netsnmp_table_data_s::name, netsnmp_table_data_generate_index_oid(), netsnmp_table_row_s::next, NULL, netsnmp_table_row_s::prev, snmp_free_varbind(), snmp_log(), snmp_oid_compare(), and netsnmp_table_data_s::store_indexes.
- .PP
- Referenced by netsnmp_config_parse_add_row(), netsnmp_table_data_replace_row(), and netsnmp_table_dataset_add_row().
- .SS "int netsnmp_table_data_build_result (fBnetsnmp_handler_registrationfP * reginfo, fBnetsnmp_agent_request_infofP * reqinfo, fBnetsnmp_request_infofP * request, fBnetsnmp_table_rowfP * row, int column, u_char type, u_char * result_data, size_t result_data_len)"
- .PP
- builds a result given a row, a varbind to set and the data
- .PP
- Definition at line 675 of file table_data.c.
- .PP
- References netsnmp_table_row_s::index_oid, netsnmp_table_row_s::index_oid_len, netsnmp_agent_request_info_s::mode, netsnmp_request_info_s::requestvb, netsnmp_handler_registration_s::rootoid, netsnmp_handler_registration_s::rootoid_len, snmp_set_var_objid(), and snmp_set_var_typed_value().
- .PP
- Referenced by netsnmp_table_data_helper_handler(), and netsnmp_table_data_set_helper_handler().
- .SS "fBnetsnmp_table_rowfP* netsnmp_table_data_clone_row (fBnetsnmp_table_rowfP * row)"
- .PP
- clones a data row.
- .PP
- DOES NOT CLONE THE CONTAINED DATA.
- .PP
- Definition at line 709 of file table_data.c.
- .PP
- References memdup(), NULL, and snmp_clone_varbind().
- .PP
- Referenced by netsnmp_table_data_set_clone_row().
- .SS "void* netsnmp_table_data_delete_row (fBnetsnmp_table_rowfP * row)"
- .PP
- deletes a row's memory.
- .PP
- returns the void data that it doesn't know how to delete.
- .PP
- Definition at line 177 of file table_data.c.
- .PP
- References netsnmp_table_row_s::data, netsnmp_table_row_s::index_oid, netsnmp_table_row_s::indexes, NULL, SNMP_FREE, and snmp_free_varbind().
- .PP
- Referenced by netsnmp_table_data_remove_and_delete_row(), and netsnmp_table_dataset_delete_row().
- .SS "void netsnmp_table_data_generate_index_oid (fBnetsnmp_table_rowfP * row)"
- .PP
- generates the index portion of an table oid from a varlist.
- .PP
- Definition at line 39 of file table_data.c.
- .PP
- References build_oid(), netsnmp_table_row_s::index_oid, netsnmp_table_row_s::index_oid_len, netsnmp_table_row_s::indexes, and NULL.
- .PP
- Referenced by netsnmp_table_data_add_row().
- .SS "fBnetsnmp_table_rowfP* netsnmp_table_data_get (fBnetsnmp_table_datafP * table, fBnetsnmp_variable_listfP * indexes)"
- .PP
- finds the data in 'datalist' stored at 'indexes'
- .PP
- Definition at line 231 of file table_data.c.
- .PP
- References build_oid_noalloc(), netsnmp_table_data_get_from_oid(), and NULL.
- .SS "fBnetsnmp_table_rowfP* netsnmp_table_data_get_first_row (fBnetsnmp_table_datafP * table)"
- .PP
- returns the first row in the table
- .PP
- Definition at line 263 of file table_data.c.
- .PP
- References netsnmp_table_data_s::first_row, and NULL.
- .SS "fBnetsnmp_table_rowfP* netsnmp_table_data_get_from_oid (fBnetsnmp_table_datafP * table, oid * searchfor, size_t searchfor_len)"
- .PP
- finds the data in 'datalist' stored at the searchfor oid
- .PP
- Definition at line 245 of file table_data.c.
- .PP
- References netsnmp_table_data_s::first_row, netsnmp_table_row_s::index_oid, netsnmp_table_row_s::index_oid_len, netsnmp_table_row_s::next, NULL, and snmp_oid_compare().
- .PP
- Referenced by netsnmp_table_data_get(), and netsnmp_table_data_helper_handler().
- .SS "fBnetsnmp_table_rowfP* netsnmp_table_data_get_next_row (fBnetsnmp_table_datafP * table, fBnetsnmp_table_rowfP * row)"
- .PP
- returns the next row in the table
- .PP
- Definition at line 272 of file table_data.c.
- .PP
- References netsnmp_table_row_s::next, and NULL.
- .SS "int netsnmp_table_data_helper_handler (fBnetsnmp_mib_handlerfP * handler, fBnetsnmp_handler_registrationfP * reginfo, fBnetsnmp_agent_request_infofP * reqinfo, fBnetsnmp_request_infofP * requests)"
- .PP
- The helper handler that takes care of passing a specific row of data down to the lower handler(s).
- .PP
- It sets request->processed if the request should not be handled.
- .PP
- Definition at line 332 of file table_data.c.
- .PP
- References netsnmp_table_request_info_s::colnum, netsnmp_table_data_s::first_row, netsnmp_mib_handler_s::flags, netsnmp_table_row_s::index_oid, netsnmp_table_row_s::index_oid_len, netsnmp_table_registration_info_s::max_column, MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE, netsnmp_table_registration_info_s::min_column, netsnmp_agent_request_info_s::mode, netsnmp_mib_handler_s::myvoid, variable_list::name, variable_list::name_length, netsnmp_call_next_handler(), netsnmp_create_data_list(), netsnmp_extract_table_info(), netsnmp_find_table_registration_info(), netsnmp_request_add_list_data(), netsnmp_set_request_error(), netsnmp_table_data_build_result(), netsnmp_table_data_get_from_oid(), netsnmp_table_row_s::next, netsnmp_request_info_s::next, NULL, netsnmp_request_info_s::processed, netsnmp_request_info_s::requestvb, netsnmp_handler_registration_s::rootoid, netsnmp_handler_registration_s::rootoid_len, SNMP_MIN, snmp_oid_compare(), and variable_list::type.
- .PP
- Referenced by netsnmp_get_table_data_handler().
- .SS "void* netsnmp_table_data_remove_and_delete_row (fBnetsnmp_table_datafP * table, fBnetsnmp_table_rowfP * row)"
- .PP
- removes and frees a row of data to a given table and returns the void *
- .PP
- returns the void * data on successful deletion. or NULL on failure (bad arguments)
- .PP
- Definition at line 206 of file table_data.c.
- .PP
- References netsnmp_table_data_delete_row(), netsnmp_table_data_remove_row(), and NULL.
- .PP
- Referenced by netsnmp_table_dataset_remove_and_delete_row(), and netsnmp_table_dataset_remove_row().
- .SS "fBnetsnmp_table_rowfP* netsnmp_table_data_remove_row (fBnetsnmp_table_datafP * table, fBnetsnmp_table_rowfP * row)"
- .PP
- removes a row of data to a given table and returns it (no free's called)
- .PP
- returns the row pointer itself on successful removing. or NULL on failure (bad arguments)
- .PP
- Definition at line 155 of file table_data.c.
- .PP
- References netsnmp_table_data_s::first_row, netsnmp_table_data_s::last_row, netsnmp_table_row_s::next, NULL, and netsnmp_table_row_s::prev.
- .PP
- Referenced by netsnmp_table_data_remove_and_delete_row(), and netsnmp_table_data_replace_row().
- .SS "NETSNMP_INLINE void netsnmp_table_data_replace_row (fBnetsnmp_table_datafP * table, fBnetsnmp_table_rowfP * origrow, fBnetsnmp_table_rowfP * newrow)"
- .PP
- swaps out origrow with newrow.
- .PP
- This does *not* delete/free anything!
- .PP
- Definition at line 221 of file table_data.c.
- .PP
- References netsnmp_table_data_add_row(), and netsnmp_table_data_remove_row().
- .PP
- Referenced by netsnmp_table_dataset_replace_row().