FTL/src/enums.h

230 lines
5.2 KiB
C

/* Pi-hole: A black hole for Internet advertisements
* (c) 2020 Pi-hole, LLC (https://pi-hole.net)
* Network-wide ad blocking via your own hardware.
*
* FTL Engine
* Global enums
*
* This file is copyright under the latest version of the EUPL.
* Please see LICENSE file for your rights under this license. */
#ifndef ENUMS_H
#define ENUMS_H
enum memory_type {
QUERIES,
UPSTREAMS,
CLIENTS,
DOMAINS,
OVERTIME,
DNS_CACHE,
STRINGS
} __attribute__ ((packed));
enum dnssec_status {
DNSSEC_UNSPECIFIED,
DNSSEC_SECURE,
DNSSEC_INSECURE,
DNSSEC_BOGUS,
DNSSEC_ABANDONED
} __attribute__ ((packed));
enum query_status {
QUERY_UNKNOWN,
QUERY_GRAVITY,
QUERY_FORWARDED,
QUERY_CACHE,
QUERY_REGEX,
QUERY_BLACKLIST,
QUERY_EXTERNAL_BLOCKED_IP,
QUERY_EXTERNAL_BLOCKED_NULL,
QUERY_EXTERNAL_BLOCKED_NXRA,
QUERY_GRAVITY_CNAME,
QUERY_REGEX_CNAME,
QUERY_BLACKLIST_CNAME,
QUERY_RETRIED,
QUERY_RETRIED_DNSSEC,
QUERY_IN_PROGRESS,
QUERY_DBBUSY,
QUERY_SPECIAL_DOMAIN,
QUERY_CACHE_STALE,
QUERY_STATUS_MAX
} __attribute__ ((packed));
enum reply_type {
REPLY_UNKNOWN,
REPLY_NODATA,
REPLY_NXDOMAIN,
REPLY_CNAME,
REPLY_IP,
REPLY_DOMAIN,
REPLY_RRNAME,
REPLY_SERVFAIL,
REPLY_REFUSED,
REPLY_NOTIMP,
REPLY_OTHER,
REPLY_DNSSEC,
REPLY_NONE,
REPLY_BLOB,
QUERY_REPLY_MAX
} __attribute__ ((packed));
enum privacy_level {
PRIVACY_SHOW_ALL = 0,
PRIVACY_HIDE_DOMAINS,
PRIVACY_HIDE_DOMAINS_CLIENTS,
PRIVACY_MAXIMUM
} __attribute__ ((packed));
enum blocking_mode {
MODE_IP,
MODE_NX,
MODE_NULL,
MODE_IP_NODATA_AAAA,
MODE_NODATA
} __attribute__ ((packed));
enum regex_type {
REGEX_BLACKLIST,
REGEX_WHITELIST,
REGEX_CLI,
REGEX_MAX
} __attribute__ ((packed));
enum query_types {
TYPE_A = 1,
TYPE_AAAA,
TYPE_ANY,
TYPE_SRV,
TYPE_SOA,
TYPE_PTR,
TYPE_TXT,
TYPE_NAPTR,
TYPE_MX,
TYPE_DS,
TYPE_RRSIG,
TYPE_DNSKEY,
TYPE_NS,
TYPE_OTHER,
TYPE_SVCB,
TYPE_HTTPS,
TYPE_MAX
} __attribute__ ((packed));
enum blocking_status {
BLOCKING_DISABLED,
BLOCKING_ENABLED,
BLOCKING_UNKNOWN
} __attribute__ ((packed));
// Blocking status constants used by the dns_cache->blocking_status vector
// We explicitly force UNKNOWN_BLOCKED to zero on all platforms as this is the
// default value set initially with calloc
enum domain_client_status {
UNKNOWN_BLOCKED = 0,
GRAVITY_BLOCKED,
BLACKLIST_BLOCKED,
REGEX_BLOCKED,
WHITELISTED,
SPECIAL_DOMAIN,
NOT_BLOCKED
} __attribute__ ((packed));
enum debug_flags {
DEBUG_DATABASE = (1 << 0), /* 00000000 00000000 00000000 00000001 */
DEBUG_NETWORKING = (1 << 1), /* 00000000 00000000 00000000 00000010 */
DEBUG_LOCKS = (1 << 2), /* 00000000 00000000 00000000 00000100 */
DEBUG_QUERIES = (1 << 3), /* 00000000 00000000 00000000 00001000 */
DEBUG_FLAGS = (1 << 4), /* 00000000 00000000 00000000 00010000 */
DEBUG_SHMEM = (1 << 5), /* 00000000 00000000 00000000 00100000 */
DEBUG_GC = (1 << 6), /* 00000000 00000000 00000000 01000000 */
DEBUG_ARP = (1 << 7), /* 00000000 00000000 00000000 10000000 */
DEBUG_REGEX = (1 << 8), /* 00000000 00000000 00000001 00000000 */
DEBUG_API = (1 << 9), /* 00000000 00000000 00000010 00000000 */
DEBUG_OVERTIME = (1 << 10), /* 00000000 00000000 00000100 00000000 */
DEBUG_STATUS = (1 << 11), /* 00000000 00000000 00001000 00000000 */
DEBUG_CAPS = (1 << 12), /* 00000000 00000000 00010000 00000000 */
DEBUG_DNSSEC = (1 << 13), /* 00000000 00000000 00100000 00000000 */
DEBUG_VECTORS = (1 << 14), /* 00000000 00000000 01000000 00000000 */
DEBUG_RESOLVER = (1 << 15), /* 00000000 00000000 10000000 00000000 */
DEBUG_EDNS0 = (1 << 16), /* 00000000 00000001 00000000 00000000 */
DEBUG_CLIENTS = (1 << 17), /* 00000000 00000010 00000000 00000000 */
DEBUG_ALIASCLIENTS = (1 << 18), /* 00000000 00000100 00000000 00000000 */
DEBUG_EVENTS = (1 << 19), /* 00000000 00001000 00000000 00000000 */
DEBUG_HELPER = (1 << 20), /* 00000000 00010000 00000000 00000000 */
DEBUG_EXTRA = (1 << 21), /* 00000000 00100000 00000000 00000000 */
} __attribute__ ((packed));
enum events {
RELOAD_GRAVITY,
RELOAD_PRIVACY_LEVEL,
RESOLVE_NEW_HOSTNAMES,
RERESOLVE_HOSTNAMES,
RERESOLVE_HOSTNAMES_FORCE,
REIMPORT_ALIASCLIENTS,
PARSE_NEIGHBOR_CACHE,
RELOAD_BLOCKINGSTATUS,
EVENTS_MAX
} __attribute__ ((packed));
enum refresh_hostnames {
REFRESH_ALL,
REFRESH_IPV4_ONLY,
REFRESH_UNKNOWN,
REFRESH_NONE
} __attribute__ ((packed));
enum db_result {
NOT_FOUND,
FOUND,
LIST_NOT_AVAILABLE
} __attribute__ ((packed));
enum busy_reply {
BUSY_BLOCK,
BUSY_ALLOW,
BUSY_REFUSE,
BUSY_DROP
} __attribute__ ((packed));
enum thread_types {
DB,
GC,
DNSclient,
THREADS_MAX
} __attribute__ ((packed));
enum telnet_type {
TELNETv4,
TELNETv6,
TELNET_SOCK,
TELNET_MAX
} __attribute__ ((packed));
enum message_type {
REGEX_MESSAGE,
SUBNET_MESSAGE,
HOSTNAME_MESSAGE,
DNSMASQ_CONFIG_MESSAGE,
RATE_LIMIT_MESSAGE,
DNSMASQ_WARN_MESSAGE,
LOAD_MESSAGE,
SHMEM_MESSAGE,
DISK_MESSAGE,
INACCESSIBLE_ADLIST_MESSAGE,
MAX_MESSAGE,
} __attribute__ ((packed));
enum ptr_type {
PTR_PIHOLE,
PTR_HOSTNAME,
PTR_HOSTNAMEFQDN,
PTR_NONE
} __attribute__ ((packed));
enum addinfo_type {
ADDINFO_CNAME_DOMAIN = 1,
ADDINFO_REGEX_ID
} __attribute__ ((packed));
#endif // ENUMS_H