#ifndef __CONSTANTS_H__ #define __CONSTANTS_H__ #include #include #define DNS_HEADER_SIZE 12 /* * max size of a UDP packet */ #define DNS_MAX_UDP_SIZE 512 /* * Query/Response flag */ // RFC 1035 #define QR_QUERY 0 // RFC 1035 #define QR_RESPONSE 1 /* * DNS Op Codes */ // RFC 1035 #define OPCODE_QUERY 0 // RFC 1035, RFC 3425 #define OPCODE_IQUERY 1 // RFC 1035 #define OPCODE_STATUS 2 // RFC 1996 #define OPCODE_NOTIFY 4 // RFC 2136 #define OPCODE_UPDATE 5 /* * Resource Record Classes */ // RFC 1035 #define RR_CLASS_IN 1 // RFC 1035 #define RR_CLASS_CH 3 // RFC 1035 #define RR_CLASS_HS 4 // RFC 2136 #define RR_CLASS_NONE 254 // RFC 1035 #define RR_CLASS_ANY 255 /* * DNS Response Codes */ // RFC 1035 #define RCODE_NOERROR 0 // RFC 1035 #define RCODE_FORMERR 1 // RFC 1035 #define RCODE_SERVFAIL 2 // RFC 1035 #define RCODE_NXDOMAIN 3 // RFC 1035 #define RCODE_NOTIMP 4 // RFC 1035 #define RCODE_REFUSED 5 // RFC 2136 #define RCODE_YXDOMAIN 6 // RFC 2136 #define RCODE_YXRRSET 7 // RFC 2136 #define RCODE_NXRRSET 8 // RFC 2136 #define RCODE_NOTAUTH 9 // RFC 2136 #define RCODE_NOTZONE 10 // 11-15 reserved // RFC 2845 #define RCODE_BADSIG 16 // RFC 6891 #define RCODE_BADVERS 16 // RFC 2845 #define RCODE_BADKEY 17 // RFC 2845 #define RCODE_BADTIME 18 // RFC 2930 #define RCODE_BADMODE 19 // RFC 2930 #define RCODE_BADNAME 20 // RFC 2930 #define RCODE_BADALG 21 // RFC 4635 #define RCODE_BADTRUNC 22 // RFC 7873 #define RCODE_BADCOOKIE 23 /* * DNS RR TYPES */ // RFC 2931 pseudo type #define RR_TYPE_SIG0 0 // RFC 1035 #define RR_TYPE_A 1 // RFC 1035 #define RR_TYPE_NS 2 // RFC 1035 - obsolete, Not implemented #define RR_TYPE_MD 3 // RFC 1035 - obsolete, Not implemented #define RR_TYPE_MF 4 // RFC 1035 #define RR_TYPE_CNAME 5 // RFC 1035 #define RR_TYPE_SOA 6 // RFC 1035 - obsolete, Not implemented #define RR_TYPE_MB 7 // RFC 1035 - obsolete, Not implemented #define RR_TYPE_MG 8 // RFC 1035 - obsolete, Not implemented #define RR_TYPE_MR 9 // RFC 1035 - obsolete, Not implemented #define RR_TYPE_NULL 10 // RFC 1035 #define RR_TYPE_WKS 11 // RFC 1035 #define RR_TYPE_PTR 12 // RFC 1035 #define RR_TYPE_HINFO 13 // RFC 1035 - obsolete, Not implemented #define RR_TYPE_MINFO 14 // RFC 1035 #define RR_TYPE_MX 15 // RFC 1035 #define RR_TYPE_TXT 16 // RFC 1183 #define RR_TYPE_RP 17 // RFC 1183 #define RR_TYPE_AFSDB 18 // RFC 1183 #define RR_TYPE_X25 19 // RFC 1183 #define RR_TYPE_ISDN 20 // RFC 1183 #define RR_TYPE_RT 21 // RFC 1706 #define RR_TYPE_NSAP 22 // RFC 1348 - obsolete, Not implemented #define RR_TYPE_NSAP_PTR 23 // RFC 2535 #define RR_TYPE_SIG 24 // RFC 2535, RFC 2930 #define RR_TYPE_KEY 25 // RFC 2163 #define RR_TYPE_PX 26 // RFC 1712 - Not implemented #define RR_TYPE_GPOS 27 // RFC 3596 #define RR_TYPE_AAAA 28 // RFC 1876 #define RR_TYPE_LOC 29 // RFC 2065, obsoleted by by RFC 3755 #define RR_TYPE_NXT 30 // [Patton][Patton1995] #define RR_TYPE_EID 31 // [Patton][Patton1995] #define RR_TYPE_NIMLOC 32 // RFC 2782 #define RR_TYPE_SRV 33 // Windows only #define RR_TYPE_ATMA 34 // RFC 2915 #define RR_TYPE_NAPTR 35 // RFC 2230 #define RR_TYPE_KX 36 // RFC 4398 #define RR_TYPE_CERT 37 // downgraded to experimental by RFC 3363 #define RR_TYPE_A6 38 // RFC 2672 #define RR_TYPE_DNAME 39 // Not implemented #define RR_TYPE_SINK 40 // RFC 2671 #define RR_TYPE_OPT 41 // RFC 3123 #define RR_TYPE_APL 42 // RFC 4034 #define RR_TYPE_DS 43 // RFC 4255 #define RR_TYPE_SSHFP 44 // RFC 4025 #define RR_TYPE_IPSECKEY 45 // RFC 4034 #define RR_TYPE_RRSIG 46 // RFC 4034 #define RR_TYPE_NSEC 47 // RFC 4034 #define RR_TYPE_DNSKEY 48 // RFC 4701 #define RR_TYPE_DHCID 49 // RFC 5155 #define RR_TYPE_NSEC3 50 // RFC 5155 #define RR_TYPE_NSEC3PARAM 51 // RFC 6698 #define RR_TYPE_TLSA 52 // draft-ietf-dane-smime-10 #define RR_TYPE_SMIMEA 53 // 54 unassigned // RFC 5205 #define RR_TYPE_HIP 55 // Not implemented #define RR_TYPE_NINFO 56 // Not implemented #define RR_TYPE_RKEY 57 // #define RR_TYPE_TALINK 58 // RFC 7344 #define RR_TYPE_CDS 59 // RFC 7344 #define RR_TYPE_CDNSKEY 60 // RFC 7929 #define RR_TYPE_OPENPGPKEY 61 // RFC 7477 #define RR_TYPE_CSYNC 62 // 63 - 98 unassigned // RFC 4408 #define RR_TYPE_SPF 99 // no RFC, Not implemented #define RR_TYPE_UINFO 100 // no RFC, Not implemented #define RR_TYPE_UID 101 // no RFC, Not implemented #define RR_TYPE_GID 102 // no RFC, Not implemented #define RR_TYPE_UNSPEC 103 // RFC 6742 #define RR_TYPE_NID 104 // RFC 6742 #define RR_TYPE_L32 105 // RFC 6742 #define RR_TYPE_L64 106 // RFC 6742 #define RR_TYPE_LP 107 // RFC 7043 #define RR_TYPE_EUI48 108 // RFC 7043 #define RR_TYPE_EUI64 109 // 110 - 248 unassigned // RFC 2930 #define RR_TYPE_TKEY 249 // RFC 2845 #define RR_TYPE_TSIG 250 // RFC 1995 - only a full (AXFR) is supported #define RR_TYPE_IXFR 251 // RFC 1035 #define RR_TYPE_AXFR 252 // RFC 883, Not implemented #define RR_TYPE_MAILB 253 // RFC 973, Not implemented #define RR_TYPE_MAILA 254 // RFC 1035 - we support both 'ANY' and '*' #define RR_TYPE_ANY 255 // tools.ietf.org/html/draft-faltstrom-uri-06 #define RR_TYPE_URI 256 // tools.ietf.org/html/draft-ietf-pkix-caa-03 #define RR_TYPE_CAA 257 // Application Visibility and Control #define RR_TYPE_AVC 258 // 259 - 32767 unassigned // same as DS #define RR_TYPE_TA 32768 // RFC 4431 #define RR_TYPE_DLV 32769 // Private Bind record #define RR_TYPE_TYPE65534 65534 /* * TSIG TYPES */ // RFC 2845, required #define RR_TSIG_HMAC_MD5 "hmac-md5.sig-alg.reg.int" // unsupported, optional #define RR_TSIG_GSS_TSIG "gss-tsig" // RFC 4635, required #define RR_TSIG_HMAC_SHA1 "hmac-sha1" // RFC 4635, optional #define RR_TSIG_HMAC_SHA224 "hmac-sha224" // RFC 4635, required #define RR_TSIG_HMAC_SHA256 "hmac-sha256" // RFC 4635, optional #define RR_TSIG_HMAC_SHA384 "hmac-sha384" // RFC 4635, optional #define RR_TSIG_HMAC_SHA512 "hmac-sha512" #endif /* __CONSTANTS_H__ */