blob: aa57ddaedee95aff75ce175e0dba14e14a0955e3 [file] [log] [blame]
/* wrapper to call all the mib module initialization functions */
#include "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
# ifdef WIN32
# include <sys/timeb.h>
# else
# include <sys/time.h>
# endif
# 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
#if HAVE_WINSOCK_H
#include <winsock.h>
#endif
#if HAVE_DMALLOC_H
#include <dmalloc.h>
#endif
#include "asn1.h"
#include "snmp_api.h"
#include "snmp_impl.h"
#include "system.h"
#include "read_config.h"
#include "snmp.h"
#include "mib.h"
#include "m2m.h"
#include "snmp_agent.h"
#include "agent_handler.h"
#include "snmp_vars.h"
#include "agent_read_config.h"
#include "snmpv3.h"
#include "callback.h"
#include "snmp_alarm.h"
#include "default_store.h"
#include "snmp_debug.h"
#include "tools.h"
#include "ds_agent.h"
#include "snmp_secmod.h"
#include "mibgroup/struct.h"
#include "mib_modules.h"
#include "helpers/table.h"
#include "helpers/table_iterator.h"
#include "mib_module_includes.h"
#ifdef USING_AGENTX_SUBAGENT_MODULE
#include "mibgroup/agentx/subagent.h"
#endif
struct module_init_list *initlist = NULL;
struct module_init_list *noinitlist = NULL;
void
add_to_init_list(const char *module_list) {
struct module_init_list *newitem, **list;
char *cp;
if (module_list == NULL) {
return;
} else {
cp = (char *)module_list;
}
if (*cp == '-' || *cp == '!') {
cp++;
list = &noinitlist;
} else {
list = &initlist;
}
cp = strtok(cp, ", :");
while(cp) {
newitem = (struct module_init_list *)calloc(1, sizeof (*initlist));
newitem->module_name = strdup(cp);
newitem->next = *list;
*list = newitem;
cp = strtok(NULL, ", :");
}
}
int
should_init(const char *module_name) {
struct module_init_list *listp;
/* a definitive list takes priority */
if (initlist) {
listp = initlist;
while (listp) {
if (strcmp(listp->module_name, module_name) == 0) {
DEBUGMSGTL(("mib_init","initializing: %s\n",module_name));
return DO_INITIALIZE;
}
listp = listp->next;
}
DEBUGMSGTL(("mib_init","skipping: %s\n",module_name));
return DONT_INITIALIZE;
}
/* initialize it only if not on the bad list (bad module, no bone) */
if (noinitlist) {
listp = noinitlist;
while (listp) {
if (strcmp(listp->module_name, module_name) == 0) {
DEBUGMSGTL(("mib_init","skipping: %s\n",module_name));
return DONT_INITIALIZE;
}
listp = listp->next;
}
}
DEBUGMSGTL(("mib_init","initializing: %s\n",module_name));
/* initialize it */
return DO_INITIALIZE;
}
void
init_mib_modules(void) {
# include "mib_module_inits.h"
}