/****************************************************************************** * * * Function: process_trap * * * * Purpose: process a single trap * * * * Parameters: addr - [IN] address of the target interface(s) * * begin - [IN] beginning of the trap message * * end - [IN] end of the trap message * * * * Author: Rudolfs Kreicbergs * * * ******************************************************************************/ static void process_trap(const char *addr, char *begin, char *end) { zbx_timespec_t ts; zbx_uint64_t *interfaceids = NULL; int count, i, ret = FAIL; char *trap = NULL; zbx_timespec(&ts); trap = zbx_dsprintf(trap, "%s%s", begin, end); count = DCconfig_get_snmp_interfaceids_by_addr(addr, &interfaceids); for (i = 0; i < count; i++) { if (SUCCEED == process_trap_for_interface(interfaceids[i], trap, &ts)) ret = SUCCEED; } if (FAIL == ret) { zbx_config_t cfg; zbx_config_get(&cfg, ZBX_CONFIG_FLAGS_SNMPTRAP_LOGGING); if (ZBX_SNMPTRAP_LOGGING_ENABLED == cfg.snmptrap_logging) zabbix_log(LOG_LEVEL_WARNING, "unmatched trap received from \"%s\": %s", addr, trap); zbx_config_clean(&cfg); } zbx_free(interfaceids); zbx_free(trap); }
/****************************************************************************** * * * Function: process_trap * * * * Purpose: process a single trap * * * * Parameters: addr - [IN] address of the target interface(s) * * begin - [IN] beginning of the trap message * * end - [IN] end of the trap message * * * * Author: Rudolfs Kreicbergs * * * ******************************************************************************/ static void process_trap(const char *addr, char *begin, char *end) { zbx_timespec_t ts; zbx_uint64_t *interfaceids = NULL; int count, i, ret = FAIL; char *trap = NULL; zbx_timespec(&ts); trap = zbx_dsprintf(trap, "%s%s", begin, end); count = DCconfig_get_snmp_interfaceids_by_addr(addr, &interfaceids); for (i = 0; i < count; i++) { if (SUCCEED == process_trap_for_interface(interfaceids[i], trap, &ts)) ret = SUCCEED; } if (FAIL == ret && 1 == *(unsigned char *)DCconfig_get_config_data(&i, CONFIG_SNMPTRAP_LOGGING)) zabbix_log(LOG_LEVEL_WARNING, "unmatched trap received from \"%s\": %s", addr, trap); zbx_free(interfaceids); zbx_free(trap); }