.TH "Net-SNMP Agent handler and extensibility API" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
.ad l
.nh
.SH NAME
Net-SNMP Agent handler and extensibility API \- 
.PP
The basic theory goes something like this: In the past, with the original mib \fBmodule\fP api (which derived from the original CMU SNMP code) the underlying mib modules were passed very little information (only the truly most basic information about a request).  

.SS "Data Structures"

.in +1c
.ti -1c
.RI "struct \fBnetsnmp_mib_handler_s\fP"
.br
.RI "\fIthe mib handler structure to be registered \fP"
.ti -1c
.RI "struct \fBnetsnmp_handler_registration_s\fP"
.br
.RI "\fIRoot registration info. \fP"
.ti -1c
.RI "struct \fBnetsnmp_handler_args_s\fP"
.br
.ti -1c
.RI "struct \fBnetsnmp_delegated_cache_s\fP"
.br
.in -1c
.SS "Modules"

.in +1c
.ti -1c
.RI "\fButility_handlers\fP"
.br
.PP

.RI "\fISimplify request processing A group of handlers intended to simplify certain aspects of processing a request for a MIB object. \fP"
.ti -1c
.RI "\fBleaf_handlers\fP"
.br
.PP

.RI "\fIProcess individual leaf objects A group of handlers to implement individual leaf objects and instances (both scalar objects, and individual objects and instances within a table). \fP"
.ti -1c
.RI "\fBbaby_steps\fP"
.br
.PP

.RI "\fICalls your handler in baby_steps for set processing. \fP"
.ti -1c
.RI "\fBold_api\fP"
.br
.PP

.RI "\fICalls mib \fBmodule\fP code written in the old style of code. \fP"
.ti -1c
.RI "\fBstash_cache\fP"
.br
.PP

.RI "\fIAutomatically caches data for certain handlers. \fP"
.ti -1c
.RI "\fBtable\fP"
.br
.PP

.RI "\fIHelps you implement a table. \fP"
.in -1c
.SS "Defines"

.in +1c
.ti -1c
.RI "#define \fBMIB_HANDLER_AUTO_NEXT\fP   0x00000001"
.br
.ti -1c
.RI "#define \fBMIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE\fP   0x00000002"
.br
.ti -1c
.RI "#define \fBMIB_HANDLER_INSTANCE\fP   0x00000004"
.br
.ti -1c
.RI "#define \fBMIB_HANDLER_CUSTOM4\fP   0x10000000"
.br
.ti -1c
.RI "#define \fBMIB_HANDLER_CUSTOM3\fP   0x20000000"
.br
.ti -1c
.RI "#define \fBMIB_HANDLER_CUSTOM2\fP   0x40000000"
.br
.ti -1c
.RI "#define \fBMIB_HANDLER_CUSTOM1\fP   0x80000000"
.br
.ti -1c
.RI "#define \fBHANDLER_CAN_GETANDGETNEXT\fP   0x01"
.br
.ti -1c
.RI "#define \fBHANDLER_CAN_SET\fP   0x02"
.br
.ti -1c
.RI "#define \fBHANDLER_CAN_GETBULK\fP   0x04"
.br
.ti -1c
.RI "#define \fBHANDLER_CAN_NOT_CREATE\fP   0x08"
.br
.ti -1c
.RI "#define \fBHANDLER_CAN_BABY_STEP\fP   0x10"
.br
.ti -1c
.RI "#define \fBHANDLER_CAN_STASH\fP   0x20"
.br
.ti -1c
.RI "#define \fBHANDLER_CAN_RONLY\fP   (HANDLER_CAN_GETANDGETNEXT)"
.br
.ti -1c
.RI "#define \fBHANDLER_CAN_RWRITE\fP   (HANDLER_CAN_GETANDGETNEXT | HANDLER_CAN_SET)"
.br
.ti -1c
.RI "#define \fBHANDLER_CAN_SET_ONLY\fP   (HANDLER_CAN_SET | HANDLER_CAN_NOT_CREATE)"
.br
.ti -1c
.RI "#define \fBHANDLER_CAN_DEFAULT\fP   (HANDLER_CAN_RONLY | HANDLER_CAN_NOT_CREATE)"
.br
.ti -1c
.RI "#define \fBREQUEST_IS_DELEGATED\fP   1"
.br
.ti -1c
.RI "#define \fBREQUEST_IS_NOT_DELEGATED\fP   0"
.br
.in -1c
.SS "Typedefs"

