void snmp_debug_init(void) { debugindentchars[0] = '\0'; /* zero out the debugging indent array. */ /* * Hmmm.... * this "init" routine seems to be called *after* processing * the command line options. So we can't clear the debug * token array here, and will just have to rely on it being * initialised to 0 automatically. * So much for trying to program responsibly :-) */ /* memset(dbg_tokens, 0, MAX_DEBUG_TOKENS*sizeof(struct token_dscr)); */ register_prenetsnmp_mib_handler("snmp", "doDebugging", debug_config_turn_on_debugging, NULL, "(1|0)"); register_prenetsnmp_mib_handler("snmp", "debugTokens", debug_config_register_tokens, NULL, "token[,token...]"); #ifdef NETSNMP_DEBUG_STATS /* * debug stats */ dbg_stats = netsnmp_container_find("debug_exclude:table_container"); if (NULL != dbg_stats) { dbg_stats->compare = _debug_cmp; netsnmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA, _debug_stats_callback, dbg_stats, 1024); } #endif }
void init_snmp_logging(void) { netsnmp_ds_register_premib(ASN_BOOLEAN, "snmp", "logTimestamp", NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_LOG_TIMESTAMP); register_prenetsnmp_mib_handler("snmp", "logOption", parse_config_logOption, NULL, "string"); }
/*******************************************************************-o-****** * init_snmpv3 * * Parameters: * *type Label for the config file "type" used by calling entity. * * Set time and engineID. * Set parsing functions for config file tokens. * Initialize SNMP Crypto API (SCAPI). */ void init_snmpv3(const char *type) { #if SNMP_USE_TIMES struct tms dummy; /* fixme: -1 is fault code... */ snmpv3startClock = times(&dummy); /* remember how many ticks per second there are, since times() returns this */ clockticks = sysconf(_SC_CLK_TCK); #endif /* SNMP_USE_TIMES */ gettimeofday(&snmpv3starttime, NULL); if (!type) type = "__snmpapp__"; /* * we need to be called back later */ snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_POST_READ_CONFIG, init_snmpv3_post_config, NULL); snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_POST_PREMIB_READ_CONFIG, init_snmpv3_post_premib_config, NULL); /* * we need to be called back later */ snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA, snmpv3_store, (void *) strdup(type)); /* * Free stuff at shutdown time */ snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN, free_enginetime_on_shutdown, NULL); /* * initialize submodules */ /* * NOTE: this must be after the callbacks are registered above, * since they need to be called before the USM callbacks. */ init_secmod(); /* * register all our configuration handlers (ack, there's a lot) */ /* * handle engineID setup before everything else which may depend on it */ register_prenetsnmp_mib_handler(type, "engineID", engineID_conf, NULL, "string"); register_prenetsnmp_mib_handler(type, "oldEngineID", oldengineID_conf, NULL, NULL); register_prenetsnmp_mib_handler(type, "engineIDType", engineIDType_conf, NULL, "num"); register_prenetsnmp_mib_handler(type, "engineIDNic", engineIDNic_conf, NULL, "string"); register_config_handler(type, "engineBoots", engineBoots_conf, NULL, NULL); /* * default store config entries */ netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defSecurityName", NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_SECNAME); netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defContext", NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_CONTEXT); netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defPassphrase", NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PASSPHRASE); netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defAuthPassphrase", NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_AUTHPASSPHRASE); netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defPrivPassphrase", NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRIVPASSPHRASE); netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defAuthMasterKey", NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_AUTHMASTERKEY); netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defPrivMasterKey", NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRIVMASTERKEY); netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defAuthLocalizedKey", NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_AUTHLOCALIZEDKEY); netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "defPrivLocalizedKey", NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRIVLOCALIZEDKEY); register_config_handler("snmp", "defVersion", version_conf, NULL, "1|2c|3"); register_config_handler("snmp", "defAuthType", snmpv3_authtype_conf, NULL, "MD5|SHA"); register_config_handler("snmp", "defPrivType", snmpv3_privtype_conf, NULL, #ifdef HAVE_AES "DES|AES"); #else "DES (AES support not available)"); #endif register_config_handler("snmp", "defSecurityLevel", snmpv3_secLevel_conf, NULL, "noAuthNoPriv|authNoPriv|authPriv"); register_config_handler(type, "userSetAuthPass", usm_set_password, NULL, NULL); register_config_handler(type, "userSetPrivPass", usm_set_password, NULL, NULL); register_config_handler(type, "userSetAuthKey", usm_set_password, NULL, NULL); register_config_handler(type, "userSetPrivKey", usm_set_password, NULL, NULL); register_config_handler(type, "userSetAuthLocalKey", usm_set_password, NULL, NULL); register_config_handler(type, "userSetPrivLocalKey", usm_set_password, NULL, NULL); }