.TH "Net-SNMP Agent handler and extensibility API" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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, 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, 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, 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.
