1d83a80eeSchristos /*
2d83a80eeSchristos * dns.c -- DNS definitions.
3d83a80eeSchristos *
4d83a80eeSchristos * Copyright (c) 2001-2006, NLnet Labs. All rights reserved.
5d83a80eeSchristos *
6d83a80eeSchristos * See LICENSE for the license.
7d83a80eeSchristos *
8d83a80eeSchristos */
9d83a80eeSchristos
10d83a80eeSchristos #include "config.h"
11d83a80eeSchristos
12d83a80eeSchristos #include <sys/types.h>
13d83a80eeSchristos #include <sys/socket.h>
14d83a80eeSchristos #include <netinet/in.h>
15d83a80eeSchristos #include <arpa/inet.h>
16d83a80eeSchristos #include <ctype.h>
17d83a80eeSchristos #include <netdb.h>
18d83a80eeSchristos #include <string.h>
19d83a80eeSchristos #ifdef HAVE_STRINGS_H
20d83a80eeSchristos #include <strings.h>
21d83a80eeSchristos #endif
22d83a80eeSchristos
23d83a80eeSchristos #include "dns.h"
24d83a80eeSchristos #include "zonec.h"
25d83a80eeSchristos #include "zparser.h"
26d83a80eeSchristos
27d83a80eeSchristos /* Taken from RFC 1035, section 3.2.4. */
28d83a80eeSchristos static lookup_table_type dns_rrclasses[] = {
29d83a80eeSchristos { CLASS_IN, "IN" }, /* the Internet */
30d83a80eeSchristos { CLASS_CS, "CS" }, /* the CSNET class (Obsolete) */
31d83a80eeSchristos { CLASS_CH, "CH" }, /* the CHAOS class */
32d83a80eeSchristos { CLASS_HS, "HS" }, /* Hesiod */
33d83a80eeSchristos { 0, NULL }
34d83a80eeSchristos };
35d83a80eeSchristos
36d83a80eeSchristos static rrtype_descriptor_type rrtype_descriptors[(RRTYPE_DESCRIPTORS_LENGTH+1)] = {
37d83a80eeSchristos /* 0 */
38d83a80eeSchristos { 0, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
39d83a80eeSchristos /* 1 */
40d83a80eeSchristos { TYPE_A, "A", T_A, 1, 1,
41d83a80eeSchristos { RDATA_WF_A }, { RDATA_ZF_A } },
42d83a80eeSchristos /* 2 */
43d83a80eeSchristos { TYPE_NS, "NS", T_NS, 1, 1,
44d83a80eeSchristos { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
45d83a80eeSchristos /* 3 */
46d83a80eeSchristos { TYPE_MD, "MD", T_MD, 1, 1,
47d83a80eeSchristos { RDATA_WF_UNCOMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
48d83a80eeSchristos /* 4 */
49d83a80eeSchristos { TYPE_MF, "MF", T_MF, 1, 1,
50d83a80eeSchristos { RDATA_WF_UNCOMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
51d83a80eeSchristos /* 5 */
52d83a80eeSchristos { TYPE_CNAME, "CNAME", T_CNAME, 1, 1,
53d83a80eeSchristos { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
54d83a80eeSchristos /* 6 */
55d83a80eeSchristos { TYPE_SOA, "SOA", T_SOA, 7, 7,
56d83a80eeSchristos { RDATA_WF_COMPRESSED_DNAME, RDATA_WF_COMPRESSED_DNAME, RDATA_WF_LONG,
57d83a80eeSchristos RDATA_WF_LONG, RDATA_WF_LONG, RDATA_WF_LONG, RDATA_WF_LONG },
58d83a80eeSchristos { RDATA_ZF_DNAME, RDATA_ZF_DNAME, RDATA_ZF_PERIOD, RDATA_ZF_PERIOD,
59d83a80eeSchristos RDATA_ZF_PERIOD, RDATA_ZF_PERIOD, RDATA_ZF_PERIOD } },
60d83a80eeSchristos /* 7 */
61d83a80eeSchristos { TYPE_MB, "MB", T_MB, 1, 1,
62d83a80eeSchristos { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
63d83a80eeSchristos /* 8 */
64d83a80eeSchristos { TYPE_MG, "MG", T_MG, 1, 1,
65d83a80eeSchristos { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
66d83a80eeSchristos /* 9 */
67d83a80eeSchristos { TYPE_MR, "MR", T_MR, 1, 1,
68d83a80eeSchristos { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
69d83a80eeSchristos /* 10 */
70d83a80eeSchristos { TYPE_NULL, "NULL", T_UTYPE, 1, 1,
71d83a80eeSchristos { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
72d83a80eeSchristos /* 11 */
73d83a80eeSchristos { TYPE_WKS, "WKS", T_WKS, 2, 2,
74d83a80eeSchristos { RDATA_WF_A, RDATA_WF_BINARY },
75d83a80eeSchristos { RDATA_ZF_A, RDATA_ZF_SERVICES } },
76d83a80eeSchristos /* 12 */
77d83a80eeSchristos { TYPE_PTR, "PTR", T_PTR, 1, 1,
78d83a80eeSchristos { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
79d83a80eeSchristos /* 13 */
80d83a80eeSchristos { TYPE_HINFO, "HINFO", T_HINFO, 2, 2,
81d83a80eeSchristos { RDATA_WF_TEXT, RDATA_WF_TEXT }, { RDATA_ZF_TEXT, RDATA_ZF_TEXT } },
82d83a80eeSchristos /* 14 */
83d83a80eeSchristos { TYPE_MINFO, "MINFO", T_MINFO, 2, 2,
84d83a80eeSchristos { RDATA_WF_COMPRESSED_DNAME, RDATA_WF_COMPRESSED_DNAME },
85d83a80eeSchristos { RDATA_ZF_DNAME, RDATA_ZF_DNAME } },
86d83a80eeSchristos /* 15 */
87d83a80eeSchristos { TYPE_MX, "MX", T_MX, 2, 2,
88d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_COMPRESSED_DNAME },
89d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
90d83a80eeSchristos /* 16 */
91d83a80eeSchristos { TYPE_TXT, "TXT", T_TXT, 1, 1,
92d83a80eeSchristos { RDATA_WF_TEXTS },
93d83a80eeSchristos { RDATA_ZF_TEXTS } },
94d83a80eeSchristos /* 17 */
95d83a80eeSchristos { TYPE_RP, "RP", T_RP, 2, 2,
96d83a80eeSchristos { RDATA_WF_UNCOMPRESSED_DNAME, RDATA_WF_UNCOMPRESSED_DNAME },
97d83a80eeSchristos { RDATA_ZF_DNAME, RDATA_ZF_DNAME } },
98d83a80eeSchristos /* 18 */
99d83a80eeSchristos { TYPE_AFSDB, "AFSDB", T_AFSDB, 2, 2,
100d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME },
101d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
102d83a80eeSchristos /* 19 */
103d83a80eeSchristos { TYPE_X25, "X25", T_X25, 1, 1,
104d83a80eeSchristos { RDATA_WF_TEXT },
105d83a80eeSchristos { RDATA_ZF_TEXT } },
106d83a80eeSchristos /* 20 */
107d83a80eeSchristos { TYPE_ISDN, "ISDN", T_ISDN, 1, 2,
108d83a80eeSchristos { RDATA_WF_TEXT, RDATA_WF_TEXT },
109d83a80eeSchristos { RDATA_ZF_TEXT, RDATA_ZF_TEXT } },
110d83a80eeSchristos /* 21 */
111d83a80eeSchristos { TYPE_RT, "RT", T_RT, 2, 2,
112d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME },
113d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
114d83a80eeSchristos /* 22 */
115d83a80eeSchristos { TYPE_NSAP, "NSAP", T_NSAP, 1, 1,
116d83a80eeSchristos { RDATA_WF_BINARY },
117d83a80eeSchristos { RDATA_ZF_NSAP } },
118d83a80eeSchristos /* 23 */
119d83a80eeSchristos { 23, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
120d83a80eeSchristos /* 24 */
121d83a80eeSchristos { TYPE_SIG, "SIG", T_SIG, 9, 9,
122d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_LONG,
123d83a80eeSchristos RDATA_WF_LONG, RDATA_WF_LONG, RDATA_WF_SHORT,
124febe9f07Schristos RDATA_WF_LITERAL_DNAME, RDATA_WF_BINARY },
125febe9f07Schristos { RDATA_ZF_RRTYPE, RDATA_ZF_ALGORITHM, RDATA_ZF_BYTE, RDATA_ZF_PERIOD,
126febe9f07Schristos RDATA_ZF_TIME, RDATA_ZF_TIME, RDATA_ZF_SHORT,
127febe9f07Schristos RDATA_ZF_LITERAL_DNAME, RDATA_ZF_BASE64 } },
128d83a80eeSchristos /* 25 */
129d83a80eeSchristos { TYPE_KEY, "KEY", T_KEY, 4, 4,
130d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
131d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_BYTE, RDATA_ZF_ALGORITHM,
132d83a80eeSchristos RDATA_ZF_BASE64 } },
133d83a80eeSchristos /* 26 */
134d83a80eeSchristos { TYPE_PX, "PX", T_PX, 3, 3,
135d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME,
136d83a80eeSchristos RDATA_WF_UNCOMPRESSED_DNAME },
137d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_DNAME, RDATA_ZF_DNAME } },
138d83a80eeSchristos /* 27 */
139d83a80eeSchristos { 27, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
140d83a80eeSchristos /* 28 */
141d83a80eeSchristos { TYPE_AAAA, "AAAA", T_AAAA, 1, 1,
142d83a80eeSchristos { RDATA_WF_AAAA },
143d83a80eeSchristos { RDATA_ZF_AAAA } },
144d83a80eeSchristos /* 29 */
145d83a80eeSchristos { TYPE_LOC, "LOC", T_LOC, 1, 1,
146d83a80eeSchristos { RDATA_WF_BINARY },
147d83a80eeSchristos { RDATA_ZF_LOC } },
148d83a80eeSchristos /* 30 */
149d83a80eeSchristos { TYPE_NXT, "NXT", T_NXT, 2, 2,
150d83a80eeSchristos { RDATA_WF_UNCOMPRESSED_DNAME, RDATA_WF_BINARY },
151d83a80eeSchristos { RDATA_ZF_DNAME, RDATA_ZF_NXT } },
152d83a80eeSchristos /* 31 */
153d83a80eeSchristos { 31, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
154d83a80eeSchristos /* 32 */
155d83a80eeSchristos { 32, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
156d83a80eeSchristos /* 33 */
157d83a80eeSchristos { TYPE_SRV, "SRV", T_SRV, 4, 4,
158d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_SHORT, RDATA_WF_SHORT,
159d83a80eeSchristos RDATA_WF_UNCOMPRESSED_DNAME },
160d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_SHORT, RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
161d83a80eeSchristos /* 34 */
162d83a80eeSchristos { 34, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
163d83a80eeSchristos /* 35 */
164d83a80eeSchristos { TYPE_NAPTR, "NAPTR", T_NAPTR, 6, 6,
165d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_SHORT, RDATA_WF_TEXT, RDATA_WF_TEXT,
166d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_UNCOMPRESSED_DNAME },
167d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_SHORT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
168d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_DNAME } },
169d83a80eeSchristos /* 36 */
170d83a80eeSchristos { TYPE_KX, "KX", T_KX, 2, 2,
171d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME },
172d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
173d83a80eeSchristos /* 37 */
174d83a80eeSchristos { TYPE_CERT, "CERT", T_CERT, 4, 4,
175d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BINARY },
176d83a80eeSchristos { RDATA_ZF_CERTIFICATE_TYPE, RDATA_ZF_SHORT, RDATA_ZF_ALGORITHM,
177d83a80eeSchristos RDATA_ZF_BASE64 } },
178d83a80eeSchristos /* 38 */
179d83a80eeSchristos { TYPE_A6, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
180d83a80eeSchristos /* 39 */
181d83a80eeSchristos { TYPE_DNAME, "DNAME", T_DNAME, 1, 1,
182d83a80eeSchristos { RDATA_WF_UNCOMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
183d83a80eeSchristos /* 40 */
184d83a80eeSchristos { 40, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
185d83a80eeSchristos /* 41 */
186d83a80eeSchristos { TYPE_OPT, "OPT", T_UTYPE, 1, 1,
187d83a80eeSchristos { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
188d83a80eeSchristos /* 42 */
189d83a80eeSchristos { TYPE_APL, "APL", T_APL, 0, MAXRDATALEN,
190d83a80eeSchristos { RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
191d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
192d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
193d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
194d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
195d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
196d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
197d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
198d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
199d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
200d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
201d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
202d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
203d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
204d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
205d83a80eeSchristos RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL },
206d83a80eeSchristos { RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
207d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
208d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
209d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
210d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
211d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
212d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
213d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
214d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
215d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
216d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
217d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
218d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
219d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
220d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
221d83a80eeSchristos RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL } },
222d83a80eeSchristos /* 43 */
223d83a80eeSchristos { TYPE_DS, "DS", T_DS, 4, 4,
224d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
225d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_ALGORITHM, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
226d83a80eeSchristos /* 44 */
227d83a80eeSchristos { TYPE_SSHFP, "SSHFP", T_SSHFP, 3, 3,
228d83a80eeSchristos { RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
229d83a80eeSchristos { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
230d83a80eeSchristos /* 45 */
231d83a80eeSchristos { TYPE_IPSECKEY, "IPSECKEY", T_IPSECKEY, 4, 5,
232d83a80eeSchristos { RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_IPSECGATEWAY,
233d83a80eeSchristos RDATA_WF_BINARY },
234d83a80eeSchristos { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_IPSECGATEWAY,
235d83a80eeSchristos RDATA_ZF_BASE64 } },
236d83a80eeSchristos /* 46 */
237d83a80eeSchristos { TYPE_RRSIG, "RRSIG", T_RRSIG, 9, 9,
238d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_LONG,
239d83a80eeSchristos RDATA_WF_LONG, RDATA_WF_LONG, RDATA_WF_SHORT,
240d83a80eeSchristos RDATA_WF_LITERAL_DNAME, RDATA_WF_BINARY },
241d83a80eeSchristos { RDATA_ZF_RRTYPE, RDATA_ZF_ALGORITHM, RDATA_ZF_BYTE, RDATA_ZF_PERIOD,
242d83a80eeSchristos RDATA_ZF_TIME, RDATA_ZF_TIME, RDATA_ZF_SHORT,
243d83a80eeSchristos RDATA_ZF_LITERAL_DNAME, RDATA_ZF_BASE64 } },
244d83a80eeSchristos /* 47 */
245d83a80eeSchristos { TYPE_NSEC, "NSEC", T_NSEC, 2, 2,
246d83a80eeSchristos { RDATA_WF_LITERAL_DNAME, RDATA_WF_BINARY },
247d83a80eeSchristos { RDATA_ZF_LITERAL_DNAME, RDATA_ZF_NSEC } },
248d83a80eeSchristos /* 48 */
249d83a80eeSchristos { TYPE_DNSKEY, "DNSKEY", T_DNSKEY, 4, 4,
250d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
251d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_BYTE, RDATA_ZF_ALGORITHM,
252d83a80eeSchristos RDATA_ZF_BASE64 } },
253d83a80eeSchristos /* 49 */
254d83a80eeSchristos { TYPE_DHCID, "DHCID", T_DHCID, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_BASE64 } },
255d83a80eeSchristos /* 50 */
256d83a80eeSchristos { TYPE_NSEC3, "NSEC3", T_NSEC3, 6, 6,
257d83a80eeSchristos { RDATA_WF_BYTE, /* hash type */
258d83a80eeSchristos RDATA_WF_BYTE, /* flags */
259d83a80eeSchristos RDATA_WF_SHORT, /* iterations */
260d83a80eeSchristos RDATA_WF_BINARYWITHLENGTH, /* salt */
261d83a80eeSchristos RDATA_WF_BINARYWITHLENGTH, /* next hashed name */
262d83a80eeSchristos RDATA_WF_BINARY /* type bitmap */ },
263d83a80eeSchristos { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_SHORT, RDATA_ZF_HEX_LEN,
264d83a80eeSchristos RDATA_ZF_BASE32, RDATA_ZF_NSEC } },
265d83a80eeSchristos /* 51 */
266d83a80eeSchristos { TYPE_NSEC3PARAM, "NSEC3PARAM", T_NSEC3PARAM, 4, 4,
267d83a80eeSchristos { RDATA_WF_BYTE, /* hash type */
268d83a80eeSchristos RDATA_WF_BYTE, /* flags */
269d83a80eeSchristos RDATA_WF_SHORT, /* iterations */
270d83a80eeSchristos RDATA_WF_BINARYWITHLENGTH /* salt */ },
271d83a80eeSchristos { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_SHORT, RDATA_ZF_HEX_LEN } },
272d83a80eeSchristos /* 52 */
273d83a80eeSchristos { TYPE_TLSA, "TLSA", T_TLSA, 4, 4,
274d83a80eeSchristos { RDATA_WF_BYTE, /* usage */
275d83a80eeSchristos RDATA_WF_BYTE, /* selector */
276d83a80eeSchristos RDATA_WF_BYTE, /* matching type */
277d83a80eeSchristos RDATA_WF_BINARY }, /* certificate association data */
278d83a80eeSchristos { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
279d83a80eeSchristos /* 53 */
280da4c7d9dSchristos { TYPE_SMIMEA, "SMIMEA", T_SMIMEA, 4, 4,
281da4c7d9dSchristos { RDATA_WF_BYTE, /* usage */
282da4c7d9dSchristos RDATA_WF_BYTE, /* selector */
283da4c7d9dSchristos RDATA_WF_BYTE, /* matching type */
284da4c7d9dSchristos RDATA_WF_BINARY }, /* certificate association data */
285da4c7d9dSchristos { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
286d83a80eeSchristos /* 54 */
287d83a80eeSchristos { 54, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
288d83a80eeSchristos /* 55 - HIP [RFC 5205] */
289d83a80eeSchristos { 55, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
290d83a80eeSchristos /* 56 - NINFO */
291d83a80eeSchristos { 56, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
292d83a80eeSchristos /* 57 - RKEY */
293d83a80eeSchristos { 57, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
294d83a80eeSchristos /* 58 - TALINK */
295d83a80eeSchristos { 58, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
296d83a80eeSchristos /* 59 - CDS */
297d83a80eeSchristos { TYPE_CDS, "CDS", T_CDS, 4, 4,
298d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
299d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_ALGORITHM, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
300d83a80eeSchristos /* 60 - CDNSKEY */
301d83a80eeSchristos { TYPE_CDNSKEY, "CDNSKEY", T_CDNSKEY, 4, 4,
302d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
303d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_BYTE, RDATA_ZF_ALGORITHM,
304d83a80eeSchristos RDATA_ZF_BASE64 } },
305d83a80eeSchristos /* 61 - OPENPGPKEY */
306d83a80eeSchristos { TYPE_OPENPGPKEY, "OPENPGPKEY", T_OPENPGPKEY, 1, 1,
307d83a80eeSchristos { RDATA_WF_BINARY }, { RDATA_ZF_BASE64 } },
308d83a80eeSchristos /* 62 - CSYNC */
309d83a80eeSchristos { TYPE_CSYNC, "CSYNC", T_CSYNC, 3, 3, { RDATA_WF_LONG, RDATA_WF_SHORT,
310d83a80eeSchristos RDATA_WF_BINARY }, { RDATA_ZF_LONG, RDATA_ZF_SHORT, RDATA_ZF_NSEC } },
311f3d63a56Schristos /* 63 - ZONEMD */
312f3d63a56Schristos { TYPE_ZONEMD, "ZONEMD", T_ZONEMD, 4, 4,
313f3d63a56Schristos { RDATA_WF_LONG, /* serial */
314f3d63a56Schristos RDATA_WF_BYTE, /* scheme */
315f3d63a56Schristos RDATA_WF_BYTE, /* hash Algorithm */
316f3d63a56Schristos RDATA_WF_BINARY }, /* digest */
317f3d63a56Schristos { RDATA_ZF_PERIOD, RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
318*ee758998Schristos /* 64 - SVCB */
319*ee758998Schristos { TYPE_SVCB, "SVCB", T_SVCB, 2, MAXRDATALEN,
320*ee758998Schristos { RDATA_WF_SHORT /* SvcFieldPriority */
321*ee758998Schristos , RDATA_WF_UNCOMPRESSED_DNAME /* SvcDomainName */
322*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM /* SvcFieldValue */
323*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
324*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
325*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
326*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
327*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
328*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
329*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
330*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
331*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
332*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
333*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
334*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
335*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
336*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
337*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
338*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
339*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
340*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
341*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
342*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
343*ee758998Schristos },
344*ee758998Schristos { RDATA_ZF_SHORT , RDATA_ZF_DNAME
345*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
346*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
347*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
348*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
349*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
350*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
351*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
352*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
353*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
354*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
355*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
356*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
357*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
358*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
359*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
360*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
361*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
362*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
363*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
364*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
365*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
366*ee758998Schristos } },
367*ee758998Schristos /* 65 - HTTPS */
368*ee758998Schristos { TYPE_HTTPS, "HTTPS", T_HTTPS, 2, MAXRDATALEN,
369*ee758998Schristos { RDATA_WF_SHORT /* SvcFieldPriority */
370*ee758998Schristos , RDATA_WF_UNCOMPRESSED_DNAME /* SvcDomainName */
371*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM /* SvcFieldValue */
372*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
373*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
374*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
375*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
376*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
377*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
378*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
379*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
380*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
381*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
382*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
383*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
384*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
385*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
386*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
387*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
388*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
389*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
390*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
391*ee758998Schristos , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
392*ee758998Schristos },
393*ee758998Schristos { RDATA_ZF_SHORT , RDATA_ZF_DNAME
394*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
395*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
396*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
397*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
398*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
399*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
400*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
401*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
402*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
403*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
404*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
405*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
406*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
407*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
408*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
409*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
410*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
411*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
412*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
413*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
414*ee758998Schristos , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
415*ee758998Schristos } },
416d83a80eeSchristos /* 66 */
417d83a80eeSchristos { 66, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
418d83a80eeSchristos /* 67 */
419d83a80eeSchristos { 67, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
420d83a80eeSchristos /* 68 */
421d83a80eeSchristos { 68, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
422d83a80eeSchristos /* 69 */
423d83a80eeSchristos { 69, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
424d83a80eeSchristos /* 70 */
425d83a80eeSchristos { 70, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
426d83a80eeSchristos /* 71 */
427d83a80eeSchristos { 71, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
428d83a80eeSchristos /* 72 */
429d83a80eeSchristos { 72, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
430d83a80eeSchristos /* 73 */
431d83a80eeSchristos { 73, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
432d83a80eeSchristos /* 74 */
433d83a80eeSchristos { 74, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
434d83a80eeSchristos /* 75 */
435d83a80eeSchristos { 75, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
436d83a80eeSchristos /* 76 */
437d83a80eeSchristos { 76, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
438d83a80eeSchristos /* 77 */
439d83a80eeSchristos { 77, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
440d83a80eeSchristos /* 78 */
441d83a80eeSchristos { 78, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
442d83a80eeSchristos /* 79 */
443d83a80eeSchristos { 79, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
444d83a80eeSchristos /* 80 */
445d83a80eeSchristos { 80, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
446d83a80eeSchristos /* 81 */
447d83a80eeSchristos { 81, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
448d83a80eeSchristos /* 82 */
449d83a80eeSchristos { 82, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
450d83a80eeSchristos /* 83 */
451d83a80eeSchristos { 83, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
452d83a80eeSchristos /* 84 */
453d83a80eeSchristos { 84, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
454d83a80eeSchristos /* 85 */
455d83a80eeSchristos { 85, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
456d83a80eeSchristos /* 86 */
457d83a80eeSchristos { 86, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
458d83a80eeSchristos /* 87 */
459d83a80eeSchristos { 87, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
460d83a80eeSchristos /* 88 */
461d83a80eeSchristos { 88, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
462d83a80eeSchristos /* 89 */
463d83a80eeSchristos { 89, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
464d83a80eeSchristos /* 90 */
465d83a80eeSchristos { 90, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
466d83a80eeSchristos /* 91 */
467d83a80eeSchristos { 91, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
468d83a80eeSchristos /* 92 */
469d83a80eeSchristos { 92, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
470d83a80eeSchristos /* 93 */
471d83a80eeSchristos { 93, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
472d83a80eeSchristos /* 94 */
473d83a80eeSchristos { 94, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
474d83a80eeSchristos /* 95 */
475d83a80eeSchristos { 95, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
476d83a80eeSchristos /* 96 */
477d83a80eeSchristos { 96, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
478d83a80eeSchristos /* 97 */
479d83a80eeSchristos { 97, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
480d83a80eeSchristos /* 98 */
481d83a80eeSchristos { 98, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
482d83a80eeSchristos /* 99 */
483d83a80eeSchristos { TYPE_SPF, "SPF", T_SPF, 1, MAXRDATALEN,
484d83a80eeSchristos { RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
485d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
486d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
487d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
488d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
489d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
490d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
491d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
492d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
493d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
494d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
495d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
496d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
497d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
498d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
499d83a80eeSchristos RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT },
500d83a80eeSchristos { RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
501d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
502d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
503d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
504d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
505d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
506d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
507d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
508d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
509d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
510d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
511d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
512d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
513d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
514d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
515d83a80eeSchristos RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT } },
516d83a80eeSchristos /* 100 - UINFO */
517d83a80eeSchristos { 100, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
518d83a80eeSchristos /* 101 - UID */
519d83a80eeSchristos { 101, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
520d83a80eeSchristos /* 102 - GID */
521d83a80eeSchristos { 102, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
522d83a80eeSchristos /* 103 - UNSPEC */
523d83a80eeSchristos { 103, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
524d83a80eeSchristos /* 104 */
525d83a80eeSchristos { TYPE_NID, "NID", T_NID, 2, 2,
526d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_ILNP64 },
527d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_ILNP64 } },
528d83a80eeSchristos /* 105 */
529d83a80eeSchristos { TYPE_L32, "L32", T_L32, 2, 2,
530d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_A },
531d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_A } },
532d83a80eeSchristos /* 106 */
533d83a80eeSchristos { TYPE_L64, "L64", T_L64, 2, 2,
534d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_ILNP64 },
535d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_ILNP64 } },
536d83a80eeSchristos /* 107 */
537d83a80eeSchristos { TYPE_LP, "LP", T_LP, 2, 2,
538d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME },
539d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
540d83a80eeSchristos /* 108 */
541d83a80eeSchristos { TYPE_EUI48, "EUI48", T_EUI48, 1, 1,
542d83a80eeSchristos { RDATA_WF_EUI48 }, { RDATA_ZF_EUI48 } },
543d83a80eeSchristos /* 109 */
544d83a80eeSchristos { TYPE_EUI64, "EUI64", T_EUI64, 1, 1,
545d83a80eeSchristos { RDATA_WF_EUI64 }, { RDATA_ZF_EUI64 } },
546d83a80eeSchristos /* 110 */
547d83a80eeSchristos { 110, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
548d83a80eeSchristos /* 111 */
549d83a80eeSchristos { 111, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
550d83a80eeSchristos /* 112 */
551d83a80eeSchristos { 112, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
552d83a80eeSchristos /* 113 */
553d83a80eeSchristos { 113, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
554d83a80eeSchristos /* 114 */
555d83a80eeSchristos { 114, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
556d83a80eeSchristos /* 115 */
557d83a80eeSchristos { 115, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
558d83a80eeSchristos /* 116 */
559d83a80eeSchristos { 116, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
560d83a80eeSchristos /* 117 */
561d83a80eeSchristos { 117, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
562d83a80eeSchristos /* 118 */
563d83a80eeSchristos { 118, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
564d83a80eeSchristos /* 119 */
565d83a80eeSchristos { 119, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
566d83a80eeSchristos /* 120 */
567d83a80eeSchristos { 120, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
568d83a80eeSchristos /* 121 */
569d83a80eeSchristos { 121, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
570d83a80eeSchristos /* 122 */
571d83a80eeSchristos { 122, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
572d83a80eeSchristos /* 123 */
573d83a80eeSchristos { 123, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
574d83a80eeSchristos /* 124 */
575d83a80eeSchristos { 124, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
576d83a80eeSchristos /* 125 */
577d83a80eeSchristos { 125, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
578d83a80eeSchristos /* 126 */
579d83a80eeSchristos { 126, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
580d83a80eeSchristos /* 127 */
581d83a80eeSchristos { 127, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
582d83a80eeSchristos /* 128 */
583d83a80eeSchristos { 128, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
584d83a80eeSchristos /* 129 */
585d83a80eeSchristos { 129, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
586d83a80eeSchristos /* 130 */
587d83a80eeSchristos { 130, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
588d83a80eeSchristos /* 131 */
589d83a80eeSchristos { 131, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
590d83a80eeSchristos /* 132 */
591d83a80eeSchristos { 132, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
592d83a80eeSchristos /* 133 */
593d83a80eeSchristos { 133, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
594d83a80eeSchristos /* 134 */
595d83a80eeSchristos { 134, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
596d83a80eeSchristos /* 135 */
597d83a80eeSchristos { 135, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
598d83a80eeSchristos /* 136 */
599d83a80eeSchristos { 136, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
600d83a80eeSchristos /* 137 */
601d83a80eeSchristos { 137, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
602d83a80eeSchristos /* 138 */
603d83a80eeSchristos { 138, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
604d83a80eeSchristos /* 139 */
605d83a80eeSchristos { 139, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
606d83a80eeSchristos /* 140 */
607d83a80eeSchristos { 140, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
608d83a80eeSchristos /* 141 */
609d83a80eeSchristos { 141, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
610d83a80eeSchristos /* 142 */
611d83a80eeSchristos { 142, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
612d83a80eeSchristos /* 143 */
613d83a80eeSchristos { 143, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
614d83a80eeSchristos /* 144 */
615d83a80eeSchristos { 144, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
616d83a80eeSchristos /* 145 */
617d83a80eeSchristos { 145, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
618d83a80eeSchristos /* 146 */
619d83a80eeSchristos { 146, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
620d83a80eeSchristos /* 147 */
621d83a80eeSchristos { 147, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
622d83a80eeSchristos /* 148 */
623d83a80eeSchristos { 148, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
624d83a80eeSchristos /* 149 */
625d83a80eeSchristos { 149, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
626d83a80eeSchristos /* 150 */
627d83a80eeSchristos { 150, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
628d83a80eeSchristos /* 151 */
629d83a80eeSchristos { 151, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
630d83a80eeSchristos /* 152 */
631d83a80eeSchristos { 152, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
632d83a80eeSchristos /* 153 */
633d83a80eeSchristos { 153, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
634d83a80eeSchristos /* 154 */
635d83a80eeSchristos { 154, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
636d83a80eeSchristos /* 155 */
637d83a80eeSchristos { 155, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
638d83a80eeSchristos /* 156 */
639d83a80eeSchristos { 156, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
640d83a80eeSchristos /* 157 */
641d83a80eeSchristos { 157, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
642d83a80eeSchristos /* 158 */
643d83a80eeSchristos { 158, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
644d83a80eeSchristos /* 159 */
645d83a80eeSchristos { 159, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
646d83a80eeSchristos /* 160 */
647d83a80eeSchristos { 160, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
648d83a80eeSchristos /* 161 */
649d83a80eeSchristos { 161, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
650d83a80eeSchristos /* 162 */
651d83a80eeSchristos { 162, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
652d83a80eeSchristos /* 163 */
653d83a80eeSchristos { 163, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
654d83a80eeSchristos /* 164 */
655d83a80eeSchristos { 164, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
656d83a80eeSchristos /* 165 */
657d83a80eeSchristos { 165, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
658d83a80eeSchristos /* 166 */
659d83a80eeSchristos { 166, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
660d83a80eeSchristos /* 167 */
661d83a80eeSchristos { 167, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
662d83a80eeSchristos /* 168 */
663d83a80eeSchristos { 168, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
664d83a80eeSchristos /* 169 */
665d83a80eeSchristos { 169, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
666d83a80eeSchristos /* 170 */
667d83a80eeSchristos { 170, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
668d83a80eeSchristos /* 171 */
669d83a80eeSchristos { 171, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
670d83a80eeSchristos /* 172 */
671d83a80eeSchristos { 172, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
672d83a80eeSchristos /* 173 */
673d83a80eeSchristos { 173, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
674d83a80eeSchristos /* 174 */
675d83a80eeSchristos { 174, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
676d83a80eeSchristos /* 175 */
677d83a80eeSchristos { 175, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
678d83a80eeSchristos /* 176 */
679d83a80eeSchristos { 176, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
680d83a80eeSchristos /* 177 */
681d83a80eeSchristos { 177, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
682d83a80eeSchristos /* 178 */
683d83a80eeSchristos { 178, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
684d83a80eeSchristos /* 179 */
685d83a80eeSchristos { 179, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
686d83a80eeSchristos /* 180 */
687d83a80eeSchristos { 180, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
688d83a80eeSchristos /* 181 */
689d83a80eeSchristos { 181, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
690d83a80eeSchristos /* 182 */
691d83a80eeSchristos { 182, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
692d83a80eeSchristos /* 183 */
693d83a80eeSchristos { 183, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
694d83a80eeSchristos /* 184 */
695d83a80eeSchristos { 184, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
696d83a80eeSchristos /* 185 */
697d83a80eeSchristos { 185, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
698d83a80eeSchristos /* 186 */
699d83a80eeSchristos { 186, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
700d83a80eeSchristos /* 187 */
701d83a80eeSchristos { 187, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
702d83a80eeSchristos /* 188 */
703d83a80eeSchristos { 188, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
704d83a80eeSchristos /* 189 */
705d83a80eeSchristos { 189, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
706d83a80eeSchristos /* 190 */
707d83a80eeSchristos { 190, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
708d83a80eeSchristos /* 191 */
709d83a80eeSchristos { 191, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
710d83a80eeSchristos /* 192 */
711d83a80eeSchristos { 192, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
712d83a80eeSchristos /* 193 */
713d83a80eeSchristos { 193, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
714d83a80eeSchristos /* 194 */
715d83a80eeSchristos { 194, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
716d83a80eeSchristos /* 195 */
717d83a80eeSchristos { 195, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
718d83a80eeSchristos /* 196 */
719d83a80eeSchristos { 196, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
720d83a80eeSchristos /* 197 */
721d83a80eeSchristos { 197, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
722d83a80eeSchristos /* 198 */
723d83a80eeSchristos { 198, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
724d83a80eeSchristos /* 199 */
725d83a80eeSchristos { 199, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
726d83a80eeSchristos /* 200 */
727d83a80eeSchristos { 200, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
728d83a80eeSchristos /* 201 */
729d83a80eeSchristos { 201, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
730d83a80eeSchristos /* 202 */
731d83a80eeSchristos { 202, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
732d83a80eeSchristos /* 203 */
733d83a80eeSchristos { 203, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
734d83a80eeSchristos /* 204 */
735d83a80eeSchristos { 204, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
736d83a80eeSchristos /* 205 */
737d83a80eeSchristos { 205, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
738d83a80eeSchristos /* 206 */
739d83a80eeSchristos { 206, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
740d83a80eeSchristos /* 207 */
741d83a80eeSchristos { 207, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
742d83a80eeSchristos /* 208 */
743d83a80eeSchristos { 208, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
744d83a80eeSchristos /* 209 */
745d83a80eeSchristos { 209, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
746d83a80eeSchristos /* 210 */
747d83a80eeSchristos { 210, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
748d83a80eeSchristos /* 211 */
749d83a80eeSchristos { 211, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
750d83a80eeSchristos /* 212 */
751d83a80eeSchristos { 212, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
752d83a80eeSchristos /* 213 */
753d83a80eeSchristos { 213, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
754d83a80eeSchristos /* 214 */
755d83a80eeSchristos { 214, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
756d83a80eeSchristos /* 215 */
757d83a80eeSchristos { 215, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
758d83a80eeSchristos /* 216 */
759d83a80eeSchristos { 216, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
760d83a80eeSchristos /* 217 */
761d83a80eeSchristos { 217, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
762d83a80eeSchristos /* 218 */
763d83a80eeSchristos { 218, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
764d83a80eeSchristos /* 219 */
765d83a80eeSchristos { 219, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
766d83a80eeSchristos /* 220 */
767d83a80eeSchristos { 220, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
768d83a80eeSchristos /* 221 */
769d83a80eeSchristos { 221, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
770d83a80eeSchristos /* 222 */
771d83a80eeSchristos { 222, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
772d83a80eeSchristos /* 223 */
773d83a80eeSchristos { 223, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
774d83a80eeSchristos /* 224 */
775d83a80eeSchristos { 224, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
776d83a80eeSchristos /* 225 */
777d83a80eeSchristos { 225, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
778d83a80eeSchristos /* 226 */
779d83a80eeSchristos { 226, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
780d83a80eeSchristos /* 227 */
781d83a80eeSchristos { 227, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
782d83a80eeSchristos /* 228 */
783d83a80eeSchristos { 228, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
784d83a80eeSchristos /* 229 */
785d83a80eeSchristos { 229, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
786d83a80eeSchristos /* 230 */
787d83a80eeSchristos { 230, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
788d83a80eeSchristos /* 231 */
789d83a80eeSchristos { 231, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
790d83a80eeSchristos /* 232 */
791d83a80eeSchristos { 232, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
792d83a80eeSchristos /* 233 */
793d83a80eeSchristos { 233, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
794d83a80eeSchristos /* 234 */
795d83a80eeSchristos { 234, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
796d83a80eeSchristos /* 235 */
797d83a80eeSchristos { 235, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
798d83a80eeSchristos /* 236 */
799d83a80eeSchristos { 236, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
800d83a80eeSchristos /* 237 */
801d83a80eeSchristos { 237, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
802d83a80eeSchristos /* 238 */
803d83a80eeSchristos { 238, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
804d83a80eeSchristos /* 239 */
805d83a80eeSchristos { 239, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
806d83a80eeSchristos /* 240 */
807d83a80eeSchristos { 240, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
808d83a80eeSchristos /* 241 */
809d83a80eeSchristos { 241, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
810d83a80eeSchristos /* 242 */
811d83a80eeSchristos { 242, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
812d83a80eeSchristos /* 243 */
813d83a80eeSchristos { 243, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
814d83a80eeSchristos /* 244 */
815d83a80eeSchristos { 244, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
816d83a80eeSchristos /* 245 */
817d83a80eeSchristos { 245, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
818d83a80eeSchristos /* 246 */
819d83a80eeSchristos { 246, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
820d83a80eeSchristos /* 247 */
821d83a80eeSchristos { 247, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
822d83a80eeSchristos /* 248 */
823d83a80eeSchristos { 248, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
824d83a80eeSchristos /* 249 - TKEY [RFC 2930] */
825d83a80eeSchristos { 249, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
826d83a80eeSchristos /* 250 - TSIG [RFC 2845] */
827d83a80eeSchristos { 250, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
828d83a80eeSchristos /* 251 - IXFR [RFC 1995] */
829d83a80eeSchristos { 251, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
830d83a80eeSchristos /* 252 - AXFR [RFC 1035, RFC 5936] */
831d83a80eeSchristos { 252, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
832d83a80eeSchristos /* 253 - MAILB [RFC 1035] */
833d83a80eeSchristos { 253, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
834d83a80eeSchristos /* 254 - MAILA [RFC 1035] */
835d83a80eeSchristos { 254, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
836d83a80eeSchristos /* 255 - * [RFC 1035, RFC 6895] */
837d83a80eeSchristos { 255, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
838d83a80eeSchristos /* 256 - URI */
839d83a80eeSchristos { TYPE_URI, "URI", T_URI, 3, 3,
840d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_SHORT, RDATA_WF_LONG_TEXT },
841d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_SHORT, RDATA_ZF_LONG_TEXT } },
842d83a80eeSchristos /* 257 - CAA [RFC 6844] */
843d83a80eeSchristos { TYPE_CAA, "CAA", T_CAA, 3, 3,
844d83a80eeSchristos { RDATA_WF_BYTE, RDATA_WF_TEXT, RDATA_WF_LONG_TEXT },
845d83a80eeSchristos { RDATA_ZF_BYTE, RDATA_ZF_TAG, RDATA_ZF_LONG_TEXT } },
8463fb62404Schristos /* 258 - AVC */
8473fb62404Schristos { TYPE_AVC, "AVC", T_AVC, 1, 1,
8483fb62404Schristos { RDATA_WF_TEXTS },
8493fb62404Schristos { RDATA_ZF_TEXTS } },
850d83a80eeSchristos
851d83a80eeSchristos /* 32768 - TA */
852d83a80eeSchristos /* 32769 */
853d83a80eeSchristos { TYPE_DLV, "DLV", T_DLV, 4, 4,
854d83a80eeSchristos { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
855d83a80eeSchristos { RDATA_ZF_SHORT, RDATA_ZF_ALGORITHM, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
856d83a80eeSchristos };
857d83a80eeSchristos
858d83a80eeSchristos rrtype_descriptor_type *
rrtype_descriptor_by_type(uint16_t type)859d83a80eeSchristos rrtype_descriptor_by_type(uint16_t type)
860d83a80eeSchristos {
861d83a80eeSchristos if (type < RRTYPE_DESCRIPTORS_LENGTH)
862d83a80eeSchristos return &rrtype_descriptors[type];
863d83a80eeSchristos else if (type == TYPE_DLV)
864d83a80eeSchristos return &rrtype_descriptors[PSEUDO_TYPE_DLV];
865d83a80eeSchristos return &rrtype_descriptors[0];
866d83a80eeSchristos }
867d83a80eeSchristos
868d83a80eeSchristos rrtype_descriptor_type *
rrtype_descriptor_by_name(const char * name)869d83a80eeSchristos rrtype_descriptor_by_name(const char *name)
870d83a80eeSchristos {
871d83a80eeSchristos int i;
872d83a80eeSchristos
873d83a80eeSchristos for (i = 0; i < RRTYPE_DESCRIPTORS_LENGTH; ++i) {
874d83a80eeSchristos if (rrtype_descriptors[i].name
875d83a80eeSchristos && strcasecmp(rrtype_descriptors[i].name, name) == 0)
876d83a80eeSchristos {
877d83a80eeSchristos return &rrtype_descriptors[i];
878d83a80eeSchristos }
879d83a80eeSchristos }
880d83a80eeSchristos
881d83a80eeSchristos if (rrtype_descriptors[PSEUDO_TYPE_DLV].name
882d83a80eeSchristos && strcasecmp(rrtype_descriptors[PSEUDO_TYPE_DLV].name, name) == 0)
883d83a80eeSchristos {
884d83a80eeSchristos return &rrtype_descriptors[PSEUDO_TYPE_DLV];
885d83a80eeSchristos }
886d83a80eeSchristos
887d83a80eeSchristos return NULL;
888d83a80eeSchristos }
889d83a80eeSchristos
890d83a80eeSchristos const char *
rrtype_to_string(uint16_t rrtype)891d83a80eeSchristos rrtype_to_string(uint16_t rrtype)
892d83a80eeSchristos {
893d83a80eeSchristos static char buf[20];
894d83a80eeSchristos rrtype_descriptor_type *descriptor = rrtype_descriptor_by_type(rrtype);
895d83a80eeSchristos if (descriptor->name) {
896d83a80eeSchristos return descriptor->name;
897d83a80eeSchristos } else {
898d83a80eeSchristos snprintf(buf, sizeof(buf), "TYPE%d", (int) rrtype);
899d83a80eeSchristos return buf;
900d83a80eeSchristos }
901d83a80eeSchristos }
902d83a80eeSchristos
903d83a80eeSchristos /*
904d83a80eeSchristos * Lookup the type in the ztypes lookup table. If not found, check if
905d83a80eeSchristos * the type uses the "TYPExxx" notation for unknown types.
906d83a80eeSchristos *
907d83a80eeSchristos * Return 0 if no type matches.
908d83a80eeSchristos */
909d83a80eeSchristos uint16_t
rrtype_from_string(const char * name)910d83a80eeSchristos rrtype_from_string(const char *name)
911d83a80eeSchristos {
912d83a80eeSchristos char *end;
913d83a80eeSchristos long rrtype;
914d83a80eeSchristos rrtype_descriptor_type *entry;
915d83a80eeSchristos
916d83a80eeSchristos /* Because this routine is called during zone parse for every record,
917d83a80eeSchristos * we optimise for frequently occurring records.
918d83a80eeSchristos * Also, we optimise for 'IN' and numbers are not rr types, because
919d83a80eeSchristos * during parse this routine is called for every rr class and TTL
920d83a80eeSchristos * to determine that it is not an RR type */
921d83a80eeSchristos switch(name[0]) {
922d83a80eeSchristos case 'r':
923d83a80eeSchristos case 'R':
924d83a80eeSchristos if(strcasecmp(name+1, "RSIG") == 0) return TYPE_RRSIG;
925d83a80eeSchristos break;
926d83a80eeSchristos case 'n':
927d83a80eeSchristos case 'N':
928d83a80eeSchristos switch(name[1]) {
929d83a80eeSchristos case 's':
930d83a80eeSchristos case 'S':
931d83a80eeSchristos switch(name[2]) {
932d83a80eeSchristos case 0: return TYPE_NS;
933d83a80eeSchristos case 'e':
934d83a80eeSchristos case 'E':
935d83a80eeSchristos if(strcasecmp(name+2, "EC") == 0) return TYPE_NSEC;
936d83a80eeSchristos if(strcasecmp(name+2, "EC3") == 0) return TYPE_NSEC3;
937d83a80eeSchristos if(strcasecmp(name+2, "EC3PARAM") == 0) return TYPE_NSEC3PARAM;
938d83a80eeSchristos break;
939d83a80eeSchristos }
940d83a80eeSchristos break;
941d83a80eeSchristos }
942d83a80eeSchristos break;
943d83a80eeSchristos case 'd':
944d83a80eeSchristos case 'D':
945d83a80eeSchristos switch(name[1]) {
946d83a80eeSchristos case 's':
947d83a80eeSchristos case 'S':
948d83a80eeSchristos if(name[2]==0) return TYPE_DS;
949d83a80eeSchristos break;
950d83a80eeSchristos case 'n':
951d83a80eeSchristos case 'N':
952d83a80eeSchristos if(strcasecmp(name+2, "SKEY") == 0) return TYPE_DNSKEY;
953d83a80eeSchristos break;
954d83a80eeSchristos }
955d83a80eeSchristos break;
956d83a80eeSchristos case 'a':
957d83a80eeSchristos case 'A':
958d83a80eeSchristos switch(name[1]) {
959d83a80eeSchristos case 0: return TYPE_A;
960d83a80eeSchristos case 'a':
961d83a80eeSchristos case 'A':
962d83a80eeSchristos if(strcasecmp(name+2, "AA") == 0) return TYPE_AAAA;
963d83a80eeSchristos break;
964d83a80eeSchristos }
965d83a80eeSchristos break;
966d83a80eeSchristos case 's':
967d83a80eeSchristos case 'S':
968d83a80eeSchristos if(strcasecmp(name+1, "OA") == 0) return TYPE_SOA;
969d83a80eeSchristos break;
970d83a80eeSchristos case 't':
971d83a80eeSchristos case 'T':
972d83a80eeSchristos if(strcasecmp(name+1, "XT") == 0) return TYPE_TXT;
973d83a80eeSchristos break;
974d83a80eeSchristos case '0':
975d83a80eeSchristos case '1':
976d83a80eeSchristos case '2':
977d83a80eeSchristos case '3':
978d83a80eeSchristos case '4':
979d83a80eeSchristos case '5':
980d83a80eeSchristos case '6':
981d83a80eeSchristos case '7':
982d83a80eeSchristos case '8':
983d83a80eeSchristos case '9':
984d83a80eeSchristos return 0; /* no RR types start with 0-9 */
985d83a80eeSchristos case 'i':
986d83a80eeSchristos case 'I':
987d83a80eeSchristos switch(name[1]) {
988d83a80eeSchristos case 'n':
989d83a80eeSchristos case 'N':
990d83a80eeSchristos return 0; /* 'IN' is a class not a type */
991d83a80eeSchristos }
992d83a80eeSchristos break;
993d83a80eeSchristos }
994d83a80eeSchristos
995d83a80eeSchristos entry = rrtype_descriptor_by_name(name);
996d83a80eeSchristos if (entry) {
997d83a80eeSchristos return entry->type;
998d83a80eeSchristos }
999d83a80eeSchristos
1000d83a80eeSchristos if (strlen(name) < 5)
1001d83a80eeSchristos return 0;
1002d83a80eeSchristos
1003d83a80eeSchristos if (strncasecmp(name, "TYPE", 4) != 0)
1004d83a80eeSchristos return 0;
1005d83a80eeSchristos
1006d83a80eeSchristos if (!isdigit((unsigned char)name[4]))
1007d83a80eeSchristos return 0;
1008d83a80eeSchristos
1009d83a80eeSchristos /* The rest from the string must be a number. */
1010d83a80eeSchristos rrtype = strtol(name + 4, &end, 10);
1011d83a80eeSchristos if (*end != '\0')
1012d83a80eeSchristos return 0;
1013d83a80eeSchristos if (rrtype < 0 || rrtype > 65535L)
1014d83a80eeSchristos return 0;
1015d83a80eeSchristos
1016d83a80eeSchristos return (uint16_t) rrtype;
1017d83a80eeSchristos }
1018d83a80eeSchristos
1019d83a80eeSchristos const char *
rrclass_to_string(uint16_t rrclass)1020d83a80eeSchristos rrclass_to_string(uint16_t rrclass)
1021d83a80eeSchristos {
1022d83a80eeSchristos static char buf[20];
1023d83a80eeSchristos lookup_table_type *entry = lookup_by_id(dns_rrclasses, rrclass);
1024d83a80eeSchristos if (entry) {
1025d83a80eeSchristos assert(strlen(entry->name) < sizeof(buf));
1026d83a80eeSchristos strlcpy(buf, entry->name, sizeof(buf));
1027d83a80eeSchristos } else {
1028d83a80eeSchristos snprintf(buf, sizeof(buf), "CLASS%d", (int) rrclass);
1029d83a80eeSchristos }
1030d83a80eeSchristos return buf;
1031d83a80eeSchristos }
1032d83a80eeSchristos
1033d83a80eeSchristos uint16_t
rrclass_from_string(const char * name)1034d83a80eeSchristos rrclass_from_string(const char *name)
1035d83a80eeSchristos {
1036d83a80eeSchristos char *end;
1037d83a80eeSchristos long rrclass;
1038d83a80eeSchristos lookup_table_type *entry;
1039d83a80eeSchristos
1040d83a80eeSchristos entry = lookup_by_name(dns_rrclasses, name);
1041d83a80eeSchristos if (entry) {
1042d83a80eeSchristos return (uint16_t) entry->id;
1043d83a80eeSchristos }
1044d83a80eeSchristos
1045d83a80eeSchristos if (strlen(name) < 6)
1046d83a80eeSchristos return 0;
1047d83a80eeSchristos
1048d83a80eeSchristos if (strncasecmp(name, "CLASS", 5) != 0)
1049d83a80eeSchristos return 0;
1050d83a80eeSchristos
1051d83a80eeSchristos if (!isdigit((unsigned char)name[5]))
1052d83a80eeSchristos return 0;
1053d83a80eeSchristos
1054d83a80eeSchristos /* The rest from the string must be a number. */
1055d83a80eeSchristos rrclass = strtol(name + 5, &end, 10);
1056d83a80eeSchristos if (*end != '\0')
1057d83a80eeSchristos return 0;
1058d83a80eeSchristos if (rrclass < 0 || rrclass > 65535L)
1059d83a80eeSchristos return 0;
1060d83a80eeSchristos
1061d83a80eeSchristos return (uint16_t) rrclass;
1062d83a80eeSchristos }
1063