/* This file is automatically generated by configure.  Do not modify by hand. */

/* don't use hand -- use notepad !! */
/* The controlling defines are declared in mib_module_config.h */

  if (should_init("system_mib")) init_system_mib();
  if (should_init("sysORTable")) init_sysORTable();

#ifdef HAVE_WIN32_PLATFORM_SDK
  if (should_init("at")) init_at();
  if (should_init("interfaces")) init_interfaces();
  if (should_init("tcp")) init_tcp();
  if (should_init("tcpTable")) init_tcpTable();
  if (should_init("icmp")) init_icmp();
  if (should_init("ip")) init_ip();
  if (should_init("udp")) init_udp();
  if (should_init("udpTable")) init_udpTable();
  if (should_init("var_route")) init_var_route();
#endif

  if (should_init("snmp_mib")) init_snmp_mib();
  if (should_init("vacm_vars")) init_vacm_vars();
  if (should_init("setSerialNo")) init_setSerialNo();
#ifdef USING_UCD_SNMP_MODULE
  if (should_init("proc")) init_proc();
  if (should_init("versioninfo")) init_versioninfo();
  if (should_init("pass")) init_pass();
  if (should_init("pass_persist")) init_pass_persist();
#ifndef _MSC_VER
  if (should_init("disk")) init_disk();
#endif
#ifdef USING_UCD_SNMP_DLMOD_MODULE
  if (should_init("dlmod")) init_dlmod();
#endif
  if (should_init("loadave")) init_loadave();
  if (should_init("extensible")) init_extensible();
  if (should_init("extend")) init_extend();
  if (should_init("errormib")) init_errormib();
  if (should_init("file")) init_file();
  if (should_init("proxy")) init_proxy();
#endif
  if (should_init("snmpEngine")) init_snmpEngine();
  if (should_init("snmpMPDStats")) init_snmpMPDStats();
  if (should_init("usmStats")) init_usmStats();
  if (should_init("usmUser")) init_usmUser();
  if (should_init("snmpNotifyTable")) init_snmpNotifyTable();
  if (should_init("snmpNotifyFilterTable")) init_snmpNotifyFilterTable();
  if (should_init("snmpNotifyFilterProfileTable")) init_snmpNotifyFilterProfileTable();
  if (should_init("snmpTargetAddrEntry")) init_snmpTargetAddrEntry();
  if (should_init("snmpTargetParamsEntry")) init_snmpTargetParamsEntry();
  if (should_init("target_counters")) init_target_counters();
  if (should_init("nsTransactionTable")) init_nsTransactionTable();
  if (should_init("nsModuleTable")) init_nsModuleTable();
  if (should_init("nsDebug")) init_nsDebug();
  if (should_init("nsCache")) init_nsCache();
  if (should_init("nsLogging")) init_nsLogging();

#ifdef USING_HOST_MODULE
  if (should_init("hr_system")) init_hr_system();
  if (should_init("hr_storage")) init_hr_storage();
  if (should_init("hr_device")) init_hr_device();
  if (should_init("hr_other")) init_hr_other();
  if (should_init("hr_proc")) init_hr_proc();
  if (should_init("hr_network")) init_hr_network();
  if (should_init("hr_print")) init_hr_print();
  if (should_init("hr_disk")) init_hr_disk();
  if (should_init("hr_partition")) init_hr_partition();
  if (should_init("hr_filesys")) init_hr_filesys();
  if (should_init("hr_swrun")) init_hr_swrun();
  if (should_init("hr_swinst")) init_hr_swinst();
#endif

#ifdef USING_RMON_MODULE
  if (should_init("rows")) init_rows();
  if (should_init("agutil")) init_agutil();
  if (should_init("statistics")) init_statistics();
  if (should_init("alarm")) init_alarm();
  if (should_init("history")) init_history();
  if (should_init("event")) init_event();
#endif

  if (should_init("override")) init_override();

#ifdef USING_DISMAN_EVENT_MODULE
  if (should_init("mteTrigger")) init_mteTrigger();
  if (should_init("mteTriggerConf")) init_mteTriggerConf();
  if (should_init("mteTriggerTable")) init_mteTriggerTable();
  if (should_init("mteTriggerDeltaTable")) init_mteTriggerDeltaTable();
  if (should_init("mteTriggerExistenceTable")) init_mteTriggerExistenceTable();
  if (should_init("mteTriggerBooleanTable")) init_mteTriggerBooleanTable();
  if (should_init("mteTriggerThresholdTable")) init_mteTriggerThresholdTable();
  if (should_init("mteObjects")) init_mteObjects();
  if (should_init("mteObjectsConf")) init_mteObjectsConf();
  if (should_init("mteObjectsTable")) init_mteObjectsTable();
  if (should_init("mteEvent")) init_mteEvent();
  if (should_init("mteEventConf")) init_mteEventConf();
  if (should_init("mteEventTable")) init_mteEventTable();
  if (should_init("mteEventNotificationTable")) init_mteEventNotificationTable();
  if (should_init("mteEventSetTable")) init_mteEventSetTable();
#endif

  if (should_init("vacm_context")) init_vacm_context();

#ifdef USING_SMUX_MODULE
  if (should_init("smux")) init_smux();
#endif

#ifdef USING_EXAMPLES_EXAMPLE_MODULE
  if (should_init("example")) init_example();
#endif

#ifdef USING_EXAMPLES_UCDDEMOPUBLIC_MODULE
  if (should_init("ucdDemoPublic")) init_ucdDemoPublic();
#endif

#ifdef USING_MIBII_IPV6_MODULE
  if (should_init("ipv6")) init_ipv6();
#endif

#ifdef USING_WINEXTDLL_MODULE
  if (should_init("winExtDLL")) init_winExtDLL();
#endif

