.TH "old_api" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 37 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 226 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 107 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 48 of file old_api.c.
.SH "Author"
.PP 
Generated automatically by Doxygen for net-snmp from the source code.
