You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
suricata/src/util-error.c

370 lines
15 KiB
C

/* Copyright (C) 2007-2010 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* version 2 along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
/**
* \file
*
* \author Anoop Saldanha <anoopsaldanha@gmail.com>
*
* Error utility functions
*
* \todo Needs refining of the error codes. Renaming with a prefix of SC_ERR,
* removal of duplicates and entries have to be made in util-error.c
*/
#include "util-error.h"
#define CASE_CODE(E) case E: return #E
/**
* \brief Maps the error code, to its string equivalent
*
* \param The error code
*
* \retval The string equivalent for the error code
*/
const char * SCErrorToString(SCError err)
{
switch (err) {
CASE_CODE (SC_OK);
CASE_CODE (SC_ERR_MEM_ALLOC);
CASE_CODE (SC_ERR_ACTION_ORDER);
CASE_CODE (SC_ERR_PCRE_MATCH);
CASE_CODE (SC_ERR_PCRE_GET_SUBSTRING);
CASE_CODE (SC_ERR_PCRE_COMPILE);
CASE_CODE (SC_ERR_PCRE_STUDY);
CASE_CODE (SC_ERR_PCRE_PARSE);
CASE_CODE (SC_ERR_LOG_MODULE_NOT_INIT);
CASE_CODE (SC_ERR_LOG_FG_FILTER_MATCH);
CASE_CODE (SC_ERR_PCAP_DISPATCH);
CASE_CODE (SC_ERR_PCAP_CREATE);
CASE_CODE (SC_ERR_PCAP_SET_SNAPLEN);
CASE_CODE (SC_ERR_PCAP_SET_PROMISC);
CASE_CODE (SC_ERR_PCAP_SET_TIMEOUT);
CASE_CODE (SC_ERR_PCAP_OPEN_LIVE);
CASE_CODE (SC_ERR_PCAP_OPEN_OFFLINE);
CASE_CODE (SC_ERR_PCAP_ACTIVATE_HANDLE);
CASE_CODE (SC_ERR_PCAP_SET_BUFF_SIZE);
CASE_CODE (SC_ERR_NO_PCAP_SET_BUFFER_SIZE);
CASE_CODE (SC_ERR_NO_PF_RING);
CASE_CODE (SC_ERR_PF_RING_RECV);
CASE_CODE (SC_ERR_PF_RING_GET_CLUSTERID_FAILED);
CASE_CODE (SC_ERR_PF_RING_GET_INTERFACE_FAILED);
CASE_CODE (SC_ERR_PF_RING_OPEN);
CASE_CODE (SC_ERR_GET_CLUSTER_TYPE_FAILED);
CASE_CODE (SC_ERR_INVALID_CLUSTER_TYPE);
CASE_CODE (SC_ERR_PF_RING_SET_CLUSTER_FAILED);
CASE_CODE (SC_ERR_DATALINK_UNIMPLEMENTED);
CASE_CODE (SC_ERR_INVALID_SIGNATURE);
CASE_CODE (SC_ERR_OPENING_FILE);
CASE_CODE (SC_ERR_OPENING_RULE_FILE);
CASE_CODE (SC_ERR_NO_RULES);
CASE_CODE (SC_ERR_NO_RULES_LOADED);
CASE_CODE (SC_ERR_COUNTER_EXCEEDED);
CASE_CODE (SC_ERR_INVALID_CHECKSUM);
CASE_CODE (SC_ERR_SPRINTF);
CASE_CODE (SC_ERR_FATAL);
CASE_CODE (SC_ERR_INVALID_ARGUMENT);
CASE_CODE (SC_ERR_SPINLOCK);
CASE_CODE (SC_ERR_INVALID_ENUM_MAP);
CASE_CODE (SC_ERR_INVALID_IP_NETBLOCK);
CASE_CODE (SC_ERR_INVALID_IPV4_ADDR);
CASE_CODE (SC_ERR_INVALID_IPV6_ADDR);
CASE_CODE (SC_ERR_INVALID_RUNMODE);
CASE_CODE (SC_ERR_COMPLETE_PORT_SPACE_NEGATED);
CASE_CODE (SC_ERR_NO_PORTS_LEFT_AFTER_MERGE);
CASE_CODE (SC_ERR_NEGATED_VALUE_IN_PORT_RANGE);
CASE_CODE (SC_ERR_PORT_PARSE_INSERT_STRING);
CASE_CODE (SC_ERR_UNREACHABLE_CODE_REACHED);
CASE_CODE (SC_ERR_INVALID_NUMERIC_VALUE);
CASE_CODE (SC_ERR_NUMERIC_VALUE_ERANGE);
CASE_CODE (SC_ERR_INVALID_NUM_BYTES);
CASE_CODE (SC_ERR_ARG_LEN_LONG);
CASE_CODE (SC_ERR_ALPARSER);
CASE_CODE (SC_ERR_POOL_EMPTY);
CASE_CODE (SC_ERR_REASSEMBLY);
CASE_CODE (SC_ERR_POOL_INIT);
CASE_CODE (SC_ERR_UNIMPLEMENTED);
CASE_CODE (SC_ERR_ADDRESS_ENGINE_GENERIC);
CASE_CODE (SC_ERR_PORT_ENGINE_GENERIC);
CASE_CODE (SC_ERR_FAST_LOG_GENERIC);
CASE_CODE (SC_ERR_IPONLY_RADIX);
CASE_CODE (SC_ERR_DEBUG_LOG_GENERIC);
CASE_CODE (SC_ERR_UNIFIED_LOG_GENERIC);
CASE_CODE (SC_ERR_HTTP_LOG_GENERIC);
CASE_CODE (SC_ERR_FTP_LOG_GENERIC);
CASE_CODE (SC_ERR_UNIFIED_ALERT_GENERIC);
CASE_CODE (SC_ERR_UNIFIED2_ALERT_GENERIC);
CASE_CODE (SC_ERR_FWRITE);
CASE_CODE (SC_ERR_FOPEN);
CASE_CODE (SC_ERR_THREAD_NICE_PRIO);
CASE_CODE (SC_ERR_THREAD_SPAWN);
CASE_CODE (SC_ERR_THREAD_CREATE);
CASE_CODE (SC_ERR_THREAD_INIT);
CASE_CODE (SC_ERR_THREAD_DEINIT);
CASE_CODE (SC_ERR_THRESHOLD_HASH_ADD);
CASE_CODE (SC_ERR_UNDEFINED_VAR);
CASE_CODE (SC_ERR_RULE_KEYWORD_UNKNOWN);
CASE_CODE (SC_ERR_FLAGS_MODIFIER);
CASE_CODE (SC_ERR_DISTANCE_MISSING_CONTENT);
CASE_CODE (SC_ERR_BYTETEST_MISSING_CONTENT);
CASE_CODE (SC_ERR_BYTEJUMP_MISSING_CONTENT);
CASE_CODE (SC_ERR_WITHIN_MISSING_CONTENT);
CASE_CODE (SC_ERR_WITHIN_INVALID);
CASE_CODE (SC_ERR_DEPTH_MISSING_CONTENT);
CASE_CODE (SC_ERR_OFFSET_MISSING_CONTENT);
CASE_CODE (SC_ERR_NOCASE_MISSING_PATTERN);
CASE_CODE (SC_ERR_RAWBYTES_MISSING_CONTENT);
CASE_CODE (SC_ERR_NO_URICONTENT_NEGATION);
CASE_CODE (SC_ERR_HASH_TABLE_INIT);
CASE_CODE (SC_ERR_STAT);
CASE_CODE (SC_ERR_LOGDIR_CONFIG);
CASE_CODE (SC_ERR_LOGDIR_CMDLINE);
CASE_CODE (SC_ERR_RADIX_TREE_GENERIC);
CASE_CODE (SC_ERR_MISSING_QUOTE);
CASE_CODE (SC_ERR_UNKNOWN_PROTOCOL);
CASE_CODE (SC_ERR_UNKNOWN_RUN_MODE);
CASE_CODE (SC_ERR_IPFW_NOSUPPORT);
CASE_CODE (SC_ERR_IPFW_BIND);
CASE_CODE (SC_ERR_IPFW_SOCK);
CASE_CODE (SC_ERR_IPFW_SETSOCKOPT);
CASE_CODE (SC_ERR_IPFW_NOPORT);
CASE_CODE (SC_WARN_IPFW_RECV);
CASE_CODE (SC_WARN_IPFW_XMIT);
CASE_CODE (SC_WARN_IPFW_SETSOCKOPT);
CASE_CODE (SC_WARN_IPFW_UNBIND);
CASE_CODE (SC_ERR_MULTIPLE_RUN_MODE);
CASE_CODE (SC_ERR_BPF);
CASE_CODE (SC_ERR_MISSING_CONFIG_PARAM);
CASE_CODE (SC_ERR_UNKNOWN_VALUE);
CASE_CODE (SC_ERR_INVALID_VALUE);
CASE_CODE (SC_ERR_UNKNOWN_REGEX_MOD);
CASE_CODE (SC_ERR_INVALID_OPERATOR);
CASE_CODE (SC_ERR_PCAP_RECV_INIT);
CASE_CODE (SC_ERR_NFQ_NOSUPPORT);
CASE_CODE (SC_ERR_NFQ_UNBIND);
CASE_CODE (SC_ERR_NFQ_BIND);
CASE_CODE (SC_ERR_NFQ_HANDLE_PKT);
CASE_CODE (SC_ERR_NFLOG_NOSUPPORT);
CASE_CODE (SC_ERR_NFLOG_OPEN);
CASE_CODE (SC_ERR_NFLOG_BIND);
CASE_CODE (SC_ERR_NFLOG_UNBIND);
CASE_CODE (SC_ERR_NFLOG_MAX_BUFSIZ);
CASE_CODE (SC_ERR_NFLOG_SET_MODE);
CASE_CODE (SC_ERR_NFLOG_HANDLE_PKT);
CASE_CODE (SC_ERR_NFLOG_GROUP);
CASE_CODE (SC_ERR_NFLOG_FD);
CASE_CODE (SC_WARN_NFLOG_SETSOCKOPT);
CASE_CODE (SC_WARN_NFLOG_RECV);
CASE_CODE (SC_WARN_NFLOG_LOSING_EVENTS);
CASE_CODE (SC_WARN_NFLOG_MAXBUFSIZ_REACHED);
CASE_CODE (SC_ERR_CUDA_ERROR);
CASE_CODE (SC_ERR_CUDA_HANDLER_ERROR);
CASE_CODE (SC_ERR_TM_THREADS_ERROR);
CASE_CODE (SC_ERR_TM_MODULES_ERROR);
CASE_CODE (SC_ERR_AC_CUDA_ERROR);
CASE_CODE (SC_ERR_INVALID_YAML_CONF_ENTRY);
CASE_CODE (SC_ERR_TMQ_ALREADY_REGISTERED);
CASE_CODE (SC_ERR_CONFLICTING_RULE_KEYWORDS);
CASE_CODE (SC_ERR_INITIALIZATION);
CASE_CODE (SC_ERR_INVALID_ACTION);
CASE_CODE (SC_ERR_LIBNET_REQUIRED_FOR_ACTION);
CASE_CODE (SC_ERR_LIBNET_INIT);
CASE_CODE (SC_ERR_LIBNET_INVALID_DIR);
CASE_CODE (SC_ERR_LIBNET_BUILD_FAILED);
CASE_CODE (SC_ERR_LIBNET_WRITE_FAILED);
CASE_CODE (SC_ERR_LIBNET_NOT_ENABLED);
CASE_CODE (SC_ERR_UNIFIED_LOG_FILE_HEADER);
CASE_CODE (SC_ERR_REFERENCE_UNKNOWN);
CASE_CODE (SC_ERR_PIDFILE_SNPRINTF);
CASE_CODE (SC_ERR_PIDFILE_OPEN);
CASE_CODE (SC_ERR_PIDFILE_WRITE);
CASE_CODE (SC_ERR_PIDFILE_DAEMON);
CASE_CODE (SC_ERR_UID_FAILED);
CASE_CODE (SC_ERR_GID_FAILED);
CASE_CODE (SC_ERR_CHANGING_CAPS_FAILED);
CASE_CODE (SC_ERR_LIBCAP_NG_REQUIRED);
CASE_CODE (SC_ERR_LIBNET11_INCOMPATIBLE_WITH_LIBCAP_NG);
CASE_CODE (SC_ERR_PLEDGE_FAILED);
CASE_CODE (SC_WARN_FLOW_EMERGENCY);
CASE_CODE (SC_ERR_SVC);
CASE_CODE (SC_ERR_ERF_DAG_OPEN_FAILED);
CASE_CODE (SC_ERR_ERF_DAG_STREAM_OPEN_FAILED);
CASE_CODE (SC_ERR_ERF_DAG_STREAM_START_FAILED);
CASE_CODE (SC_ERR_ERF_DAG_STREAM_SET_FAILED);
CASE_CODE (SC_ERR_ERF_DAG_STREAM_READ_FAILED);
CASE_CODE (SC_WARN_ERF_DAG_REC_LEN_CHANGED);
CASE_CODE (SC_ERR_NAPATECH_OPEN_FAILED);
CASE_CODE (SC_ERR_NAPATECH_STREAM_NEXT_FAILED);
CASE_CODE (SC_ERR_NAPATECH_NOSUPPORT);
CASE_CODE (SC_ERR_NAPATECH_REQUIRED);
CASE_CODE (SC_ERR_NAPATECH_TIMESTAMP_TYPE_NOT_SUPPORTED);
CASE_CODE (SC_ERR_NAPATECH_INIT_FAILED);
CASE_CODE (SC_ERR_NAPATECH_CONFIG_STREAM);
CASE_CODE (SC_ERR_NAPATECH_STREAMS_REGISTER_FAILED);
CASE_CODE (SC_ERR_NAPATECH_STAT_DROPS_FAILED);
CASE_CODE (SC_ERR_NAPATECH_PARSE_CONFIG);
CASE_CODE (SC_WARN_COMPATIBILITY);
CASE_CODE (SC_ERR_DCERPC);
CASE_CODE (SC_ERR_DETECT_PREPARE);
CASE_CODE (SC_ERR_AHO_CORASICK);
CASE_CODE (SC_ERR_REFERENCE_CONFIG);
CASE_CODE (SC_ERR_DUPLICATE_SIG);
CASE_CODE (SC_WARN_PCAP_MULTI_DEV_EXPERIMENTAL);
CASE_CODE (SC_ERR_PCAP_MULTI_DEV_NO_SUPPORT);
CASE_CODE (SC_ERR_HTTP_METHOD_NEEDS_PRECEEDING_CONTENT);
CASE_CODE (SC_ERR_HTTP_METHOD_INCOMPATIBLE_WITH_RAWBYTES);
CASE_CODE (SC_ERR_HTTP_METHOD_RELATIVE_MISSING);
CASE_CODE (SC_ERR_HTTP_COOKIE_NEEDS_PRECEEDING_CONTENT);
CASE_CODE (SC_ERR_HTTP_COOKIE_INCOMPATIBLE_WITH_RAWBYTES);
CASE_CODE (SC_ERR_HTTP_COOKIE_RELATIVE_MISSING);
CASE_CODE (SC_ERR_LOGPCAP_SGUIL_BASE_DIR_MISSING);
CASE_CODE (SC_ERR_UNKNOWN_DECODE_EVENT);
CASE_CODE (SC_ERR_RUNMODE);
CASE_CODE (SC_ERR_SHUTDOWN);
CASE_CODE (SC_ERR_INVALID_DIRECTION);
CASE_CODE (SC_ERR_AFP_CREATE);
CASE_CODE (SC_ERR_AFP_READ);
CASE_CODE (SC_ERR_AFP_DISPATCH);
CASE_CODE (SC_ERR_CMD_LINE);
CASE_CODE (SC_ERR_SIZE_PARSE);
CASE_CODE (SC_ERR_RAWBYTES_BUFFER);
CASE_CODE (SC_ERR_SOCKET);
CASE_CODE (SC_ERR_PCAP_TRANSLATE);
CASE_CODE (SC_WARN_OUTDATED_LIBHTP);
CASE_CODE (SC_WARN_DEPRECATED);
CASE_CODE (SC_WARN_PROFILE);
CASE_CODE (SC_ERR_FLOW_INIT);
CASE_CODE (SC_ERR_HOST_INIT);
CASE_CODE (SC_ERR_MEM_BUFFER_API);
CASE_CODE (SC_ERR_INVALID_MD5);
CASE_CODE (SC_ERR_NO_MD5_SUPPORT);
CASE_CODE (SC_ERR_EVENT_ENGINE);
CASE_CODE (SC_ERR_NO_LUA_SUPPORT);
CASE_CODE (SC_ERR_LUA_ERROR);
CASE_CODE (SC_ERR_NO_GEOIP_SUPPORT);
CASE_CODE (SC_ERR_GEOIP_ERROR);
CASE_CODE (SC_ERR_DEFRAG_INIT);
CASE_CODE (SC_ERR_NO_REPUTATION);
CASE_CODE (SC_ERR_NOT_SUPPORTED);
CASE_CODE (SC_ERR_LIVE_RULE_SWAP);
CASE_CODE (SC_WARN_UNCOMMON);
CASE_CODE (SC_ERR_SYSCALL);
CASE_CODE (SC_ERR_SYSCONF);
CASE_CODE (SC_ERR_INVALID_ARGUMENTS);
CASE_CODE (SC_ERR_STATS_NOT_INIT);
CASE_CODE (SC_ERR_NFQ_OPEN);
CASE_CODE (SC_ERR_NFQ_MAXLEN);
CASE_CODE (SC_ERR_NFQ_CREATE_QUEUE);
CASE_CODE (SC_ERR_NFQ_SET_MODE);
CASE_CODE (SC_ERR_NFQ_SETSOCKOPT);
CASE_CODE (SC_ERR_NFQ_RECV);
CASE_CODE (SC_ERR_NFQ_SET_VERDICT);
CASE_CODE (SC_ERR_NFQ_THREAD_INIT);
CASE_CODE (SC_ERR_DAEMON);
CASE_CODE (SC_ERR_TLS_LOG_GENERIC);
CASE_CODE (SC_ERR_MUTEX);
CASE_CODE (SC_ERR_REPUTATION_INVALID_OPERATION);
CASE_CODE (SC_ERR_REPUTATION_INVALID_TYPE);
CASE_CODE (SC_ERR_BYTE_EXTRACT_FAILED);
CASE_CODE (SC_ERR_DAG_REQUIRED);
CASE_CODE (SC_ERR_DAG_NOSUPPORT);
CASE_CODE (SC_ERR_NO_AF_PACKET);
CASE_CODE (SC_ERR_PCAP_FILE_DELETE_FAILED);
CASE_CODE (SC_ERR_MAGIC_OPEN);
CASE_CODE (SC_ERR_MAGIC_LOAD);
CASE_CODE (SC_ERR_CUDA_BUFFER_ERROR);
CASE_CODE (SC_ERR_DNS_LOG_GENERIC);
CASE_CODE (SC_WARN_OPTION_OBSOLETE);
CASE_CODE (SC_WARN_NO_UNITTESTS);
CASE_CODE (SC_ERR_THREAD_QUEUE);
CASE_CODE (SC_WARN_XFF_INVALID_MODE);
CASE_CODE (SC_WARN_XFF_INVALID_HEADER);
CASE_CODE (SC_WARN_XFF_INVALID_DEPLOYMENT);
CASE_CODE (SC_ERR_THRESHOLD_SETUP);
CASE_CODE (SC_ERR_DNS_CONFIG);
CASE_CODE (SC_ERR_MODBUS_CONFIG);
CASE_CODE (SC_ERR_CONF_YAML_ERROR);
CASE_CODE (SC_ERR_ENIP_CONFIG);
CASE_CODE (SC_ERR_CONF_NAME_TOO_LONG);
CASE_CODE (SC_ERR_APP_LAYER_PROTOCOL_DETECTION);
CASE_CODE (SC_ERR_PCIE_INIT_FAILED);
CASE_CODE (SC_WARN_LUA_SCRIPT);
CASE_CODE (SC_ERR_LUA_SCRIPT);
CASE_CODE (SC_WARN_NO_STATS_LOGGERS);
CASE_CODE (SC_ERR_NO_NETMAP);
CASE_CODE (SC_ERR_NETMAP_CREATE);
CASE_CODE (SC_ERR_NETMAP_READ);
CASE_CODE (SC_ERR_IPPAIR_INIT);
CASE_CODE (SC_ERR_MT_NO_SELECTOR);
CASE_CODE (SC_ERR_MT_DUPLICATE_TENANT);
CASE_CODE (SC_ERR_MT_NO_MAPPING);
CASE_CODE (SC_ERR_NO_JSON_SUPPORT);
CASE_CODE (SC_ERR_INVALID_RULE_ARGUMENT);
CASE_CODE (SC_ERR_STATS_LOG_NEGATED);
CASE_CODE (SC_ERR_JSON_STATS_LOG_NEGATED);
CASE_CODE (SC_ERR_DEPRECATED_CONF);
CASE_CODE (SC_WARN_FASTER_CAPTURE_AVAILABLE);
CASE_CODE (SC_WARN_POOR_RULE);
CASE_CODE (SC_ERR_ALERT_PAYLOAD_BUFFER);
CASE_CODE (SC_ERR_STATS_LOG_GENERIC);
CASE_CODE (SC_ERR_TCPDATA_LOG_GENERIC);
CASE_CODE (SC_ERR_FLOW_LOG_GENERIC);
CASE_CODE (SC_ERR_NETFLOW_LOG_GENERIC);
CASE_CODE (SC_ERR_SMTP_LOG_GENERIC);
CASE_CODE (SC_ERR_SSH_LOG_GENERIC);
CASE_CODE (SC_ERR_NIC_OFFLOADING);
CASE_CODE (SC_ERR_NO_FILES_FOR_PROTOCOL);
CASE_CODE (SC_ERR_INVALID_HASH);
CASE_CODE (SC_ERR_NO_SHA1_SUPPORT);
CASE_CODE (SC_ERR_NO_SHA256_SUPPORT);
CASE_CODE (SC_ERR_DNP3_CONFIG);
CASE_CODE (SC_ERR_DIR_OPEN);
CASE_CODE(SC_WARN_REMOVE_FILE);
CASE_CODE (SC_WARN_DUPLICATE_OUTPUT);
CASE_CODE (SC_ERR_NO_MAGIC_SUPPORT);
CASE_CODE (SC_ERR_REDIS);
CASE_CODE (SC_ERR_VAR_LIMIT);
CASE_CODE (SC_WARN_CHMOD);
CASE_CODE (SC_WARN_LOG_CF_TOO_MANY_NODES);
CASE_CODE (SC_WARN_EVENT_DROPPED);
CASE_CODE (SC_ERR_NO_REDIS_ASYNC);
CASE_CODE (SC_ERR_REDIS_CONFIG);
CASE_CODE (SC_ERR_BYPASS_NOT_SUPPORTED);
CASE_CODE (SC_WARN_RENAMING_FILE);
CASE_CODE (SC_ERR_PF_RING_VLAN);
CASE_CODE (SC_ERR_CREATE_DIRECTORY);
CASE_CODE (SC_WARN_FLOWBIT);
CASE_CODE (SC_ERR_SMB_CONFIG);
CASE_CODE (SC_WARN_NO_JA3_SUPPORT);
CASE_CODE (SC_WARN_JA3_DISABLED);
CASE_CODE (SC_ERR_PCAP_LOG_COMPRESS);
CASE_CODE (SC_ERR_FSEEK);
CASE_CODE (SC_ERR_WINDIVERT_GENERIC);
CASE_CODE (SC_ERR_WINDIVERT_NOSUPPORT);
CASE_CODE (SC_ERR_WINDIVERT_INVALID_FILTER);
CASE_CODE (SC_ERR_WINDIVERT_TOOLONG_FILTER);
CASE_CODE (SC_WARN_RUST_NOT_AVAILABLE);
CASE_CODE (SC_WARN_DEFAULT_WILL_CHANGE);
CASE_CODE (SC_WARN_EVE_MISSING_EVENTS);
CASE_CODE (SC_ERR_MAX);
}
return "UNKNOWN_ERROR";
}