/** Initializes the mteEvent module */ void init_mteEvent (void) { static int _defaults_init = 0; init_event_table_data (); /* * Insert fixed events for the default trigger notifications * * NB: internal events (with an owner of "_snmpd") will not in * fact refer to the mteObjectsTable for the payload varbinds. * The routine mteObjects_internal_vblist() hardcodes the * appropriate varbinds for these internal events. * This routine will need to be updated whenever a new * internal event is added. */ if (_defaults_init) return; _init_default_mteEvent ("mteTriggerFired", "_triggerFire", 1); _init_default_mteEvent ("mteTriggerRising", "_triggerFire", 2); _init_default_mteEvent ("mteTriggerFalling", "_triggerFire", 3); _init_default_mteEvent ("mteTriggerFailure", "_triggerFail", 4); _init_link_mteEvent ("linkDown", "_linkUpDown", 3); _init_link_mteEvent ("linkUp", "_linkUpDown", 4); _defaults_init = 1; }
/* Initializes the mteEventTable module */ void init_mteEventTable(void) { static oid mteEventTable_oid[] = { 1, 3, 6, 1, 2, 1, 88, 1, 4, 2 }; size_t mteEventTable_oid_len = OID_LENGTH(mteEventTable_oid); netsnmp_handler_registration *reg; /* * Ensure the (combined) table container is available... */ init_event_table_data(); /* * ... then set up the MIB interface to the mteEventTable slice */ #ifndef NETSNMP_NO_WRITE_SUPPORT reg = netsnmp_create_handler_registration("mteEventTable", mteEventTable_handler, mteEventTable_oid, mteEventTable_oid_len, HANDLER_CAN_RWRITE); #else /* !NETSNMP_NO_WRITE_SUPPORT */ reg = netsnmp_create_handler_registration("mteEventTable", mteEventTable_handler, mteEventTable_oid, mteEventTable_oid_len, HANDLER_CAN_RONLY); #endif /* !NETSNMP_NO_WRITE_SUPPORT */ table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info); netsnmp_table_helper_add_indexes(table_info, ASN_OCTET_STR, /* index: mteOwner */ /* index: mteEventName */ ASN_PRIV_IMPLIED_OCTET_STR, 0); table_info->min_column = COLUMN_MTEEVENTCOMMENT; table_info->max_column = COLUMN_MTEEVENTENTRYSTATUS; /* Register this using the (common) event_table_data container */ netsnmp_tdata_register(reg, event_table_data, table_info); DEBUGMSGTL(("disman:event:init", "Event Table container (%p)\n", event_table_data)); }
/** Initializes the mteEventsConf module */ void init_mteEventConf(void) { init_event_table_data(); /* * Register config handlers for user-level (fixed) events.... */ snmpd_register_config_handler("notificationEvent", parse_notificationEvent, NULL, "eventname notifyOID [-m] [-i OID|-o OID]*"); snmpd_register_config_handler("setEvent", parse_setEvent, NULL, "eventname [-I] OID = value"); netsnmp_ds_register_config(ASN_BOOLEAN, netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_APPTYPE), "strictDisman", NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_STRICT_DISMAN); /* * ... and for persistent storage of dynamic event table entries. * * (The previous implementation didn't store these entries, * so we don't need to worry about backwards compatability) */ snmpd_register_config_handler("_mteETable", parse_mteETable, NULL, NULL); snmpd_register_config_handler("_mteENotTable", parse_mteENotTable, NULL, NULL); snmpd_register_config_handler("_mteESetTable", parse_mteESetTable, NULL, NULL); /* * Register to save (non-fixed) entries when the agent shuts down */ snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA, store_mteETable, NULL); snmp_register_callback(SNMP_CALLBACK_APPLICATION, SNMPD_CALLBACK_PRE_UPDATE_CONFIG, clear_mteETable, NULL); }
/* Initializes the mteEventNotificationTable module */ void init_mteEventNotificationTable(void) { static oid mteEventNotificationTable_oid[] = { 1, 3, 6, 1, 2, 1, 88, 1, 4, 3 }; size_t mteEventNotificationTable_oid_len = OID_LENGTH(mteEventNotificationTable_oid); netsnmp_handler_registration *reg; netsnmp_table_registration_info *table_info; /* * Ensure the (combined) table container is available... */ init_event_table_data(); /* * ... then set up the MIB interface to the mteEventNotificationTable slice */ reg = netsnmp_create_handler_registration("mteEventNotificationTable", mteEventNotificationTable_handler, mteEventNotificationTable_oid, mteEventNotificationTable_oid_len, HANDLER_CAN_RWRITE); table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info); netsnmp_table_helper_add_indexes(table_info, ASN_OCTET_STR, /* index: mteOwner */ /* index: mteEventName */ ASN_PRIV_IMPLIED_OCTET_STR, 0); table_info->min_column = COLUMN_MTEEVENTNOTIFICATION; table_info->max_column = COLUMN_MTEEVENTNOTIFICATIONOBJECTS; /* Register this using the (common) event_table_data container */ netsnmp_tdata_register(reg, event_table_data, table_info); DEBUGMSGTL(("disman:event:init", "Event Notify Table container (%x)\n", event_table_data)); }