1 /* 2 * Copyright (c) 2018-2021, OARC, Inc. 3 * All rights reserved. 4 * 5 * This file is part of dnsjit. 6 * 7 * dnsjit is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * dnsjit is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with dnsjit. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 #include <dnsjit/core/log.h> 22 #include <dnsjit/core/object.h> 23 24 #ifndef __dnsjit_core_object_dns_h 25 #define __dnsjit_core_object_dns_h 26 27 #include <netinet/in.h> 28 #include <sys/types.h> 29 30 #include <dnsjit/core/object/dns.hh> 31 32 #define CORE_OBJECT_DNS_INIT(prev) \ 33 { \ 34 CORE_OBJECT_INIT(CORE_OBJECT_DNS, prev) \ 35 , \ 36 0, 0, 0, 0, 0, \ 37 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ 38 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ 39 } 40 41 /* 42 * 2016-12-09 https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml 43 */ 44 45 #define CORE_OBJECT_DNS_CLASS_IN 1 46 #define CORE_OBJECT_DNS_CLASS_CH 3 47 #define CORE_OBJECT_DNS_CLASS_HS 4 48 #define CORE_OBJECT_DNS_CLASS_NONE 254 49 #define CORE_OBJECT_DNS_CLASS_ANY 255 50 51 #define CORE_OBJECT_DNS_TYPE_A 1 52 #define CORE_OBJECT_DNS_TYPE_NS 2 53 #define CORE_OBJECT_DNS_TYPE_MD 3 54 #define CORE_OBJECT_DNS_TYPE_MF 4 55 #define CORE_OBJECT_DNS_TYPE_CNAME 5 56 #define CORE_OBJECT_DNS_TYPE_SOA 6 57 #define CORE_OBJECT_DNS_TYPE_MB 7 58 #define CORE_OBJECT_DNS_TYPE_MG 8 59 #define CORE_OBJECT_DNS_TYPE_MR 9 60 #define CORE_OBJECT_DNS_TYPE_NULL 10 61 #define CORE_OBJECT_DNS_TYPE_WKS 11 62 #define CORE_OBJECT_DNS_TYPE_PTR 12 63 #define CORE_OBJECT_DNS_TYPE_HINFO 13 64 #define CORE_OBJECT_DNS_TYPE_MINFO 14 65 #define CORE_OBJECT_DNS_TYPE_MX 15 66 #define CORE_OBJECT_DNS_TYPE_TXT 16 67 #define CORE_OBJECT_DNS_TYPE_RP 17 68 #define CORE_OBJECT_DNS_TYPE_AFSDB 18 69 #define CORE_OBJECT_DNS_TYPE_X25 19 70 #define CORE_OBJECT_DNS_TYPE_ISDN 20 71 #define CORE_OBJECT_DNS_TYPE_RT 21 72 #define CORE_OBJECT_DNS_TYPE_NSAP 22 73 #define CORE_OBJECT_DNS_TYPE_NSAP_PTR 23 74 #define CORE_OBJECT_DNS_TYPE_SIG 24 75 #define CORE_OBJECT_DNS_TYPE_KEY 25 76 #define CORE_OBJECT_DNS_TYPE_PX 26 77 #define CORE_OBJECT_DNS_TYPE_GPOS 27 78 #define CORE_OBJECT_DNS_TYPE_AAAA 28 79 #define CORE_OBJECT_DNS_TYPE_LOC 29 80 #define CORE_OBJECT_DNS_TYPE_NXT 30 81 #define CORE_OBJECT_DNS_TYPE_EID 31 82 #define CORE_OBJECT_DNS_TYPE_NIMLOC 32 83 #define CORE_OBJECT_DNS_TYPE_SRV 33 84 #define CORE_OBJECT_DNS_TYPE_ATMA 34 85 #define CORE_OBJECT_DNS_TYPE_NAPTR 35 86 #define CORE_OBJECT_DNS_TYPE_KX 36 87 #define CORE_OBJECT_DNS_TYPE_CERT 37 88 #define CORE_OBJECT_DNS_TYPE_A6 38 89 #define CORE_OBJECT_DNS_TYPE_DNAME 39 90 #define CORE_OBJECT_DNS_TYPE_SINK 40 91 #define CORE_OBJECT_DNS_TYPE_OPT 41 92 #define CORE_OBJECT_DNS_TYPE_APL 42 93 #define CORE_OBJECT_DNS_TYPE_DS 43 94 #define CORE_OBJECT_DNS_TYPE_SSHFP 44 95 #define CORE_OBJECT_DNS_TYPE_IPSECKEY 45 96 #define CORE_OBJECT_DNS_TYPE_RRSIG 46 97 #define CORE_OBJECT_DNS_TYPE_NSEC 47 98 #define CORE_OBJECT_DNS_TYPE_DNSKEY 48 99 #define CORE_OBJECT_DNS_TYPE_DHCID 49 100 #define CORE_OBJECT_DNS_TYPE_NSEC3 50 101 #define CORE_OBJECT_DNS_TYPE_NSEC3PARAM 51 102 #define CORE_OBJECT_DNS_TYPE_TLSA 52 103 #define CORE_OBJECT_DNS_TYPE_SMIMEA 53 104 #define CORE_OBJECT_DNS_TYPE_HIP 55 105 #define CORE_OBJECT_DNS_TYPE_NINFO 56 106 #define CORE_OBJECT_DNS_TYPE_RKEY 57 107 #define CORE_OBJECT_DNS_TYPE_TALINK 58 108 #define CORE_OBJECT_DNS_TYPE_CDS 59 109 #define CORE_OBJECT_DNS_TYPE_CDNSKEY 60 110 #define CORE_OBJECT_DNS_TYPE_OPENPGPKEY 61 111 #define CORE_OBJECT_DNS_TYPE_CSYNC 62 112 #define CORE_OBJECT_DNS_TYPE_SPF 99 113 #define CORE_OBJECT_DNS_TYPE_UINFO 100 114 #define CORE_OBJECT_DNS_TYPE_UID 101 115 #define CORE_OBJECT_DNS_TYPE_GID 102 116 #define CORE_OBJECT_DNS_TYPE_UNSPEC 103 117 #define CORE_OBJECT_DNS_TYPE_NID 104 118 #define CORE_OBJECT_DNS_TYPE_L32 105 119 #define CORE_OBJECT_DNS_TYPE_L64 106 120 #define CORE_OBJECT_DNS_TYPE_LP 107 121 #define CORE_OBJECT_DNS_TYPE_EUI48 108 122 #define CORE_OBJECT_DNS_TYPE_EUI64 109 123 #define CORE_OBJECT_DNS_TYPE_TKEY 249 124 #define CORE_OBJECT_DNS_TYPE_TSIG 250 125 #define CORE_OBJECT_DNS_TYPE_IXFR 251 126 #define CORE_OBJECT_DNS_TYPE_AXFR 252 127 #define CORE_OBJECT_DNS_TYPE_MAILB 253 128 #define CORE_OBJECT_DNS_TYPE_MAILA 254 129 #define CORE_OBJECT_DNS_TYPE_ANY 255 130 #define CORE_OBJECT_DNS_TYPE_URI 256 131 #define CORE_OBJECT_DNS_TYPE_CAA 257 132 #define CORE_OBJECT_DNS_TYPE_AVC 258 133 #define CORE_OBJECT_DNS_TYPE_TA 32768 134 #define CORE_OBJECT_DNS_TYPE_DLV 32769 135 136 #define CORE_OBJECT_DNS_OPCODE_QUERY 0 137 #define CORE_OBJECT_DNS_OPCODE_IQUERY 1 138 #define CORE_OBJECT_DNS_OPCODE_STATUS 2 139 #define CORE_OBJECT_DNS_OPCODE_NOTIFY 4 140 #define CORE_OBJECT_DNS_OPCODE_UPDATE 5 141 142 #define CORE_OBJECT_DNS_RCODE_NOERROR 0 143 #define CORE_OBJECT_DNS_RCODE_FORMERR 1 144 #define CORE_OBJECT_DNS_RCODE_SERVFAIL 2 145 #define CORE_OBJECT_DNS_RCODE_NXDOMAIN 3 146 #define CORE_OBJECT_DNS_RCODE_NOTIMP 4 147 #define CORE_OBJECT_DNS_RCODE_REFUSED 5 148 #define CORE_OBJECT_DNS_RCODE_YXDOMAIN 6 149 #define CORE_OBJECT_DNS_RCODE_YXRRSET 7 150 #define CORE_OBJECT_DNS_RCODE_NXRRSET 8 151 #define CORE_OBJECT_DNS_RCODE_NOTAUTH 9 152 #define CORE_OBJECT_DNS_RCODE_NOTZONE 10 153 #define CORE_OBJECT_DNS_RCODE_BADVERS 16 154 #define CORE_OBJECT_DNS_RCODE_BADSIG 16 155 #define CORE_OBJECT_DNS_RCODE_BADKEY 17 156 #define CORE_OBJECT_DNS_RCODE_BADTIME 18 157 #define CORE_OBJECT_DNS_RCODE_BADMODE 19 158 #define CORE_OBJECT_DNS_RCODE_BADNAME 20 159 #define CORE_OBJECT_DNS_RCODE_BADALG 21 160 #define CORE_OBJECT_DNS_RCODE_BADTRUNC 22 161 #define CORE_OBJECT_DNS_RCODE_BADCOOKIE 23 162 163 #define CORE_OBJECT_DNS_AFSDB_SUBTYPE_AFS3LOCSRV 1 164 #define CORE_OBJECT_DNS_AFSDB_SUBTYPE_DCENCA_ROOT 2 165 166 #define CORE_OBJECT_DNS_DHCID_TYPE_1OCTET 0 167 #define CORE_OBJECT_DNS_DHCID_TYPE_DATAOCTET 1 168 #define CORE_OBJECT_DNS_DHCID_TYPE_CLIENT_DUID 2 169 170 #define CORE_OBJECT_DNS_EDNS0_OPT_LLQ 1 171 #define CORE_OBJECT_DNS_EDNS0_OPT_UL 2 172 #define CORE_OBJECT_DNS_EDNS0_OPT_NSID 3 173 #define CORE_OBJECT_DNS_EDNS0_OPT_DAU 5 174 #define CORE_OBJECT_DNS_EDNS0_OPT_DHU 6 175 #define CORE_OBJECT_DNS_EDNS0_OPT_N3U 7 176 #define CORE_OBJECT_DNS_EDNS0_OPT_CLIENT_SUBNET 8 177 #define CORE_OBJECT_DNS_EDNS0_OPT_EXPIRE 9 178 #define CORE_OBJECT_DNS_EDNS0_OPT_COOKIE 10 179 #define CORE_OBJECT_DNS_EDNS0_OPT_TCP_KEEPALIVE 11 180 #define CORE_OBJECT_DNS_EDNS0_OPT_PADDING 12 181 #define CORE_OBJECT_DNS_EDNS0_OPT_CHAIN 13 182 #define CORE_OBJECT_DNS_EDNS0_OPT_DEVICEID 26946 183 184 #endif 185