/** * This function registers a generic callback function. The major and * minor values are used to set the new_callback function into a global * static multi-dimensional array of type struct snmp_gen_callback. * The function makes sure to append this callback function at the end * of the link list, snmp_gen_callback->next. * * @param major is the SNMP callback major type used * - SNMP_CALLBACK_LIBRARY * - SNMP_CALLBACK_APPLICATION * * @param minor is the SNMP callback minor type used * - SNMP_CALLBACK_POST_READ_CONFIG * - SNMP_CALLBACK_STORE_DATA * - SNMP_CALLBACK_SHUTDOWN * - SNMP_CALLBACK_POST_PREMIB_READ_CONFIG * - SNMP_CALLBACK_LOGGING * - SNMP_CALLBACK_SESSION_INIT * * @param new_callback is the callback function that is registered. * * @param arg when not NULL is a void pointer used whenever new_callback * function is exercised. * * @return * Returns SNMPERR_GENERR if major is >= MAX_CALLBACK_IDS or minor is >= * MAX_CALLBACK_SUBIDS or a snmp_gen_callback pointer could not be * allocated, otherwise SNMPERR_SUCCESS is returned. * - \#define MAX_CALLBACK_IDS 2 * - \#define MAX_CALLBACK_SUBIDS 16 * * @see snmp_call_callbacks * @see snmp_unregister_callback */ int snmp_register_callback(int major, int minor, SNMPCallback * new_callback, void *arg) { return netsnmp_register_callback( major, minor, new_callback, arg, NETSNMP_CALLBACK_DEFAULT_PRIORITY); }
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 }