162ac0c33Sjakob /*
262ac0c33Sjakob * dns.c -- DNS definitions.
362ac0c33Sjakob *
4dd5b221eSsthen * Copyright (c) 2001-2006, NLnet Labs. All rights reserved.
562ac0c33Sjakob *
662ac0c33Sjakob * See LICENSE for the license.
762ac0c33Sjakob *
862ac0c33Sjakob */
962ac0c33Sjakob
10d11a62c8Ssthen #include "config.h"
1162ac0c33Sjakob
1262ac0c33Sjakob #include <sys/types.h>
1362ac0c33Sjakob #include <sys/socket.h>
1462ac0c33Sjakob #include <netinet/in.h>
1562ac0c33Sjakob #include <arpa/inet.h>
1662ac0c33Sjakob #include <ctype.h>
1762ac0c33Sjakob #include <netdb.h>
1862ac0c33Sjakob #include <string.h>
1962ac0c33Sjakob #ifdef HAVE_STRINGS_H
2062ac0c33Sjakob #include <strings.h>
2162ac0c33Sjakob #endif
2262ac0c33Sjakob
2362ac0c33Sjakob #include "dns.h"
2462ac0c33Sjakob #include "zonec.h"
2562ac0c33Sjakob #include "zparser.h"
2662ac0c33Sjakob
2762ac0c33Sjakob /* Taken from RFC 1035, section 3.2.4. */
2862ac0c33Sjakob static lookup_table_type dns_rrclasses[] = {
2962ac0c33Sjakob { CLASS_IN, "IN" }, /* the Internet */
3062ac0c33Sjakob { CLASS_CS, "CS" }, /* the CSNET class (Obsolete) */
3162ac0c33Sjakob { CLASS_CH, "CH" }, /* the CHAOS class */
3262ac0c33Sjakob { CLASS_HS, "HS" }, /* Hesiod */
3362ac0c33Sjakob { 0, NULL }
3462ac0c33Sjakob };
3562ac0c33Sjakob
3662ac0c33Sjakob static rrtype_descriptor_type rrtype_descriptors[(RRTYPE_DESCRIPTORS_LENGTH+1)] = {
3762ac0c33Sjakob /* 0 */
3862ac0c33Sjakob { 0, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
3962ac0c33Sjakob /* 1 */
4062ac0c33Sjakob { TYPE_A, "A", T_A, 1, 1,
4162ac0c33Sjakob { RDATA_WF_A }, { RDATA_ZF_A } },
4262ac0c33Sjakob /* 2 */
4362ac0c33Sjakob { TYPE_NS, "NS", T_NS, 1, 1,
4462ac0c33Sjakob { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
4562ac0c33Sjakob /* 3 */
4662ac0c33Sjakob { TYPE_MD, "MD", T_MD, 1, 1,
4762ac0c33Sjakob { RDATA_WF_UNCOMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
4862ac0c33Sjakob /* 4 */
4962ac0c33Sjakob { TYPE_MF, "MF", T_MF, 1, 1,
5062ac0c33Sjakob { RDATA_WF_UNCOMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
5162ac0c33Sjakob /* 5 */
5262ac0c33Sjakob { TYPE_CNAME, "CNAME", T_CNAME, 1, 1,
5362ac0c33Sjakob { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
5462ac0c33Sjakob /* 6 */
5562ac0c33Sjakob { TYPE_SOA, "SOA", T_SOA, 7, 7,
5662ac0c33Sjakob { RDATA_WF_COMPRESSED_DNAME, RDATA_WF_COMPRESSED_DNAME, RDATA_WF_LONG,
5762ac0c33Sjakob RDATA_WF_LONG, RDATA_WF_LONG, RDATA_WF_LONG, RDATA_WF_LONG },
5862ac0c33Sjakob { RDATA_ZF_DNAME, RDATA_ZF_DNAME, RDATA_ZF_PERIOD, RDATA_ZF_PERIOD,
5962ac0c33Sjakob RDATA_ZF_PERIOD, RDATA_ZF_PERIOD, RDATA_ZF_PERIOD } },
6062ac0c33Sjakob /* 7 */
6162ac0c33Sjakob { TYPE_MB, "MB", T_MB, 1, 1,
6262ac0c33Sjakob { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
6362ac0c33Sjakob /* 8 */
6462ac0c33Sjakob { TYPE_MG, "MG", T_MG, 1, 1,
6562ac0c33Sjakob { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
6662ac0c33Sjakob /* 9 */
6762ac0c33Sjakob { TYPE_MR, "MR", T_MR, 1, 1,
6862ac0c33Sjakob { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
6962ac0c33Sjakob /* 10 */
7062ac0c33Sjakob { TYPE_NULL, "NULL", T_UTYPE, 1, 1,
7162ac0c33Sjakob { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
7262ac0c33Sjakob /* 11 */
7362ac0c33Sjakob { TYPE_WKS, "WKS", T_WKS, 2, 2,
7462ac0c33Sjakob { RDATA_WF_A, RDATA_WF_BINARY },
7562ac0c33Sjakob { RDATA_ZF_A, RDATA_ZF_SERVICES } },
7662ac0c33Sjakob /* 12 */
7762ac0c33Sjakob { TYPE_PTR, "PTR", T_PTR, 1, 1,
7862ac0c33Sjakob { RDATA_WF_COMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
7962ac0c33Sjakob /* 13 */
8062ac0c33Sjakob { TYPE_HINFO, "HINFO", T_HINFO, 2, 2,
8162ac0c33Sjakob { RDATA_WF_TEXT, RDATA_WF_TEXT }, { RDATA_ZF_TEXT, RDATA_ZF_TEXT } },
8262ac0c33Sjakob /* 14 */
8362ac0c33Sjakob { TYPE_MINFO, "MINFO", T_MINFO, 2, 2,
8462ac0c33Sjakob { RDATA_WF_COMPRESSED_DNAME, RDATA_WF_COMPRESSED_DNAME },
8562ac0c33Sjakob { RDATA_ZF_DNAME, RDATA_ZF_DNAME } },
8662ac0c33Sjakob /* 15 */
8762ac0c33Sjakob { TYPE_MX, "MX", T_MX, 2, 2,
8862ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_COMPRESSED_DNAME },
8962ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
9062ac0c33Sjakob /* 16 */
91f72b2965Sjakob { TYPE_TXT, "TXT", T_TXT, 1, 1,
92f72b2965Sjakob { RDATA_WF_TEXTS },
93f72b2965Sjakob { RDATA_ZF_TEXTS } },
9462ac0c33Sjakob /* 17 */
9562ac0c33Sjakob { TYPE_RP, "RP", T_RP, 2, 2,
969c620270Ssthen { RDATA_WF_UNCOMPRESSED_DNAME, RDATA_WF_UNCOMPRESSED_DNAME },
9762ac0c33Sjakob { RDATA_ZF_DNAME, RDATA_ZF_DNAME } },
9862ac0c33Sjakob /* 18 */
9962ac0c33Sjakob { TYPE_AFSDB, "AFSDB", T_AFSDB, 2, 2,
1009c620270Ssthen { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME },
10162ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
10262ac0c33Sjakob /* 19 */
10362ac0c33Sjakob { TYPE_X25, "X25", T_X25, 1, 1,
10462ac0c33Sjakob { RDATA_WF_TEXT },
10562ac0c33Sjakob { RDATA_ZF_TEXT } },
10662ac0c33Sjakob /* 20 */
10762ac0c33Sjakob { TYPE_ISDN, "ISDN", T_ISDN, 1, 2,
10862ac0c33Sjakob { RDATA_WF_TEXT, RDATA_WF_TEXT },
10962ac0c33Sjakob { RDATA_ZF_TEXT, RDATA_ZF_TEXT } },
11062ac0c33Sjakob /* 21 */
11162ac0c33Sjakob { TYPE_RT, "RT", T_RT, 2, 2,
1129c620270Ssthen { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME },
11362ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
11462ac0c33Sjakob /* 22 */
11562ac0c33Sjakob { TYPE_NSAP, "NSAP", T_NSAP, 1, 1,
11662ac0c33Sjakob { RDATA_WF_BINARY },
11762ac0c33Sjakob { RDATA_ZF_NSAP } },
11862ac0c33Sjakob /* 23 */
11962ac0c33Sjakob { 23, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
12062ac0c33Sjakob /* 24 */
12162ac0c33Sjakob { TYPE_SIG, "SIG", T_SIG, 9, 9,
12262ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_LONG,
12362ac0c33Sjakob RDATA_WF_LONG, RDATA_WF_LONG, RDATA_WF_SHORT,
124eab1363eSsthen RDATA_WF_LITERAL_DNAME, RDATA_WF_BINARY },
125eab1363eSsthen { RDATA_ZF_RRTYPE, RDATA_ZF_ALGORITHM, RDATA_ZF_BYTE, RDATA_ZF_PERIOD,
126eab1363eSsthen RDATA_ZF_TIME, RDATA_ZF_TIME, RDATA_ZF_SHORT,
127eab1363eSsthen RDATA_ZF_LITERAL_DNAME, RDATA_ZF_BASE64 } },
12862ac0c33Sjakob /* 25 */
12962ac0c33Sjakob { TYPE_KEY, "KEY", T_KEY, 4, 4,
13062ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
13162ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_BYTE, RDATA_ZF_ALGORITHM,
13262ac0c33Sjakob RDATA_ZF_BASE64 } },
13362ac0c33Sjakob /* 26 */
13462ac0c33Sjakob { TYPE_PX, "PX", T_PX, 3, 3,
13562ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME,
13662ac0c33Sjakob RDATA_WF_UNCOMPRESSED_DNAME },
13762ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_DNAME, RDATA_ZF_DNAME } },
13862ac0c33Sjakob /* 27 */
13962ac0c33Sjakob { 27, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
14062ac0c33Sjakob /* 28 */
14162ac0c33Sjakob { TYPE_AAAA, "AAAA", T_AAAA, 1, 1,
14262ac0c33Sjakob { RDATA_WF_AAAA },
14362ac0c33Sjakob { RDATA_ZF_AAAA } },
14462ac0c33Sjakob /* 29 */
14562ac0c33Sjakob { TYPE_LOC, "LOC", T_LOC, 1, 1,
14662ac0c33Sjakob { RDATA_WF_BINARY },
14762ac0c33Sjakob { RDATA_ZF_LOC } },
14862ac0c33Sjakob /* 30 */
14962ac0c33Sjakob { TYPE_NXT, "NXT", T_NXT, 2, 2,
15062ac0c33Sjakob { RDATA_WF_UNCOMPRESSED_DNAME, RDATA_WF_BINARY },
15162ac0c33Sjakob { RDATA_ZF_DNAME, RDATA_ZF_NXT } },
15262ac0c33Sjakob /* 31 */
15362ac0c33Sjakob { 31, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
15462ac0c33Sjakob /* 32 */
15562ac0c33Sjakob { 32, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
15662ac0c33Sjakob /* 33 */
15762ac0c33Sjakob { TYPE_SRV, "SRV", T_SRV, 4, 4,
15862ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_SHORT, RDATA_WF_SHORT,
15962ac0c33Sjakob RDATA_WF_UNCOMPRESSED_DNAME },
16062ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_SHORT, RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
16162ac0c33Sjakob /* 34 */
16262ac0c33Sjakob { 34, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
16362ac0c33Sjakob /* 35 */
16462ac0c33Sjakob { TYPE_NAPTR, "NAPTR", T_NAPTR, 6, 6,
16562ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_SHORT, RDATA_WF_TEXT, RDATA_WF_TEXT,
16662ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_UNCOMPRESSED_DNAME },
16762ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_SHORT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
16862ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_DNAME } },
16962ac0c33Sjakob /* 36 */
17062ac0c33Sjakob { TYPE_KX, "KX", T_KX, 2, 2,
17162ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME },
17262ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
17362ac0c33Sjakob /* 37 */
17462ac0c33Sjakob { TYPE_CERT, "CERT", T_CERT, 4, 4,
17562ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BINARY },
17662ac0c33Sjakob { RDATA_ZF_CERTIFICATE_TYPE, RDATA_ZF_SHORT, RDATA_ZF_ALGORITHM,
17762ac0c33Sjakob RDATA_ZF_BASE64 } },
17862ac0c33Sjakob /* 38 */
17962ac0c33Sjakob { TYPE_A6, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
18062ac0c33Sjakob /* 39 */
18162ac0c33Sjakob { TYPE_DNAME, "DNAME", T_DNAME, 1, 1,
18262ac0c33Sjakob { RDATA_WF_UNCOMPRESSED_DNAME }, { RDATA_ZF_DNAME } },
18362ac0c33Sjakob /* 40 */
18462ac0c33Sjakob { 40, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
18562ac0c33Sjakob /* 41 */
18662ac0c33Sjakob { TYPE_OPT, "OPT", T_UTYPE, 1, 1,
18762ac0c33Sjakob { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
18862ac0c33Sjakob /* 42 */
18962ac0c33Sjakob { TYPE_APL, "APL", T_APL, 0, MAXRDATALEN,
19062ac0c33Sjakob { RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
19162ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
19262ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
19362ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
19462ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
19562ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
19662ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
19762ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
19862ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
19962ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
20062ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
20162ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
20262ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
20362ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
20462ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL,
20562ac0c33Sjakob RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL, RDATA_WF_APL },
20662ac0c33Sjakob { RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
20762ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
20862ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
20962ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
21062ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
21162ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
21262ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
21362ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
21462ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
21562ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
21662ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
21762ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
21862ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
21962ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
22062ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL,
22162ac0c33Sjakob RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL, RDATA_ZF_APL } },
22262ac0c33Sjakob /* 43 */
22362ac0c33Sjakob { TYPE_DS, "DS", T_DS, 4, 4,
22462ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
22562ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_ALGORITHM, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
22662ac0c33Sjakob /* 44 */
22762ac0c33Sjakob { TYPE_SSHFP, "SSHFP", T_SSHFP, 3, 3,
22862ac0c33Sjakob { RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
22962ac0c33Sjakob { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
23062ac0c33Sjakob /* 45 */
23162ac0c33Sjakob { TYPE_IPSECKEY, "IPSECKEY", T_IPSECKEY, 4, 5,
23262ac0c33Sjakob { RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_IPSECGATEWAY,
23362ac0c33Sjakob RDATA_WF_BINARY },
23462ac0c33Sjakob { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_IPSECGATEWAY,
23562ac0c33Sjakob RDATA_ZF_BASE64 } },
23662ac0c33Sjakob /* 46 */
23762ac0c33Sjakob { TYPE_RRSIG, "RRSIG", T_RRSIG, 9, 9,
23862ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_LONG,
23962ac0c33Sjakob RDATA_WF_LONG, RDATA_WF_LONG, RDATA_WF_SHORT,
24062ac0c33Sjakob RDATA_WF_LITERAL_DNAME, RDATA_WF_BINARY },
24162ac0c33Sjakob { RDATA_ZF_RRTYPE, RDATA_ZF_ALGORITHM, RDATA_ZF_BYTE, RDATA_ZF_PERIOD,
24262ac0c33Sjakob RDATA_ZF_TIME, RDATA_ZF_TIME, RDATA_ZF_SHORT,
24362ac0c33Sjakob RDATA_ZF_LITERAL_DNAME, RDATA_ZF_BASE64 } },
24462ac0c33Sjakob /* 47 */
24562ac0c33Sjakob { TYPE_NSEC, "NSEC", T_NSEC, 2, 2,
24662ac0c33Sjakob { RDATA_WF_LITERAL_DNAME, RDATA_WF_BINARY },
24762ac0c33Sjakob { RDATA_ZF_LITERAL_DNAME, RDATA_ZF_NSEC } },
24862ac0c33Sjakob /* 48 */
24962ac0c33Sjakob { TYPE_DNSKEY, "DNSKEY", T_DNSKEY, 4, 4,
25062ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
25162ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_BYTE, RDATA_ZF_ALGORITHM,
25262ac0c33Sjakob RDATA_ZF_BASE64 } },
25362ac0c33Sjakob /* 49 */
25462ac0c33Sjakob { TYPE_DHCID, "DHCID", T_DHCID, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_BASE64 } },
25562ac0c33Sjakob /* 50 */
25662ac0c33Sjakob { TYPE_NSEC3, "NSEC3", T_NSEC3, 6, 6,
25762ac0c33Sjakob { RDATA_WF_BYTE, /* hash type */
25862ac0c33Sjakob RDATA_WF_BYTE, /* flags */
25962ac0c33Sjakob RDATA_WF_SHORT, /* iterations */
26062ac0c33Sjakob RDATA_WF_BINARYWITHLENGTH, /* salt */
26162ac0c33Sjakob RDATA_WF_BINARYWITHLENGTH, /* next hashed name */
26262ac0c33Sjakob RDATA_WF_BINARY /* type bitmap */ },
26362ac0c33Sjakob { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_SHORT, RDATA_ZF_HEX_LEN,
26462ac0c33Sjakob RDATA_ZF_BASE32, RDATA_ZF_NSEC } },
26562ac0c33Sjakob /* 51 */
26662ac0c33Sjakob { TYPE_NSEC3PARAM, "NSEC3PARAM", T_NSEC3PARAM, 4, 4,
26762ac0c33Sjakob { RDATA_WF_BYTE, /* hash type */
26862ac0c33Sjakob RDATA_WF_BYTE, /* flags */
26962ac0c33Sjakob RDATA_WF_SHORT, /* iterations */
27062ac0c33Sjakob RDATA_WF_BINARYWITHLENGTH /* salt */ },
27162ac0c33Sjakob { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_SHORT, RDATA_ZF_HEX_LEN } },
27262ac0c33Sjakob /* 52 */
273d11a62c8Ssthen { TYPE_TLSA, "TLSA", T_TLSA, 4, 4,
274d11a62c8Ssthen { RDATA_WF_BYTE, /* usage */
275d11a62c8Ssthen RDATA_WF_BYTE, /* selector */
276d11a62c8Ssthen RDATA_WF_BYTE, /* matching type */
277d11a62c8Ssthen RDATA_WF_BINARY }, /* certificate association data */
278d11a62c8Ssthen { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
27962ac0c33Sjakob /* 53 */
28018e77612Sflorian { TYPE_SMIMEA, "SMIMEA", T_SMIMEA, 4, 4,
28118e77612Sflorian { RDATA_WF_BYTE, /* usage */
28218e77612Sflorian RDATA_WF_BYTE, /* selector */
28318e77612Sflorian RDATA_WF_BYTE, /* matching type */
28418e77612Sflorian RDATA_WF_BINARY }, /* certificate association data */
28518e77612Sflorian { RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
28662ac0c33Sjakob /* 54 */
28762ac0c33Sjakob { 54, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
288a302926fSbrad /* 55 - HIP [RFC 5205] */
28962ac0c33Sjakob { 55, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
290a302926fSbrad /* 56 - NINFO */
29162ac0c33Sjakob { 56, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
292a302926fSbrad /* 57 - RKEY */
29362ac0c33Sjakob { 57, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
294a302926fSbrad /* 58 - TALINK */
29562ac0c33Sjakob { 58, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
296a302926fSbrad /* 59 - CDS */
29703739794Sbrad { TYPE_CDS, "CDS", T_CDS, 4, 4,
29803739794Sbrad { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
29903739794Sbrad { RDATA_ZF_SHORT, RDATA_ZF_ALGORITHM, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
30003739794Sbrad /* 60 - CDNSKEY */
30103739794Sbrad { TYPE_CDNSKEY, "CDNSKEY", T_CDNSKEY, 4, 4,
30203739794Sbrad { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
30303739794Sbrad { RDATA_ZF_SHORT, RDATA_ZF_BYTE, RDATA_ZF_ALGORITHM,
30403739794Sbrad RDATA_ZF_BASE64 } },
305c1e73312Sflorian /* 61 - OPENPGPKEY */
306c1e73312Sflorian { TYPE_OPENPGPKEY, "OPENPGPKEY", T_OPENPGPKEY, 1, 1,
307c1e73312Sflorian { RDATA_WF_BINARY }, { RDATA_ZF_BASE64 } },
308c1e73312Sflorian /* 62 - CSYNC */
309275a8d89Sflorian { TYPE_CSYNC, "CSYNC", T_CSYNC, 3, 3, { RDATA_WF_LONG, RDATA_WF_SHORT,
310275a8d89Sflorian RDATA_WF_BINARY }, { RDATA_ZF_LONG, RDATA_ZF_SHORT, RDATA_ZF_NSEC } },
311977db6e5Sflorian /* 63 - ZONEMD */
312977db6e5Sflorian { TYPE_ZONEMD, "ZONEMD", T_ZONEMD, 4, 4,
313977db6e5Sflorian { RDATA_WF_LONG, /* serial */
314977db6e5Sflorian RDATA_WF_BYTE, /* scheme */
315977db6e5Sflorian RDATA_WF_BYTE, /* hash Algorithm */
316977db6e5Sflorian RDATA_WF_BINARY }, /* digest */
317977db6e5Sflorian { RDATA_ZF_PERIOD, RDATA_ZF_BYTE, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
318*063644e9Sflorian /* 64 - SVCB */
319*063644e9Sflorian { TYPE_SVCB, "SVCB", T_SVCB, 2, MAXRDATALEN,
320*063644e9Sflorian { RDATA_WF_SHORT /* SvcFieldPriority */
321*063644e9Sflorian , RDATA_WF_UNCOMPRESSED_DNAME /* SvcDomainName */
322*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM /* SvcFieldValue */
323*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
324*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
325*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
326*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
327*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
328*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
329*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
330*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
331*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
332*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
333*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
334*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
335*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
336*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
337*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
338*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
339*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
340*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
341*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
342*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
343*063644e9Sflorian },
344*063644e9Sflorian { RDATA_ZF_SHORT , RDATA_ZF_DNAME
345*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
346*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
347*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
348*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
349*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
350*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
351*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
352*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
353*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
354*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
355*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
356*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
357*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
358*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
359*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
360*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
361*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
362*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
363*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
364*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
365*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
366*063644e9Sflorian } },
367*063644e9Sflorian /* 65 - HTTPS */
368*063644e9Sflorian { TYPE_HTTPS, "HTTPS", T_HTTPS, 2, MAXRDATALEN,
369*063644e9Sflorian { RDATA_WF_SHORT /* SvcFieldPriority */
370*063644e9Sflorian , RDATA_WF_UNCOMPRESSED_DNAME /* SvcDomainName */
371*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM /* SvcFieldValue */
372*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
373*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
374*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
375*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
376*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
377*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
378*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
379*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
380*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
381*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
382*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
383*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
384*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
385*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
386*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
387*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
388*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
389*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
390*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
391*063644e9Sflorian , RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM, RDATA_WF_SVCPARAM
392*063644e9Sflorian },
393*063644e9Sflorian { RDATA_ZF_SHORT , RDATA_ZF_DNAME
394*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
395*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
396*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
397*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
398*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
399*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
400*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
401*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
402*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
403*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
404*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
405*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
406*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
407*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
408*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
409*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
410*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
411*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
412*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
413*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
414*063644e9Sflorian , RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM, RDATA_ZF_SVCPARAM
415*063644e9Sflorian } },
41662ac0c33Sjakob /* 66 */
41762ac0c33Sjakob { 66, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
41862ac0c33Sjakob /* 67 */
41962ac0c33Sjakob { 67, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
42062ac0c33Sjakob /* 68 */
42162ac0c33Sjakob { 68, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
42262ac0c33Sjakob /* 69 */
42362ac0c33Sjakob { 69, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
42462ac0c33Sjakob /* 70 */
42562ac0c33Sjakob { 70, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
42662ac0c33Sjakob /* 71 */
42762ac0c33Sjakob { 71, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
42862ac0c33Sjakob /* 72 */
42962ac0c33Sjakob { 72, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
43062ac0c33Sjakob /* 73 */
43162ac0c33Sjakob { 73, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
43262ac0c33Sjakob /* 74 */
43362ac0c33Sjakob { 74, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
43462ac0c33Sjakob /* 75 */
43562ac0c33Sjakob { 75, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
43662ac0c33Sjakob /* 76 */
43762ac0c33Sjakob { 76, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
43862ac0c33Sjakob /* 77 */
43962ac0c33Sjakob { 77, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
44062ac0c33Sjakob /* 78 */
44162ac0c33Sjakob { 78, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
44262ac0c33Sjakob /* 79 */
44362ac0c33Sjakob { 79, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
44462ac0c33Sjakob /* 80 */
44562ac0c33Sjakob { 80, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
44662ac0c33Sjakob /* 81 */
44762ac0c33Sjakob { 81, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
44862ac0c33Sjakob /* 82 */
44962ac0c33Sjakob { 82, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
45062ac0c33Sjakob /* 83 */
45162ac0c33Sjakob { 83, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
45262ac0c33Sjakob /* 84 */
45362ac0c33Sjakob { 84, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
45462ac0c33Sjakob /* 85 */
45562ac0c33Sjakob { 85, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
45662ac0c33Sjakob /* 86 */
45762ac0c33Sjakob { 86, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
45862ac0c33Sjakob /* 87 */
45962ac0c33Sjakob { 87, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
46062ac0c33Sjakob /* 88 */
46162ac0c33Sjakob { 88, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
46262ac0c33Sjakob /* 89 */
46362ac0c33Sjakob { 89, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
46462ac0c33Sjakob /* 90 */
46562ac0c33Sjakob { 90, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
46662ac0c33Sjakob /* 91 */
46762ac0c33Sjakob { 91, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
46862ac0c33Sjakob /* 92 */
46962ac0c33Sjakob { 92, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
47062ac0c33Sjakob /* 93 */
47162ac0c33Sjakob { 93, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
47262ac0c33Sjakob /* 94 */
47362ac0c33Sjakob { 94, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
47462ac0c33Sjakob /* 95 */
47562ac0c33Sjakob { 95, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
47662ac0c33Sjakob /* 96 */
47762ac0c33Sjakob { 96, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
47862ac0c33Sjakob /* 97 */
47962ac0c33Sjakob { 97, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
48062ac0c33Sjakob /* 98 */
48162ac0c33Sjakob { 98, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
48262ac0c33Sjakob /* 99 */
48362ac0c33Sjakob { TYPE_SPF, "SPF", T_SPF, 1, MAXRDATALEN,
48462ac0c33Sjakob { RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
48562ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
48662ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
48762ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
48862ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
48962ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
49062ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
49162ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
49262ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
49362ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
49462ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
49562ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
49662ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
49762ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
49862ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT,
49962ac0c33Sjakob RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT, RDATA_WF_TEXT },
50062ac0c33Sjakob { RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
50162ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
50262ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
50362ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
50462ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
50562ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
50662ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
50762ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
50862ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
50962ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
51062ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
51162ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
51262ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
51362ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
51462ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT,
51562ac0c33Sjakob RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT } },
516a302926fSbrad /* 100 - UINFO */
51775343be4Ssthen { 100, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
518a302926fSbrad /* 101 - UID */
51975343be4Ssthen { 101, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
520a302926fSbrad /* 102 - GID */
52175343be4Ssthen { 102, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
522a302926fSbrad /* 103 - UNSPEC */
52375343be4Ssthen { 103, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
52475343be4Ssthen /* 104 */
52575343be4Ssthen { TYPE_NID, "NID", T_NID, 2, 2,
52675343be4Ssthen { RDATA_WF_SHORT, RDATA_WF_ILNP64 },
52775343be4Ssthen { RDATA_ZF_SHORT, RDATA_ZF_ILNP64 } },
52875343be4Ssthen /* 105 */
52975343be4Ssthen { TYPE_L32, "L32", T_L32, 2, 2,
53075343be4Ssthen { RDATA_WF_SHORT, RDATA_WF_A },
53175343be4Ssthen { RDATA_ZF_SHORT, RDATA_ZF_A } },
53275343be4Ssthen /* 106 */
53375343be4Ssthen { TYPE_L64, "L64", T_L64, 2, 2,
53475343be4Ssthen { RDATA_WF_SHORT, RDATA_WF_ILNP64 },
53575343be4Ssthen { RDATA_ZF_SHORT, RDATA_ZF_ILNP64 } },
53675343be4Ssthen /* 107 */
53775343be4Ssthen { TYPE_LP, "LP", T_LP, 2, 2,
53875343be4Ssthen { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME },
53975343be4Ssthen { RDATA_ZF_SHORT, RDATA_ZF_DNAME } },
5409c620270Ssthen /* 108 */
5419c620270Ssthen { TYPE_EUI48, "EUI48", T_EUI48, 1, 1,
5429c620270Ssthen { RDATA_WF_EUI48 }, { RDATA_ZF_EUI48 } },
5439c620270Ssthen /* 109 */
5449c620270Ssthen { TYPE_EUI64, "EUI64", T_EUI64, 1, 1,
5459c620270Ssthen { RDATA_WF_EUI64 }, { RDATA_ZF_EUI64 } },
546a302926fSbrad /* 110 */
547a302926fSbrad { 110, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
548a302926fSbrad /* 111 */
549a302926fSbrad { 111, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
550a302926fSbrad /* 112 */
551a302926fSbrad { 112, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
552a302926fSbrad /* 113 */
553a302926fSbrad { 113, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
554a302926fSbrad /* 114 */
555a302926fSbrad { 114, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
556a302926fSbrad /* 115 */
557a302926fSbrad { 115, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
558a302926fSbrad /* 116 */
559a302926fSbrad { 116, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
560a302926fSbrad /* 117 */
561a302926fSbrad { 117, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
562a302926fSbrad /* 118 */
563a302926fSbrad { 118, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
564a302926fSbrad /* 119 */
565a302926fSbrad { 119, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
566a302926fSbrad /* 120 */
567a302926fSbrad { 120, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
568a302926fSbrad /* 121 */
569a302926fSbrad { 121, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
570a302926fSbrad /* 122 */
571a302926fSbrad { 122, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
572a302926fSbrad /* 123 */
573a302926fSbrad { 123, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
574a302926fSbrad /* 124 */
575a302926fSbrad { 124, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
576a302926fSbrad /* 125 */
577a302926fSbrad { 125, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
578a302926fSbrad /* 126 */
579a302926fSbrad { 126, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
580a302926fSbrad /* 127 */
581a302926fSbrad { 127, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
582a302926fSbrad /* 128 */
583a302926fSbrad { 128, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
584a302926fSbrad /* 129 */
585a302926fSbrad { 129, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
586a302926fSbrad /* 130 */
587a302926fSbrad { 130, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
588a302926fSbrad /* 131 */
589a302926fSbrad { 131, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
590a302926fSbrad /* 132 */
591a302926fSbrad { 132, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
592a302926fSbrad /* 133 */
593a302926fSbrad { 133, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
594a302926fSbrad /* 134 */
595a302926fSbrad { 134, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
596a302926fSbrad /* 135 */
597a302926fSbrad { 135, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
598a302926fSbrad /* 136 */
599a302926fSbrad { 136, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
600a302926fSbrad /* 137 */
601a302926fSbrad { 137, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
602a302926fSbrad /* 138 */
603a302926fSbrad { 138, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
604a302926fSbrad /* 139 */
605a302926fSbrad { 139, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
606a302926fSbrad /* 140 */
607a302926fSbrad { 140, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
608a302926fSbrad /* 141 */
609a302926fSbrad { 141, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
610a302926fSbrad /* 142 */
611a302926fSbrad { 142, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
612a302926fSbrad /* 143 */
613a302926fSbrad { 143, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
614a302926fSbrad /* 144 */
615a302926fSbrad { 144, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
616a302926fSbrad /* 145 */
617a302926fSbrad { 145, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
618a302926fSbrad /* 146 */
619a302926fSbrad { 146, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
620a302926fSbrad /* 147 */
621a302926fSbrad { 147, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
622a302926fSbrad /* 148 */
623a302926fSbrad { 148, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
624a302926fSbrad /* 149 */
625a302926fSbrad { 149, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
626a302926fSbrad /* 150 */
627a302926fSbrad { 150, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
628a302926fSbrad /* 151 */
629a302926fSbrad { 151, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
630a302926fSbrad /* 152 */
631a302926fSbrad { 152, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
632a302926fSbrad /* 153 */
633a302926fSbrad { 153, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
634a302926fSbrad /* 154 */
635a302926fSbrad { 154, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
636a302926fSbrad /* 155 */
637a302926fSbrad { 155, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
638a302926fSbrad /* 156 */
639a302926fSbrad { 156, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
640a302926fSbrad /* 157 */
641a302926fSbrad { 157, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
642a302926fSbrad /* 158 */
643a302926fSbrad { 158, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
644a302926fSbrad /* 159 */
645a302926fSbrad { 159, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
646a302926fSbrad /* 160 */
647a302926fSbrad { 160, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
648a302926fSbrad /* 161 */
649a302926fSbrad { 161, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
650a302926fSbrad /* 162 */
651a302926fSbrad { 162, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
652a302926fSbrad /* 163 */
653a302926fSbrad { 163, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
654a302926fSbrad /* 164 */
655a302926fSbrad { 164, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
656a302926fSbrad /* 165 */
657a302926fSbrad { 165, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
658a302926fSbrad /* 166 */
659a302926fSbrad { 166, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
660a302926fSbrad /* 167 */
661a302926fSbrad { 167, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
662a302926fSbrad /* 168 */
663a302926fSbrad { 168, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
664a302926fSbrad /* 169 */
665a302926fSbrad { 169, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
666a302926fSbrad /* 170 */
667a302926fSbrad { 170, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
668a302926fSbrad /* 171 */
669a302926fSbrad { 171, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
670a302926fSbrad /* 172 */
671a302926fSbrad { 172, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
672a302926fSbrad /* 173 */
673a302926fSbrad { 173, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
674a302926fSbrad /* 174 */
675a302926fSbrad { 174, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
676a302926fSbrad /* 175 */
677a302926fSbrad { 175, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
678a302926fSbrad /* 176 */
679a302926fSbrad { 176, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
680a302926fSbrad /* 177 */
681a302926fSbrad { 177, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
682a302926fSbrad /* 178 */
683a302926fSbrad { 178, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
684a302926fSbrad /* 179 */
685a302926fSbrad { 179, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
686a302926fSbrad /* 180 */
687a302926fSbrad { 180, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
688a302926fSbrad /* 181 */
689a302926fSbrad { 181, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
690a302926fSbrad /* 182 */
691a302926fSbrad { 182, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
692a302926fSbrad /* 183 */
693a302926fSbrad { 183, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
694a302926fSbrad /* 184 */
695a302926fSbrad { 184, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
696a302926fSbrad /* 185 */
697a302926fSbrad { 185, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
698a302926fSbrad /* 186 */
699a302926fSbrad { 186, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
700a302926fSbrad /* 187 */
701a302926fSbrad { 187, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
702a302926fSbrad /* 188 */
703a302926fSbrad { 188, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
704a302926fSbrad /* 189 */
705a302926fSbrad { 189, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
706a302926fSbrad /* 190 */
707a302926fSbrad { 190, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
708a302926fSbrad /* 191 */
709a302926fSbrad { 191, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
710a302926fSbrad /* 192 */
711a302926fSbrad { 192, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
712a302926fSbrad /* 193 */
713a302926fSbrad { 193, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
714a302926fSbrad /* 194 */
715a302926fSbrad { 194, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
716a302926fSbrad /* 195 */
717a302926fSbrad { 195, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
718a302926fSbrad /* 196 */
719a302926fSbrad { 196, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
720a302926fSbrad /* 197 */
721a302926fSbrad { 197, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
722a302926fSbrad /* 198 */
723a302926fSbrad { 198, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
724a302926fSbrad /* 199 */
725a302926fSbrad { 199, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
726a302926fSbrad /* 200 */
727a302926fSbrad { 200, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
728a302926fSbrad /* 201 */
729a302926fSbrad { 201, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
730a302926fSbrad /* 202 */
731a302926fSbrad { 202, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
732a302926fSbrad /* 203 */
733a302926fSbrad { 203, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
734a302926fSbrad /* 204 */
735a302926fSbrad { 204, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
736a302926fSbrad /* 205 */
737a302926fSbrad { 205, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
738a302926fSbrad /* 206 */
739a302926fSbrad { 206, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
740a302926fSbrad /* 207 */
741a302926fSbrad { 207, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
742a302926fSbrad /* 208 */
743a302926fSbrad { 208, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
744a302926fSbrad /* 209 */
745a302926fSbrad { 209, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
746a302926fSbrad /* 210 */
747a302926fSbrad { 210, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
748a302926fSbrad /* 211 */
749a302926fSbrad { 211, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
750a302926fSbrad /* 212 */
751a302926fSbrad { 212, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
752a302926fSbrad /* 213 */
753a302926fSbrad { 213, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
754a302926fSbrad /* 214 */
755a302926fSbrad { 214, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
756a302926fSbrad /* 215 */
757a302926fSbrad { 215, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
758a302926fSbrad /* 216 */
759a302926fSbrad { 216, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
760a302926fSbrad /* 217 */
761a302926fSbrad { 217, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
762a302926fSbrad /* 218 */
763a302926fSbrad { 218, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
764a302926fSbrad /* 219 */
765a302926fSbrad { 219, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
766a302926fSbrad /* 220 */
767a302926fSbrad { 220, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
768a302926fSbrad /* 221 */
769a302926fSbrad { 221, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
770a302926fSbrad /* 222 */
771a302926fSbrad { 222, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
772a302926fSbrad /* 223 */
773a302926fSbrad { 223, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
774a302926fSbrad /* 224 */
775a302926fSbrad { 224, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
776a302926fSbrad /* 225 */
777a302926fSbrad { 225, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
778a302926fSbrad /* 226 */
779a302926fSbrad { 226, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
780a302926fSbrad /* 227 */
781a302926fSbrad { 227, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
782a302926fSbrad /* 228 */
783a302926fSbrad { 228, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
784a302926fSbrad /* 229 */
785a302926fSbrad { 229, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
786a302926fSbrad /* 230 */
787a302926fSbrad { 230, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
788a302926fSbrad /* 231 */
789a302926fSbrad { 231, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
790a302926fSbrad /* 232 */
791a302926fSbrad { 232, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
792a302926fSbrad /* 233 */
793a302926fSbrad { 233, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
794a302926fSbrad /* 234 */
795a302926fSbrad { 234, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
796a302926fSbrad /* 235 */
797a302926fSbrad { 235, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
798a302926fSbrad /* 236 */
799a302926fSbrad { 236, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
800a302926fSbrad /* 237 */
801a302926fSbrad { 237, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
802a302926fSbrad /* 238 */
803a302926fSbrad { 238, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
804a302926fSbrad /* 239 */
805a302926fSbrad { 239, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
806a302926fSbrad /* 240 */
807a302926fSbrad { 240, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
808a302926fSbrad /* 241 */
809a302926fSbrad { 241, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
810a302926fSbrad /* 242 */
811a302926fSbrad { 242, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
812a302926fSbrad /* 243 */
813a302926fSbrad { 243, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
814a302926fSbrad /* 244 */
815a302926fSbrad { 244, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
816a302926fSbrad /* 245 */
817a302926fSbrad { 245, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
818a302926fSbrad /* 246 */
819a302926fSbrad { 246, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
820a302926fSbrad /* 247 */
821a302926fSbrad { 247, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
822a302926fSbrad /* 248 */
823a302926fSbrad { 248, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
824a302926fSbrad /* 249 - TKEY [RFC 2930] */
825a302926fSbrad { 249, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
826a302926fSbrad /* 250 - TSIG [RFC 2845] */
827a302926fSbrad { 250, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
828a302926fSbrad /* 251 - IXFR [RFC 1995] */
829a302926fSbrad { 251, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
830a302926fSbrad /* 252 - AXFR [RFC 1035, RFC 5936] */
831a302926fSbrad { 252, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
832a302926fSbrad /* 253 - MAILB [RFC 1035] */
833a302926fSbrad { 253, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
834a302926fSbrad /* 254 - MAILA [RFC 1035] */
835a302926fSbrad { 254, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
836a302926fSbrad /* 255 - * [RFC 1035, RFC 6895] */
837a302926fSbrad { 255, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } },
838a302926fSbrad /* 256 - URI */
839e3d8a0a5Ssthen { TYPE_URI, "URI", T_URI, 3, 3,
840e3d8a0a5Ssthen { RDATA_WF_SHORT, RDATA_WF_SHORT, RDATA_WF_LONG_TEXT },
841e3d8a0a5Ssthen { RDATA_ZF_SHORT, RDATA_ZF_SHORT, RDATA_ZF_LONG_TEXT } },
842a302926fSbrad /* 257 - CAA [RFC 6844] */
843a302926fSbrad { TYPE_CAA, "CAA", T_CAA, 3, 3,
844a302926fSbrad { RDATA_WF_BYTE, RDATA_WF_TEXT, RDATA_WF_LONG_TEXT },
845a302926fSbrad { RDATA_ZF_BYTE, RDATA_ZF_TAG, RDATA_ZF_LONG_TEXT } },
846fb800cb5Sflorian /* 258 - AVC */
847fb800cb5Sflorian { TYPE_AVC, "AVC", T_AVC, 1, 1,
848fb800cb5Sflorian { RDATA_WF_TEXTS },
849fb800cb5Sflorian { RDATA_ZF_TEXTS } },
8509c620270Ssthen
851a302926fSbrad /* 32768 - TA */
85262ac0c33Sjakob /* 32769 */
85362ac0c33Sjakob { TYPE_DLV, "DLV", T_DLV, 4, 4,
85462ac0c33Sjakob { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY },
85562ac0c33Sjakob { RDATA_ZF_SHORT, RDATA_ZF_ALGORITHM, RDATA_ZF_BYTE, RDATA_ZF_HEX } },
85662ac0c33Sjakob };
85762ac0c33Sjakob
85862ac0c33Sjakob rrtype_descriptor_type *
rrtype_descriptor_by_type(uint16_t type)85962ac0c33Sjakob rrtype_descriptor_by_type(uint16_t type)
86062ac0c33Sjakob {
86162ac0c33Sjakob if (type < RRTYPE_DESCRIPTORS_LENGTH)
86262ac0c33Sjakob return &rrtype_descriptors[type];
86362ac0c33Sjakob else if (type == TYPE_DLV)
86462ac0c33Sjakob return &rrtype_descriptors[PSEUDO_TYPE_DLV];
86562ac0c33Sjakob return &rrtype_descriptors[0];
86662ac0c33Sjakob }
86762ac0c33Sjakob
86862ac0c33Sjakob rrtype_descriptor_type *
rrtype_descriptor_by_name(const char * name)86962ac0c33Sjakob rrtype_descriptor_by_name(const char *name)
87062ac0c33Sjakob {
87162ac0c33Sjakob int i;
87262ac0c33Sjakob
87362ac0c33Sjakob for (i = 0; i < RRTYPE_DESCRIPTORS_LENGTH; ++i) {
87462ac0c33Sjakob if (rrtype_descriptors[i].name
87562ac0c33Sjakob && strcasecmp(rrtype_descriptors[i].name, name) == 0)
87662ac0c33Sjakob {
87762ac0c33Sjakob return &rrtype_descriptors[i];
87862ac0c33Sjakob }
87962ac0c33Sjakob }
88062ac0c33Sjakob
88162ac0c33Sjakob if (rrtype_descriptors[PSEUDO_TYPE_DLV].name
88262ac0c33Sjakob && strcasecmp(rrtype_descriptors[PSEUDO_TYPE_DLV].name, name) == 0)
88362ac0c33Sjakob {
88462ac0c33Sjakob return &rrtype_descriptors[PSEUDO_TYPE_DLV];
88562ac0c33Sjakob }
88662ac0c33Sjakob
88762ac0c33Sjakob return NULL;
88862ac0c33Sjakob }
88962ac0c33Sjakob
89062ac0c33Sjakob const char *
rrtype_to_string(uint16_t rrtype)89162ac0c33Sjakob rrtype_to_string(uint16_t rrtype)
89262ac0c33Sjakob {
89362ac0c33Sjakob static char buf[20];
89462ac0c33Sjakob rrtype_descriptor_type *descriptor = rrtype_descriptor_by_type(rrtype);
89562ac0c33Sjakob if (descriptor->name) {
89662ac0c33Sjakob return descriptor->name;
89762ac0c33Sjakob } else {
89862ac0c33Sjakob snprintf(buf, sizeof(buf), "TYPE%d", (int) rrtype);
89962ac0c33Sjakob return buf;
90062ac0c33Sjakob }
90162ac0c33Sjakob }
90262ac0c33Sjakob
90362ac0c33Sjakob /*
90462ac0c33Sjakob * Lookup the type in the ztypes lookup table. If not found, check if
90562ac0c33Sjakob * the type uses the "TYPExxx" notation for unknown types.
90662ac0c33Sjakob *
90762ac0c33Sjakob * Return 0 if no type matches.
90862ac0c33Sjakob */
90962ac0c33Sjakob uint16_t
rrtype_from_string(const char * name)91062ac0c33Sjakob rrtype_from_string(const char *name)
91162ac0c33Sjakob {
91262ac0c33Sjakob char *end;
91362ac0c33Sjakob long rrtype;
91462ac0c33Sjakob rrtype_descriptor_type *entry;
91562ac0c33Sjakob
916533110e2Sbrad /* Because this routine is called during zone parse for every record,
9172fd875a4Ssthen * we optimise for frequently occurring records.
918533110e2Sbrad * Also, we optimise for 'IN' and numbers are not rr types, because
919533110e2Sbrad * during parse this routine is called for every rr class and TTL
920533110e2Sbrad * to determine that it is not an RR type */
921533110e2Sbrad switch(name[0]) {
922533110e2Sbrad case 'r':
923533110e2Sbrad case 'R':
924533110e2Sbrad if(strcasecmp(name+1, "RSIG") == 0) return TYPE_RRSIG;
925533110e2Sbrad break;
926533110e2Sbrad case 'n':
927533110e2Sbrad case 'N':
928533110e2Sbrad switch(name[1]) {
929533110e2Sbrad case 's':
930533110e2Sbrad case 'S':
931533110e2Sbrad switch(name[2]) {
932533110e2Sbrad case 0: return TYPE_NS;
933533110e2Sbrad case 'e':
934533110e2Sbrad case 'E':
935533110e2Sbrad if(strcasecmp(name+2, "EC") == 0) return TYPE_NSEC;
936533110e2Sbrad if(strcasecmp(name+2, "EC3") == 0) return TYPE_NSEC3;
937533110e2Sbrad if(strcasecmp(name+2, "EC3PARAM") == 0) return TYPE_NSEC3PARAM;
938533110e2Sbrad break;
939533110e2Sbrad }
940533110e2Sbrad break;
941533110e2Sbrad }
942533110e2Sbrad break;
943533110e2Sbrad case 'd':
944533110e2Sbrad case 'D':
945533110e2Sbrad switch(name[1]) {
946533110e2Sbrad case 's':
947533110e2Sbrad case 'S':
948533110e2Sbrad if(name[2]==0) return TYPE_DS;
949533110e2Sbrad break;
950533110e2Sbrad case 'n':
951533110e2Sbrad case 'N':
952533110e2Sbrad if(strcasecmp(name+2, "SKEY") == 0) return TYPE_DNSKEY;
953533110e2Sbrad break;
954533110e2Sbrad }
955533110e2Sbrad break;
956533110e2Sbrad case 'a':
957533110e2Sbrad case 'A':
958533110e2Sbrad switch(name[1]) {
959533110e2Sbrad case 0: return TYPE_A;
960533110e2Sbrad case 'a':
961533110e2Sbrad case 'A':
962533110e2Sbrad if(strcasecmp(name+2, "AA") == 0) return TYPE_AAAA;
963533110e2Sbrad break;
964533110e2Sbrad }
965533110e2Sbrad break;
966533110e2Sbrad case 's':
967533110e2Sbrad case 'S':
968533110e2Sbrad if(strcasecmp(name+1, "OA") == 0) return TYPE_SOA;
969533110e2Sbrad break;
970533110e2Sbrad case 't':
971533110e2Sbrad case 'T':
972533110e2Sbrad if(strcasecmp(name+1, "XT") == 0) return TYPE_TXT;
973533110e2Sbrad break;
974533110e2Sbrad case '0':
975533110e2Sbrad case '1':
976533110e2Sbrad case '2':
977533110e2Sbrad case '3':
978533110e2Sbrad case '4':
979533110e2Sbrad case '5':
980533110e2Sbrad case '6':
981533110e2Sbrad case '7':
982533110e2Sbrad case '8':
983533110e2Sbrad case '9':
984533110e2Sbrad return 0; /* no RR types start with 0-9 */
985533110e2Sbrad case 'i':
986533110e2Sbrad case 'I':
987533110e2Sbrad switch(name[1]) {
988533110e2Sbrad case 'n':
989533110e2Sbrad case 'N':
990533110e2Sbrad return 0; /* 'IN' is a class not a type */
991533110e2Sbrad }
992533110e2Sbrad break;
993533110e2Sbrad }
994533110e2Sbrad
99562ac0c33Sjakob entry = rrtype_descriptor_by_name(name);
99662ac0c33Sjakob if (entry) {
99762ac0c33Sjakob return entry->type;
99862ac0c33Sjakob }
99962ac0c33Sjakob
100062ac0c33Sjakob if (strlen(name) < 5)
100162ac0c33Sjakob return 0;
100262ac0c33Sjakob
100362ac0c33Sjakob if (strncasecmp(name, "TYPE", 4) != 0)
100462ac0c33Sjakob return 0;
100562ac0c33Sjakob
100682cafdebSmillert if (!isdigit((unsigned char)name[4]))
100762ac0c33Sjakob return 0;
100862ac0c33Sjakob
100962ac0c33Sjakob /* The rest from the string must be a number. */
101062ac0c33Sjakob rrtype = strtol(name + 4, &end, 10);
101162ac0c33Sjakob if (*end != '\0')
101262ac0c33Sjakob return 0;
101362ac0c33Sjakob if (rrtype < 0 || rrtype > 65535L)
101462ac0c33Sjakob return 0;
101562ac0c33Sjakob
101662ac0c33Sjakob return (uint16_t) rrtype;
101762ac0c33Sjakob }
101862ac0c33Sjakob
101962ac0c33Sjakob const char *
rrclass_to_string(uint16_t rrclass)102062ac0c33Sjakob rrclass_to_string(uint16_t rrclass)
102162ac0c33Sjakob {
102262ac0c33Sjakob static char buf[20];
102362ac0c33Sjakob lookup_table_type *entry = lookup_by_id(dns_rrclasses, rrclass);
102462ac0c33Sjakob if (entry) {
102562ac0c33Sjakob assert(strlen(entry->name) < sizeof(buf));
1026e2b41070Schl strlcpy(buf, entry->name, sizeof(buf));
102762ac0c33Sjakob } else {
102862ac0c33Sjakob snprintf(buf, sizeof(buf), "CLASS%d", (int) rrclass);
102962ac0c33Sjakob }
103062ac0c33Sjakob return buf;
103162ac0c33Sjakob }
103262ac0c33Sjakob
103362ac0c33Sjakob uint16_t
rrclass_from_string(const char * name)103462ac0c33Sjakob rrclass_from_string(const char *name)
103562ac0c33Sjakob {
103662ac0c33Sjakob char *end;
103762ac0c33Sjakob long rrclass;
103862ac0c33Sjakob lookup_table_type *entry;
103962ac0c33Sjakob
104062ac0c33Sjakob entry = lookup_by_name(dns_rrclasses, name);
104162ac0c33Sjakob if (entry) {
104262ac0c33Sjakob return (uint16_t) entry->id;
104362ac0c33Sjakob }
104462ac0c33Sjakob
104562ac0c33Sjakob if (strlen(name) < 6)
104662ac0c33Sjakob return 0;
104762ac0c33Sjakob
104862ac0c33Sjakob if (strncasecmp(name, "CLASS", 5) != 0)
104962ac0c33Sjakob return 0;
105062ac0c33Sjakob
105182cafdebSmillert if (!isdigit((unsigned char)name[5]))
105262ac0c33Sjakob return 0;
105362ac0c33Sjakob
105462ac0c33Sjakob /* The rest from the string must be a number. */
105562ac0c33Sjakob rrclass = strtol(name + 5, &end, 10);
105662ac0c33Sjakob if (*end != '\0')
105762ac0c33Sjakob return 0;
105862ac0c33Sjakob if (rrclass < 0 || rrclass > 65535L)
105962ac0c33Sjakob return 0;
106062ac0c33Sjakob
106162ac0c33Sjakob return (uint16_t) rrclass;
106262ac0c33Sjakob }
1063