.in +1c
.ti -1c
.RI "typedef struct \fBnetsnmp_mib_handler_s\fP \fBnetsnmp_mib_handler\fP"
.br
.RI "\fITypedefs the \fBnetsnmp_mib_handler_s\fP struct into netsnmp_mib_handler. \fP"
.ti -1c
.RI "typedef struct \fBnetsnmp_handler_registration_s\fP \fBnetsnmp_handler_registration\fP"
.br
.RI "\fITypedefs the \fBnetsnmp_handler_registration_s\fP struct into netsnmp_handler_registration. \fP"
.ti -1c
.RI "typedef int( \fBNetsnmp_Node_Handler\fP )(\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
.br
.ti -1c
.RI "typedef struct \fBnetsnmp_handler_args_s\fP \fBnetsnmp_handler_args\fP"
.br
.ti -1c
.RI "typedef struct \fBnetsnmp_delegated_cache_s\fP \fBnetsnmp_delegated_cache\fP"
.br
.in -1c
.SS "Functions"

.in +1c
.ti -1c
.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_create_handler\fP (const char *name, Netsnmp_Node_Handler *handler_access_method)"
.br
.RI "\fIcreates a netsnmp_mib_handler structure given a name and a access method. \fP"
.ti -1c
.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_handler_registration_create\fP (const char *name, \fBnetsnmp_mib_handler\fP *handler, const oid *reg_oid, size_t reg_oid_len, int modes)"
.br
.RI "\fIcreates a handler registration structure given a name, a access_method function, a registration location oid and the modes the handler supports. \fP"
.ti -1c
.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_create_handler_registration\fP (const char *name, Netsnmp_Node_Handler *handler_access_method, const oid *reg_oid, size_t reg_oid_len, int modes)"
.br
.ti -1c
.RI "int \fBnetsnmp_register_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
.br
.RI "\fIregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
.ti -1c
.RI "int \fBnetsnmp_unregister_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
.br
.RI "\fIunregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
.ti -1c
.RI "int \fBnetsnmp_register_handler_nocallback\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
.br
.RI "\fIregister a handler, as defined by the netsnmp_handler_registration pointer. \fP"
.ti -1c
.RI "int \fBnetsnmp_inject_handler_before\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_mib_handler\fP *handler, const char *before_what)"
.br
.RI "\fIinject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. \fP"
.ti -1c
.RI "int \fBnetsnmp_inject_handler\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_mib_handler\fP *handler)"
.br
.RI "\fIinject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. \fP"
.ti -1c
.RI "NETSNMP_INLINE int \fBnetsnmp_call_handler\fP (\fBnetsnmp_mib_handler\fP *next_handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
.br
.RI "\fIcalls a handler with with appropriate NULL checking of arguments, etc. \fP"
.ti -1c
.RI "int \fBnetsnmp_call_handlers\fP (\fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
.br
.ti -1c
.RI "NETSNMP_INLINE int \fBnetsnmp_call_next_handler\fP (\fBnetsnmp_mib_handler\fP *current, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
.br
.RI "\fIcalls the next handler in the chain after the current one with with appropriate NULL checking, etc. \fP"
.ti -1c
.RI "NETSNMP_INLINE int \fBnetsnmp_call_next_handler_one_request\fP (\fBnetsnmp_mib_handler\fP *current, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
.br
.RI "\fIcalls the next handler in the chain after the current one with with appropriate NULL checking, etc. \fP"
.ti -1c
.RI "void \fBnetsnmp_handler_free\fP (\fBnetsnmp_mib_handler\fP *handler)"
.br
.RI "\fIfrees the resources associated with a given handler \fP"
.ti -1c
.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_handler_dup\fP (\fBnetsnmp_mib_handler\fP *handler)"
.br
.RI "\fIduplicates a handler and all subsequent handlers see also _clone_handler \fP"
.ti -1c
.RI "void \fBnetsnmp_handler_registration_free\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
.br
.RI "\fIfree the resources associated with a handler registration object \fP"
.ti -1c
.RI "\fBnetsnmp_handler_registration\fP * \fBnetsnmp_handler_registration_dup\fP (\fBnetsnmp_handler_registration\fP *reginfo)"
.br
.RI "\fIduplicates the handler registration object \fP"
.ti -1c
.RI "NETSNMP_INLINE \fBnetsnmp_delegated_cache\fP * \fBnetsnmp_create_delegated_cache\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests, void *localinfo)"
.br
.RI "\fIcreates a cache of information which can be saved for future reference. \fP"
.ti -1c
.RI "NETSNMP_INLINE \fBnetsnmp_delegated_cache\fP * \fBnetsnmp_handler_check_cache\fP (\fBnetsnmp_delegated_cache\fP *dcache)"
.br
.RI "\fIcheck's a given cache and returns it if it is still valid (ie, the agent still considers it to be an outstanding request. \fP"
.ti -1c
.RI "NETSNMP_INLINE void \fBnetsnmp_free_delegated_cache\fP (\fBnetsnmp_delegated_cache\fP *dcache)"
.br
.RI "\fIfrees a cache once you're finished using it \fP"
.ti -1c
.RI "void \fBnetsnmp_handler_mark_requests_as_delegated\fP (\fBnetsnmp_request_info\fP *requests, int isdelegated)"
.br
.RI "\fImarks a list of requests as delegated (or not if isdelegaded = 0) \fP"
.ti -1c
.RI "NETSNMP_INLINE void \fBnetsnmp_request_add_list_data\fP (\fBnetsnmp_request_info\fP *request, \fBnetsnmp_data_list\fP *\fBnode\fP)"
.br
.RI "\fIadd data to a request that can be extracted later by submodules \fP"
.ti -1c
.RI "NETSNMP_INLINE int \fBnetsnmp_request_remove_list_data\fP (\fBnetsnmp_request_info\fP *request, const char *name)"
.br
.RI "\fIremove data from a request \fP"
.ti -1c
.RI "void * \fBnetsnmp_request_get_list_data\fP (\fBnetsnmp_request_info\fP *request, const char *name)"
.br
.RI "\fIextract data from a request that was added previously by a parent \fBmodule\fP \fP"
.ti -1c
.RI "NETSNMP_INLINE void \fBnetsnmp_free_request_data_set\fP (\fBnetsnmp_request_info\fP *request)"
.br
.RI "\fIFree the extra data stored in a request. \fP"
.ti -1c
.RI "NETSNMP_INLINE void \fBnetsnmp_free_request_data_sets\fP (\fBnetsnmp_request_info\fP *request)"
.br
.RI "\fIFree the extra data stored in a bunch of requests (all data in the chain). \fP"
.ti -1c
.RI "\fBnetsnmp_mib_handler\fP * \fBnetsnmp_find_handler_by_name\fP (\fBnetsnmp_handler_registration\fP *reginfo, const char *name)"
.br
.RI "\fIReturns a handler from a chain based on the name. \fP"
.ti -1c
.RI "void * \fBnetsnmp_find_handler_data_by_name\fP (\fBnetsnmp_handler_registration\fP *reginfo, const char *name)"
.br
.RI "\fIReturns a handler's void * pointer from a chain based on the name. \fP"
.ti -1c
.RI "void \fBhandler_free_callback\fP (void *handler)"
.br
.ti -1c
.RI "void \fBnetsnmp_register_handler_by_name\fP (const char *name, \fBnetsnmp_mib_handler\fP *handler)"
.br
.RI "\fIregisters a given handler by name so that it can be found easily later. \fP"
.ti -1c
.RI "void \fBnetsnmp_clear_handler_list\fP (void)"
.br
.RI "\fIclears the entire handler-registration list \fP"
.ti -1c
.RI "void \fBnetsnmp_inject_handler_into_subtree\fP (\fBnetsnmp_subtree\fP *tp, const char *name, \fBnetsnmp_mib_handler\fP *handler, const char *before_what)"
.br
.ti -1c
.RI "void \fBparse_injectHandler_conf\fP (const char *token, char *cptr)"
.br
.ti -1c
.RI "void \fBnetsnmp_init_handler_conf\fP (void)"
.br
.ti -1c
.RI "void * \fBnetsnmp_handler_get_parent_data\fP (\fBnetsnmp_request_info\fP *, const char *)"
.br
.in -1c
.SH "Detailed Description"
.PP 
The basic theory goes something like this: In the past, with the original mib \fBmodule\fP api (which derived from the original CMU SNMP code) the underlying mib modules were passed very little information (only the truly most basic information about a request). 

