.TH "A generic callback mechanism" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
.ad l
.nh
.SH NAME
A generic callback mechanism \- 
.SS "Defines"

.in +1c
.ti -1c
.RI "#define \fBCALLBACK_NAME_LOGGING\fP   1"
.br
.ti -1c
.RI "#define \fBLOCK_PER_CALLBACK_SUBID\fP   1"
.br
.ti -1c
.RI "#define \fBCALLBACK_LOCK\fP(maj, min)   ++_locks[maj][min]"
.br
.ti -1c
.RI "#define \fBCALLBACK_UNLOCK\fP(maj, min)   --_locks[maj][min]"
.br
.ti -1c
.RI "#define \fBCALLBACK_LOCK_COUNT\fP(maj, min)   _locks[maj][min]"
.br
.in -1c
.SS "Functions"

.in +1c
.ti -1c
.RI "NETSNMP_STATIC_INLINE int \fB_callback_lock\fP (int major, int minor, const char *warn, int assert)"
.br
.ti -1c
.RI "NETSNMP_STATIC_INLINE void \fB_callback_unlock\fP (int major, int minor)"
.br
.ti -1c
.RI "void \fBinit_callbacks\fP (void)"
.br
.ti -1c
.RI "int \fBsnmp_register_callback\fP (int major, int minor, SNMPCallback *new_callback, void *arg)"
.br
.RI "\fIThis function registers a generic callback function. \fP"
.ti -1c
.RI "int \fBnetsnmp_register_callback\fP (int major, int minor, SNMPCallback *new_callback, void *arg, int priority)"
.br
.ti -1c
.RI "int \fBsnmp_call_callbacks\fP (int major, int minor, void *caller_arg)"
.br
.RI "\fIThis function calls the callback function for each registered callback of type major and minor. \fP"
.ti -1c
.RI "int \fBsnmp_count_callbacks\fP (int major, int minor)"
.br
.ti -1c
.RI "int \fBsnmp_callback_available\fP (int major, int minor)"
.br
.ti -1c
.RI "int \fBsnmp_unregister_callback\fP (int major, int minor, SNMPCallback *target, void *arg, int matchargs)"
.br
.RI "\fIThis function unregisters a specified callback function given a major and minor type. \fP"
.ti -1c
.RI "int \fBnetsnmp_callback_clear_client_arg\fP (void *ptr, int i, int j)"
.br
.RI "\fIfind and clear client args that match ptr \fP"
.ti -1c
.RI "void \fBclear_callback\fP (void)"
.br
.ti -1c
.RI "struct \fBsnmp_gen_callback\fP * \fBsnmp_callback_list\fP (int major, int minor)"
.br
.in -1c
.SH "Function Documentation"
.PP 
.SS "int netsnmp_callback_clear_client_arg (void * ptr, int i, int j)"
.PP
find and clear client args that match ptr \fBParameters:\fP
.RS 4
\fIptr\fP pointer to search for 
.br
\fIi\fP callback id to start at 
.br
\fIj\fP callback subid to start at 
.RE
.PP

.PP
Definition at line 477 of file callback.c.
.SS "int snmp_call_callbacks (int major, int minor, void * caller_arg)"
.PP
This function calls the callback function for each registered callback of type major and minor. \fBParameters:\fP
.RS 4
\fImajor\fP is the SNMP callback major type used
.br
\fIminor\fP is the SNMP callback minor type used
.br
\fIcaller_arg\fP is a void pointer which is sent in as the callback's serverarg parameter, if needed.
.RE
.PP
\fBReturns:\fP
.RS 4
Returns SNMPERR_GENERR if major is >= MAX_CALLBACK_IDS or minor is >= MAX_CALLBACK_SUBIDS, otherwise SNMPERR_SUCCESS is returned.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBsnmp_register_callback\fP 
.PP
\fBsnmp_unregister_callback\fP 
.RE
.PP

.PP
Definition at line 301 of file callback.c.
.SS "int snmp_register_callback (int major, int minor, SNMPCallback * new_callback, void * arg)"
.PP
This function registers a generic callback function. The major and minor values are used to set the new_callback function into a global static multi-dimensional array of type struct \fBsnmp_gen_callback\fP. The function makes sure to append this callback function at the end of the link list, snmp_gen_callback->next.
.PP
\fBParameters:\fP
.RS 4
\fImajor\fP is the SNMP callback major type used
.IP "\(bu" 2
SNMP_CALLBACK_LIBRARY
.PP
.RE
.PP
.IP "\(bu" 2
SNMP_CALLBACK_APPLICATION
.PP
.PP
\fBParameters:\fP
.RS 4
\fIminor\fP is the SNMP callback minor type used
.IP "\(bu" 2
SNMP_CALLBACK_POST_READ_CONFIG
.IP "\(bu" 2
SNMP_CALLBACK_STORE_DATA
.IP "\(bu" 2
SNMP_CALLBACK_SHUTDOWN
.IP "\(bu" 2
SNMP_CALLBACK_POST_PREMIB_READ_CONFIG
.IP "\(bu" 2
SNMP_CALLBACK_LOGGING
.IP "\(bu" 2
SNMP_CALLBACK_SESSION_INIT
.PP
.br
\fInew_callback\fP is the callback function that is registered.
.br
\fIarg\fP when not NULL is a void pointer used whenever new_callback function is exercised.
.RE
.PP
\fBReturns:\fP
.RS 4
Returns SNMPERR_GENERR if major is >= MAX_CALLBACK_IDS or minor is >= MAX_CALLBACK_SUBIDS or a \fBsnmp_gen_callback\fP pointer could not be allocated, otherwise SNMPERR_SUCCESS is returned.
.IP "\(bu" 2
#define MAX_CALLBACK_IDS 2
.IP "\(bu" 2
#define MAX_CALLBACK_SUBIDS 16
.PP
.RE
.PP
\fBSee also:\fP
.RS 4
\fBsnmp_call_callbacks\fP 
.PP
\fBsnmp_unregister_callback\fP 
.RE
.PP

.PP
Definition at line 233 of file callback.c.
.SS "int snmp_unregister_callback (int major, int minor, SNMPCallback * target, void * arg, int matchargs)"
.PP
This function unregisters a specified callback function given a major and minor type. Note: no bound checking on major and minor.
.PP
\fBParameters:\fP
.RS 4
\fImajor\fP is the SNMP callback major type used
.br
\fIminor\fP is the SNMP callback minor type used
.br
\fItarget\fP is the callback function that will be unregistered.
.br
\fIarg\fP is a void pointer used for comparison against the registered callback's sc_client_arg \fBvariable\fP.
.br
\fImatchargs\fP is an integer used to bypass the comparison of arg and the callback's sc_client_arg \fBvariable\fP only when matchargs is set to 0.
.RE
.PP
\fBReturns:\fP
.RS 4
Returns the number of callbacks that were unregistered.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBsnmp_register_callback\fP 
.PP
\fBsnmp_call_callbacks\fP 
.RE
.PP

.PP
set cleanup flag? 
.PP
Definition at line 421 of file callback.c.
.SH "Author"
.PP 
Generated automatically by Doxygen for net-snmp from the source code.
