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