This worked well at the time but in todays world of subagents, device instrumentation, low resource consumption, etc, it just isn't flexible enough. 'handlers' are here to fix all that.
.PP
With the rewrite of the agent internals for the net-snmp 5.0 release, we introduce a modular calling scheme that allows agent modules to be written in a very flexible manner, and more importantly allows reuse of code in a decent way (and without the memory and speed overheads of OO languages like C++).
.PP
Functionally, the notion of what a handler does is the same as the older api: A handler is \fBcreated\fP and then \fBregistered\fP with the main agent at a given OID in the OID \fBtree\fP and gets called any time a request is made that it should respond to. You probably should use one of the convenience helpers instead of doing anything else yourself though:
.PP
Most importantly, though, is that the handlers are built on the notion of modularity and reuse. Specifically, rather than do all the really hard work (like parsing table indexes out of an incoming oid request) in each \fBmodule\fP, the API is designed to make it easy to write 'helper' handlers that merely process some aspect of the request before passing it along to the final handler that returns the real answer. Most people will want to make use of the \fBinstance\fP, \fBtable\fP, \fBtable_iterator\fP, \fBtable_data\fP, or \fBtable_dataset\fP helpers to make their life easier. These 'helpers' interpert important aspects of the request and pass them on to you.
.PP
For instance, the \fBtable\fP helper is designed to hand you a list of extracted index values from an incoming request. THe \fBtable_iterator\fP helper is built on top of the table helper, and is designed to help you iterate through data stored elsewhere (like in a kernel) that is not in OID lexographical order (ie, don't write your own index/oid sorting routine, use this helper instead). The beauty of the \fBtable_iterator helper\fP, as well as the \fBinstance\fP helper is that they take care of the complex GETNEXT processing entirely for you and hand you everything you need to merely return the data as if it was a GET request. Much less code and hair pulling. I've pulled all my hair out to help you so that only one of us has to be bald. 
.SH "Typedef Documentation"
.PP 
.SS "struct \fBnetsnmp_handler_registration_s\fP \fBnetsnmp_handler_registration\fP"
.PP
Typedefs the \fBnetsnmp_handler_registration_s\fP struct into netsnmp_handler_registration. 
.SS "struct \fBnetsnmp_mib_handler_s\fP \fBnetsnmp_mib_handler\fP"
.PP
Typedefs the \fBnetsnmp_mib_handler_s\fP struct into netsnmp_mib_handler. 
.SH "Function Documentation"
.PP 
.SS "int netsnmp_call_handler (\fBnetsnmp_mib_handler\fP * next_handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
.PP
calls a handler with with appropriate NULL checking of arguments, etc. 
.SS "int netsnmp_call_next_handler (\fBnetsnmp_mib_handler\fP * current, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
.PP
calls the next handler in the chain after the current one with with appropriate NULL checking, etc. 
.SS "int netsnmp_call_next_handler_one_request (\fBnetsnmp_mib_handler\fP * current, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
.PP
calls the next handler in the chain after the current one with with appropriate NULL checking, etc. 
.SS "void netsnmp_clear_handler_list (void)"
.PP
clears the entire handler-registration list 
.SS "\fBnetsnmp_delegated_cache\fP * netsnmp_create_delegated_cache (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests, void * localinfo)"
.PP
creates a cache of information which can be saved for future reference. Use \fBnetsnmp_handler_check_cache()\fP later to make sure it's still valid before referencing it in the future. 
.PP
\fBExamples: \fP
.in +1c
\fBdelayed_instance.c\fP.
.SS "\fBnetsnmp_mib_handler\fP * netsnmp_create_handler (const char * name, Netsnmp_Node_Handler * handler_access_method)"
.PP
creates a netsnmp_mib_handler structure given a name and a access method. The returned handler should then be \fBregistered.\fP
.PP
\fBParameters:\fP
.RS 4
\fIname\fP is the handler name and is copied then assigned to netsnmp_mib_handler->handler_name
.br
\fIhandler_access_method\fP is a function pointer used as the access method for this handler registration instance for whatever required needs.
.RE
.PP
\fBReturns:\fP
.RS 4
a pointer to a populated netsnmp_mib_handler struct to be registered
.RE
.PP
\fBSee also:\fP
.RS 4
netsnmp_create_handler_registration() 
.PP
\fBnetsnmp_register_handler()\fP 
.RE
.PP

.SS "\fBnetsnmp_mib_handler\fP * netsnmp_find_handler_by_name (\fBnetsnmp_handler_registration\fP * reginfo, const char * name)"
.PP
Returns a handler from a chain based on the name. 
.SS "void * netsnmp_find_handler_data_by_name (\fBnetsnmp_handler_registration\fP * reginfo, const char * name)"
.PP
Returns a handler's void * pointer from a chain based on the name. This probably shouldn't be used by the general public as the void * data may change as a handler evolves. Handlers should really advertise some function for you to use instead. 
.SS "void netsnmp_free_delegated_cache (\fBnetsnmp_delegated_cache\fP * dcache)"
.PP
frees a cache once you're finished using it 
.PP
\fBExamples: \fP
.in +1c
\fBdelayed_instance.c\fP.
.SS "void netsnmp_free_request_data_set (\fBnetsnmp_request_info\fP * request)"
.PP
Free the extra data stored in a request. 
.SS "void netsnmp_free_request_data_sets (\fBnetsnmp_request_info\fP * request)"
.PP
Free the extra data stored in a bunch of requests (all data in the chain). 
.SS "\fBnetsnmp_delegated_cache\fP * netsnmp_handler_check_cache (\fBnetsnmp_delegated_cache\fP * dcache)"
.PP
check's a given cache and returns it if it is still valid (ie, the agent still considers it to be an outstanding request. Returns NULL if it's no longer valid. 
.PP
\fBExamples: \fP
.in +1c
\fBdelayed_instance.c\fP.
.SS "\fBnetsnmp_mib_handler\fP * netsnmp_handler_dup (\fBnetsnmp_mib_handler\fP * handler)"
.PP
duplicates a handler and all subsequent handlers see also _clone_handler 
.SS "void netsnmp_handler_free (\fBnetsnmp_mib_handler\fP * handler)"
.PP
frees the resources associated with a given handler 
.PP
make sure we aren't pointing to ourselves. 
.SS "void netsnmp_handler_mark_requests_as_delegated (\fBnetsnmp_request_info\fP * requests, int isdelegated)"
.PP
marks a list of requests as delegated (or not if isdelegaded = 0) 
.SS "\fBnetsnmp_handler_registration\fP * netsnmp_handler_registration_create (const char * name, \fBnetsnmp_mib_handler\fP * handler, const oid * reg_oid, size_t reg_oid_len, int modes)"
.PP
creates a handler registration structure given a name, a access_method function, a registration location oid and the modes the handler supports. If modes == 0, then modes will automatically be set to the default value of only HANDLER_CAN_DEFAULT, which is by default read-only GET and GETNEXT requests. A hander which supports sets but not row creation should set us a mode of HANDLER_CAN_SET_ONLY. 
.PP
\fBNote:\fP
.RS 4
This ends up calling netsnmp_create_handler(name, handler_access_method) 
.RE
.PP
\fBParameters:\fP
.RS 4
\fIname\fP is the handler name and is copied then assigned to netsnmp_handler_registration->handlerName.
.br
\fIhandler\fP is a function pointer used as the access method for this handler registration instance for whatever required needs.
.br
\fIreg_oid\fP is the registration location oid.
.br
\fIreg_oid_len\fP is the length of reg_oid, can use the macro, OID_LENGTH
.br
\fImodes\fP is used to configure read/write access. If modes == 0, then modes will automatically be set to the default value of only HANDLER_CAN_DEFAULT, which is by default read-only GET and GETNEXT requests. The other two mode options are read only, HANDLER_CAN_RONLY, and read/write, HANDLER_CAN_RWRITE.
.RE
.PP
.IP "\(bu" 2
HANDLER_CAN_GETANDGETNEXT
.IP "\(bu" 2
HANDLER_CAN_SET
.IP "\(bu" 2
HANDLER_CAN_GETBULK
.PP
.PP
.IP "\(bu" 2
HANDLER_CAN_RONLY (HANDLER_CAN_GETANDGETNEXT)
.IP "\(bu" 2
HANDLER_CAN_RWRITE (HANDLER_CAN_GETANDGETNEXT | HANDLER_CAN_SET)
.IP "\(bu" 2
HANDLER_CAN_DEFAULT HANDLER_CAN_RONLY
.PP
.PP
\fBReturns:\fP
.RS 4
Returns a pointer to a netsnmp_handler_registration struct. NULL is returned only when memory could not be allocated for the netsnmp_handler_registration struct.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBnetsnmp_create_handler()\fP 
.PP
\fBnetsnmp_register_handler()\fP 
.RE
.PP

.SS "\fBnetsnmp_handler_registration\fP * netsnmp_handler_registration_dup (\fBnetsnmp_handler_registration\fP * reginfo)"
.PP
duplicates the handler registration object 
.SS "void netsnmp_handler_registration_free (\fBnetsnmp_handler_registration\fP * reginfo)"
.PP
free the resources associated with a handler registration object 
.SS "int netsnmp_inject_handler (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_mib_handler\fP * handler)"
.PP
inject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. The new handler is injected at the top of the list and hence will be the new handler to be called first. 
.SS "int netsnmp_inject_handler_before (\fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_mib_handler\fP * handler, const char * before_what)"
.PP
inject a new handler into the calling chain of the handlers defined by the netsnmp_handler_registration pointer. The new handler is injected after the before_what handler, or if NULL at the top of the list and hence will be the new handler to be called first. 
.SS "int netsnmp_register_handler (\fBnetsnmp_handler_registration\fP * reginfo)"
.PP
register a handler, as defined by the netsnmp_handler_registration pointer. 
.SS "void netsnmp_register_handler_by_name (const char * name, \fBnetsnmp_mib_handler\fP * handler)"
.PP
registers a given handler by name so that it can be found easily later. 
.SS "int netsnmp_register_handler_nocallback (\fBnetsnmp_handler_registration\fP * reginfo)"
.PP
register a handler, as defined by the netsnmp_handler_registration pointer. 
.SS "void netsnmp_request_add_list_data (\fBnetsnmp_request_info\fP * request, \fBnetsnmp_data_list\fP * node)"
.PP
add data to a request that can be extracted later by submodules \fBParameters:\fP
.RS 4
\fIrequest\fP the netsnmp request info structure
.br
\fI\fBnode\fP\fP this is the data to be added to the linked list request->parent_data
.RE
.PP
\fBReturns:\fP
.RS 4
void 
.RE
.PP

.PP
\fBExamples: \fP
.in +1c
\fBdelayed_instance.c\fP.
.SS "void * netsnmp_request_get_list_data (\fBnetsnmp_request_info\fP * request, const char * name)"
.PP
extract data from a request that was added previously by a parent \fBmodule\fP \fBParameters:\fP
.RS 4
\fIrequest\fP the netsnmp request info function
.br
\fIname\fP used to compare against the request->parent_data->name value, if a match is found request->parent_data->data is returned
.RE
.PP
\fBReturns:\fP
.RS 4
a void pointer(request->parent_data->data), otherwise NULL is returned if request is NULL or request->parent_data is NULL or request->parent_data object is not found. 
.RE
.PP

.PP
\fBExamples: \fP
.in +1c
\fBdelayed_instance.c\fP.
.SS "int netsnmp_request_remove_list_data (\fBnetsnmp_request_info\fP * request, const char * name)"
.PP
remove data from a request \fBParameters:\fP
.RS 4
\fIrequest\fP the netsnmp request info structure
.br
\fIname\fP this is the name of the previously added data
.RE
.PP
\fBReturns:\fP
.RS 4
0 on successful find-and-delete, 1 otherwise. 
.RE
.PP

.SS "int netsnmp_unregister_handler (\fBnetsnmp_handler_registration\fP * reginfo)"
.PP
unregister a handler, as defined by the netsnmp_handler_registration pointer. 
.SH "Author"
.PP 
Generated automatically by Doxygen for net-snmp from the source code.
