1 #include "record_descr.h" 2 3 const record_descr record_descr_array[] = { 4 /* RFC 1035 class insensitive well-known types */ 5 6 [WDNS_TYPE_CNAME] = 7 { class_un, { rdf_name, rdf_end } }, 8 9 [WDNS_TYPE_HINFO] = 10 { class_un, { rdf_string, rdf_string, rdf_end } }, 11 12 [WDNS_TYPE_MB] = 13 { class_un, { rdf_name, rdf_end } }, 14 15 [WDNS_TYPE_MD] = 16 { class_un, { rdf_name, rdf_end } }, 17 18 [WDNS_TYPE_MF] = 19 { class_un, { rdf_name, rdf_end } }, 20 21 [WDNS_TYPE_MG] = 22 { class_un, { rdf_name, rdf_end } }, 23 24 [WDNS_TYPE_MINFO] = 25 { class_un, { rdf_name, rdf_name, rdf_end } }, 26 27 [WDNS_TYPE_MR] = 28 { class_un, { rdf_name, rdf_end } }, 29 30 [WDNS_TYPE_MX] = 31 { class_un, { rdf_int16, rdf_name, rdf_end } }, 32 33 [WDNS_TYPE_NS] = 34 { class_un, { rdf_name, rdf_end } }, 35 36 [WDNS_TYPE_NULL] = 37 { class_un, { rdf_bytes, rdf_end } }, 38 39 [WDNS_TYPE_PTR] = 40 { class_un, { rdf_name, rdf_end } }, 41 42 [WDNS_TYPE_SOA] = 43 { class_un, { rdf_name, rdf_name, rdf_int32, rdf_int32, rdf_int32, 44 rdf_int32, rdf_int32, rdf_end } }, 45 46 [WDNS_TYPE_TXT] = 47 { class_un, { rdf_repstring, rdf_end } }, 48 49 /* RFC 1035 Internet class well-known types */ 50 51 [WDNS_TYPE_A] = 52 { class_in, { rdf_ipv4, rdf_end } }, 53 54 [WDNS_TYPE_WKS] = 55 { class_in, { rdf_int32, rdf_int8, rdf_bytes, rdf_end } }, 56 57 /* post-RFC 1035 class insensitive types */ 58 59 [WDNS_TYPE_AFSDB] = 60 { class_un, { rdf_int16, rdf_name, rdf_end } }, 61 62 [WDNS_TYPE_ISDN] = 63 { class_un, { rdf_string, rdf_string, rdf_end } }, 64 65 [WDNS_TYPE_RP] = 66 { class_un, { rdf_name, rdf_name, rdf_end } }, 67 68 [WDNS_TYPE_RT] = 69 { class_un, { rdf_int16, rdf_name, rdf_end } }, 70 71 [WDNS_TYPE_X25] = 72 { class_un, { rdf_string, rdf_end } }, 73 74 [WDNS_TYPE_NXT] = 75 { class_un, { rdf_name, rdf_bytes, rdf_end } }, 76 77 [WDNS_TYPE_SIG] = 78 { class_un, { rdf_int16, rdf_int8, rdf_int8, rdf_int32, rdf_int32, rdf_int32, 79 rdf_int16, rdf_name, rdf_bytes, rdf_end } }, 80 81 [WDNS_TYPE_DNAME] = 82 { class_un, { rdf_uname, rdf_end } }, 83 84 /* post-RFC 1035 Internet class types */ 85 86 [WDNS_TYPE_A6] = 87 { class_in, { rdf_ipv6prefix, rdf_uname, rdf_end } }, 88 89 [WDNS_TYPE_AAAA] = 90 { class_in, { rdf_ipv6, rdf_end } }, 91 92 [WDNS_TYPE_KX] = 93 { class_in, { rdf_int16, rdf_uname, rdf_end } }, 94 95 [WDNS_TYPE_PX] = 96 { class_in, { rdf_int16, rdf_name, rdf_name, rdf_end } }, 97 98 [WDNS_TYPE_NAPTR] = 99 { class_in, { rdf_int16, rdf_int16, rdf_string, rdf_string, rdf_string, 100 rdf_name, rdf_end } }, 101 102 [WDNS_TYPE_SRV] = 103 { class_in, { rdf_int16, rdf_int16, rdf_int16, rdf_name, rdf_end } }, 104 105 /* RFC 4034 DNSSEC types */ 106 107 [WDNS_TYPE_DNSKEY] = 108 { class_un, { rdf_int16, rdf_int8, rdf_int8, rdf_bytes_b64, rdf_end } }, 109 /* flags, protocol, algorithm, public key */ 110 111 [WDNS_TYPE_RRSIG] = 112 { class_un, { rdf_rrtype, rdf_int8, rdf_int8, rdf_int32, rdf_int32, rdf_int32, 113 rdf_int16, rdf_uname, rdf_bytes_b64, rdf_end } }, 114 /* rrtype covered, algorithm, labels, original TTL, 115 * signature expiration, signature inception, key tag, signer's name, 116 * signature */ 117 118 [WDNS_TYPE_NSEC] = 119 { class_un, { rdf_uname, rdf_type_bitmap, rdf_end } }, 120 /* next domain name, rrtype bit maps */ 121 122 [WDNS_TYPE_DS] = 123 { class_un, { rdf_int16, rdf_int8, rdf_int8, rdf_bytes, rdf_end } }, 124 /* key tag, algorithm, digest type, digest */ 125 126 /* RFC 5155 DNSSEC types */ 127 128 [WDNS_TYPE_NSEC3] = 129 { class_un, { rdf_int8, rdf_int8, rdf_int16, rdf_salt, rdf_hash, 130 rdf_type_bitmap, rdf_end } }, 131 /* hash algorithm, flags, iterations, salt, hash, rrtype bit maps */ 132 133 [WDNS_TYPE_NSEC3PARAM] = 134 { class_un, { rdf_int8, rdf_int8, rdf_int16, rdf_salt, rdf_end } }, 135 /* hash algorithm, flags, iterations, salt */ 136 137 /* RFC 4408 */ 138 139 [WDNS_TYPE_SPF] = 140 { class_un, { rdf_repstring, rdf_end } }, 141 142 /* RFC 6698 */ 143 144 [WDNS_TYPE_TLSA] = { 145 class_un, 146 { 147 rdf_int8, /* Certificate Usage */ 148 rdf_int8, /* Selector */ 149 rdf_int8, /* Matching Type */ 150 rdf_bytes, /* Certificate Association Data */ 151 rdf_end, 152 } 153 }, 154 155 /* RFC 7344 */ 156 157 [WDNS_TYPE_CDNSKEY] = /* Same as DNSKEY */ 158 { class_un, { rdf_int16, rdf_int8, rdf_int8, rdf_bytes_b64, rdf_end } }, 159 160 [WDNS_TYPE_CDS] = /* Same as DS */ 161 { class_un, { rdf_int16, rdf_int8, rdf_int8, rdf_bytes, rdf_end } }, 162 163 /* draft-ietf-dane-openpgpkey-06 */ 164 165 [WDNS_TYPE_OPENPGPKEY] = { 166 class_un, 167 { 168 rdf_bytes_b64, /* OpenPGP Transferable Public Key */ 169 rdf_end, 170 } 171 }, 172 173 /* RFC 7477 */ 174 175 [WDNS_TYPE_CSYNC] = { 176 class_un, 177 { 178 rdf_int32, /* SOA Serial */ 179 rdf_int16, /* Flags */ 180 rdf_type_bitmap,/* Type Bit Map */ 181 rdf_end, 182 } 183 }, 184 185 /* RFC 7043 */ 186 187 [WDNS_TYPE_EUI48] = { 188 class_un, 189 { 190 rdf_eui48, /* Address */ 191 rdf_end, 192 } 193 }, 194 195 [WDNS_TYPE_EUI64] = { 196 class_un, 197 { 198 rdf_eui64, /* Address */ 199 rdf_end, 200 } 201 }, 202 203 /* RFC 7553 */ 204 205 [WDNS_TYPE_URI] = { 206 class_un, 207 { 208 rdf_int16, /* Priority */ 209 rdf_int16, /* Weight */ 210 rdf_bytes_str, /* Target */ 211 rdf_end, 212 } 213 214 }, 215 }; 216 217 const size_t record_descr_len = sizeof(record_descr_array) / sizeof(record_descr); 218