.TH "old_api" 3 "31 May 2012" "Version 5.5.2.rc2" "net-snmp" \" -*- nroff -*-
.ad l
.nh
.SH NAME
old_api \- 
.PP
Calls mib \fBmodule\fP code written in the old style of code.  

.SS "Functions"

.in +1c
.ti -1c
.RI "\fBnetsnmp_mib_handler\fP * \fBget_old_api_handler\fP (void)"
.br
.RI "\fIreturns a old_api handler that should be the final calling handler. \fP"
.ti -1c
.RI "int \fBnetsnmp_register_old_api\fP (const char *moduleName, struct \fBvariable\fP *var, size_t varsize, size_t numvars, oid *mibloc, size_t mibloclen, int priority, int range_subid, oid range_ubound, \fBnetsnmp_session\fP *ss, const char *context, int timeout, int flags)"
.br
.RI "\fIRegisters an old API set into the mib \fBtree\fP. \fP"
.ti -1c
.RI "int \fBnetsnmp_register_mib_table_row\fP (const char *moduleName, struct \fBvariable\fP *var, size_t varsize, size_t numvars, oid *mibloc, size_t mibloclen, int priority, int var_subid, \fBnetsnmp_session\fP *ss, const char *context, int timeout, int flags)"
.br
.RI "\fIregisters a row within a mib table \fP"
.ti -1c
.RI "int \fBnetsnmp_old_api_helper\fP (\fBnetsnmp_mib_handler\fP *handler, \fBnetsnmp_handler_registration\fP *reginfo, \fBnetsnmp_agent_request_info\fP *reqinfo, \fBnetsnmp_request_info\fP *requests)"
.br
.RI "\fIimplements the old_api handler \fP"
.in -1c
.SH "Detailed Description"
.PP 
Calls mib \fBmodule\fP code written in the old style of code. 

This is a backwards compatilibity \fBmodule\fP that allows code written in the old API to be run under the new handler based architecture. Use it by calling \fBnetsnmp_register_old_api()\fP. 
.SH "Function Documentation"
.PP 
.SS "\fBnetsnmp_mib_handler\fP* get_old_api_handler (void)"
.PP
returns a old_api handler that should be the final calling handler. Don't use this function. Use the \fBnetsnmp_register_old_api()\fP function instead. 
.PP
Definition at line 38 of file old_api.c.
.SS "int netsnmp_old_api_helper (\fBnetsnmp_mib_handler\fP * handler, \fBnetsnmp_handler_registration\fP * reginfo, \fBnetsnmp_agent_request_info\fP * reqinfo, \fBnetsnmp_request_info\fP * requests)"
.PP
implements the old_api handler 
.PP
Definition at line 235 of file old_api.c.
.SS "int netsnmp_register_mib_table_row (const char * moduleName, struct \fBvariable\fP * var, size_t varsize, size_t numvars, oid * mibloc, size_t mibloclen, int priority, int var_subid, \fBnetsnmp_session\fP * ss, const char * context, int timeout, int flags)"
.PP
registers a row within a mib table 
.PP
Definition at line 116 of file old_api.c.
.SS "int netsnmp_register_old_api (const char * moduleName, struct \fBvariable\fP * var, size_t varsize, size_t numvars, oid * mibloc, size_t mibloclen, int priority, int range_subid, oid range_ubound, \fBnetsnmp_session\fP * ss, const char * context, int timeout, int flags)"
.PP
Registers an old API set into the mib \fBtree\fP. Functionally this mimics the old register_mib_context() function (and in fact the new register_mib_context() function merely calls this new old_api one). 
.PP
netsnmp_handler_registration_free(reginfo); already freed 
.PP
Definition at line 49 of file old_api.c.
.SH "Author"
.PP 
Generated automatically by Doxygen for net-snmp from the source code.
