| /* |
| * wrapper to call all the mib module initialization functions |
| */ |
| |
| #include <net-snmp/agent/mib_module_config.h> |
| #include <net-snmp/net-snmp-config.h> |
| #if HAVE_STRING_H |
| #include <string.h> |
| #else |
| #include <strings.h> |
| #endif |
| #if HAVE_STDLIB_H |
| #include <stdlib.h> |
| #endif |
| #if HAVE_UNISTD_H |
| #include <unistd.h> |
| #endif |
| #include <sys/types.h> |
| #if TIME_WITH_SYS_TIME |
| # include <sys/time.h> |
| # include <time.h> |
| #else |
| # if HAVE_SYS_TIME_H |
| # include <sys/time.h> |
| # else |
| # include <time.h> |
| # endif |
| #endif |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| |
| #include <net-snmp/net-snmp-includes.h> |
| #include <net-snmp/agent/net-snmp-agent-includes.h> |
| #include "m2m.h" |
| #ifdef USING_IF_MIB_DATA_ACCESS_INTERFACE_MODULE |
| #include <net-snmp/data_access/interface.h> |
| #endif |
| |
| #include "mibgroup/struct.h" |
| #include <net-snmp/agent/mib_modules.h> |
| #include <net-snmp/agent/table.h> |
| #include <net-snmp/agent/table_iterator.h> |
| #include "mib_module_includes.h" |
| |
| static int need_shutdown = 0; |
| |
| static int |
| _shutdown_mib_modules(int majorID, int minorID, void *serve, void *client) |
| { |
| if (! need_shutdown) { |
| netsnmp_assert(need_shutdown == 1); |
| } |
| else { |
| #include "mib_module_shutdown.h" |
| |
| need_shutdown = 0; |
| } |
| |
| return SNMPERR_SUCCESS; /* callback rc ignored */ |
| } |
| |
| void |
| init_mib_modules(void) |
| { |
| static int once = 0; |
| |
| #ifdef USING_IF_MIB_DATA_ACCESS_INTERFACE_MODULE |
| netsnmp_access_interface_init(); |
| #endif |
| # include "mib_module_inits.h" |
| |
| need_shutdown = 1; |
| |
| if (once == 0) { |
| int rc; |
| once = 1; |
| rc = snmp_register_callback( SNMP_CALLBACK_LIBRARY, |
| SNMP_CALLBACK_SHUTDOWN, |
| _shutdown_mib_modules, |
| NULL); |
| |
| if( rc != SNMP_ERR_NOERROR ) |
| snmp_log(LOG_ERR, "error registering for SHUTDOWN callback " |
| "for mib modules\n"); |
| } |
| } |