Skip to content

Commit c008a68

Browse files
committed
Some additional basic RR types ...
... that have rdata that is equel to already existing types: NINFO, RKEY, RESINFO, WALLET, CLA and TA
1 parent 9f5f5a0 commit c008a68

File tree

5 files changed

+151
-68
lines changed

5 files changed

+151
-68
lines changed

include/zone.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,10 @@ extern "C" {
157157
#define ZONE_TYPE_SMIMEA (53u)
158158
/** Host Identity Protocol @rfc{8005} */
159159
#define ZONE_TYPE_HIP (55u)
160+
/** NINFO */
161+
#define ZONE_TYPE_NINFO (56u)
162+
/** RKEY */
163+
#define ZONE_TYPE_RKEY (57u)
160164
/** Child DS @rfc{7344} */
161165
#define ZONE_TYPE_CDS (59u)
162166
/** DNSKEY(s) the Child wants reflected in DS @rfc{7344} */
@@ -191,7 +195,15 @@ extern "C" {
191195
#define ZONE_TYPE_CAA (257u)
192196
/** DNS Authoritative Source (DNS-AS) */
193197
#define ZONE_TYPE_AVC (258u)
194-
/** DNSSEC Lookaside Validation @rfc{4431} */
198+
/** Resolver Information as Key/Value Pairs @rfc{9606} */
199+
#define ZONE_TYPE_RESINFO (261u)
200+
/** Public wallet address */
201+
#define ZONE_TYPE_WALLET (262u)
202+
/** BP Convergence Layer Adapter */
203+
#define ZONE_TYPE_CLA (263u)
204+
/** DNSSEC Trust Authorities */
205+
#define ZONE_TYPE_TA (32768u)
206+
/** DNSSEC Lookaside Validation @rfc{4431} @obsolete */
195207
#define ZONE_TYPE_DLV (32769u)
196208
/** @} */
197209

scripts/hash.c

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ static const tuple_t types_and_classes[] = {
7474
{ "TLSA", 52, true },
7575
{ "SMIMEA", 53, true },
7676
{ "HIP", 55, true },
77+
{ "NINFO", 56, true },
78+
{ "RKEY", 57, true },
7779
{ "CDS", 59, true },
7880
{ "CDNSKEY", 60, true },
7981
{ "OPENPGPKEY", 61, true },
@@ -91,6 +93,10 @@ static const tuple_t types_and_classes[] = {
9193
{ "URI", 256, true },
9294
{ "CAA", 257, true },
9395
{ "AVC", 258, true },
96+
{ "RESINFO", 261, true },
97+
{ "WALLET", 262, true },
98+
{ "CLA", 263, true },
99+
{ "TA", 32768, true },
94100
{ "DLV", 32769, true }
95101
};
96102

@@ -117,10 +123,21 @@ static void print_table(uint64_t magic)
117123

118124
printf("static const symbol_t *hash_to_symbol[256] = {\n");
119125
for (size_t i=0; i < 256; ) {
126+
printf(" ");
120127
for (size_t j=i+8; i < j; i++) {
121-
uint16_t code = keys[i].code;
122-
char macro = !code || keys[i].type ? 'T' : 'C';
123-
printf("%c(%u), ", macro, code);
128+
uint16_t code;
129+
switch(keys[i].code) {
130+
case 32768: code = 265; // index of TA in types array in generic/types.h
131+
break;
132+
case 32769: code = 266; // index of DLV in types array in generic/types.h
133+
break;
134+
default : code = keys[i].code;
135+
break;
136+
}
137+
char macro = !code ? 'V' : keys[i].type ? 'T' : 'C';
138+
char s[10];
139+
snprintf(s, sizeof(s), " %c(%u)", macro, code);
140+
printf("%7s%s", s, (i < 255 ? "," : ""));
124141
}
125142
printf("\n");
126143
}

src/generic/type.h

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,38 +18,38 @@ static const struct {
1818
const mnemonic_t *mnemonic;
1919
int32_t code;
2020
} types_and_classes[256] = {
21-
V(0), V(0), V(0), V(0), V(0), T(44), V(0), T(3),
22-
V(0), V(0), V(0), V(0), T(11), V(0), T(42), V(0),
23-
V(0), V(0), V(0), V(0), V(0), T(62), V(0), V(0),
24-
V(0), T(99), T(25), V(0), T(53), V(0), V(0), V(0),
25-
V(0), V(0), V(0), V(0), T(50), V(0), V(0), V(0),
26-
V(0), T(39), V(0), T(21), V(0), T(5), V(0), V(0),
27-
V(0), V(0), V(0), V(0), V(0), T(1), V(0), V(0),
28-
C(1), V(0), T(105), T(49), V(0), T(59), V(0), T(29),
29-
V(0), T(20), V(0), T(6), V(0), V(0), V(0), C(3),
30-
V(0), T(63), V(0), V(0), V(0), C(2), T(43), T(37),
31-
V(0), C(4), V(0), V(0), T(45), T(104), T(2), V(0),
32-
T(23), T(55), V(0), T(24), V(0), V(0), V(0), V(0),
33-
V(0), V(0), V(0), T(7), V(0), V(0), V(0), T(12),
34-
V(0), V(0), T(60), V(0), V(0), T(36), T(10), T(15),
35-
V(0), T(26), V(0), V(0), T(19), V(0), V(0), V(0),
36-
V(0), V(0), V(0), T(65), V(0), T(8), V(0), T(108),
37-
V(0), T(38), V(0), T(9), V(0), V(0), V(0), V(0),
38-
V(0), V(0), V(0), V(0), T(46), V(0), V(0), V(0),
39-
V(0), V(0), V(0), V(0), V(0), V(0), T(27), T(48),
21+
V(0), V(0), V(0), V(0), V(0), V(0), V(0), T(20),
22+
T(3), V(0), V(0), V(0), V(0), T(261), V(0), V(0),
23+
T(60), V(0), V(0), T(105), V(0), V(0), V(0), T(258),
24+
V(0), V(0), V(0), V(0), T(30), V(0), T(28), V(0),
25+
V(0), T(16), V(0), V(0), T(56), T(14), T(22), V(0),
26+
V(0), T(13), V(0), T(47), T(21), V(0), T(65), T(27),
27+
V(0), V(0), V(0), V(0), V(0), T(1), T(62), V(0),
28+
V(0), C(1), V(0), T(44), V(0), V(0), T(33), V(0),
29+
V(0), V(0), V(0), V(0), T(63), V(0), T(266), V(0),
30+
C(3), T(99), T(37), V(0), V(0), V(0), C(2), T(43),
31+
V(0), T(50), C(4), T(51), V(0), V(0), V(0), T(2),
32+
T(49), T(42), T(19), T(23), V(0), T(6), V(0), V(0),
33+
V(0), V(0), T(29), V(0), T(7), V(0), V(0), V(0),
34+
V(0), T(57), V(0), V(0), V(0), V(0), V(0), T(36),
35+
T(15), V(0), V(0), T(26), T(11), V(0), V(0), V(0),
36+
V(0), V(0), V(0), V(0), T(104), V(0), T(8), V(0),
37+
V(0), V(0), T(38), V(0), T(9), V(0), T(64), V(0),
38+
V(0), V(0), V(0), V(0), V(0), V(0), T(39), T(52),
39+
T(24), V(0), T(5), T(106), V(0), V(0), V(0), V(0),
40+
T(265), V(0), V(0), V(0), V(0), T(25), V(0), T(18),
41+
T(48), V(0), T(53), V(0), V(0), V(0), T(59), V(0),
42+
V(0), V(0), V(0), V(0), T(4), V(0), T(10), V(0),
43+
V(0), V(0), V(0), V(0), V(0), T(55), V(0), V(0),
4044
V(0), V(0), V(0), V(0), V(0), V(0), V(0), V(0),
4145
V(0), V(0), V(0), V(0), V(0), V(0), V(0), V(0),
42-
V(0), V(0), T(28), T(4), T(51), V(0), V(0), T(30),
43-
V(0), T(106), V(0), V(0), T(16), T(64), V(0), V(0),
44-
V(0), V(0), T(257), V(0), V(0), V(0), V(0), V(0),
45-
T(256), V(0), V(0), V(0), V(0), T(22), V(0), V(0),
46-
V(0), T(33), V(0), T(61), V(0), T(52), V(0), V(0),
47-
T(259), V(0), V(0), V(0), T(14), V(0), V(0), V(0),
48-
T(13), V(0), V(0), V(0), V(0), V(0), T(107), V(0),
49-
V(0), T(18), V(0), T(17), V(0), V(0), T(35), V(0),
50-
V(0), V(0), V(0), V(0), V(0), V(0), V(0), V(0),
51-
V(0), V(0), V(0), V(0), T(258), V(0), V(0), T(109),
52-
V(0), V(0), V(0), V(0), V(0), V(0), T(47), V(0)
46+
V(0), V(0), T(61), T(12), V(0), V(0), V(0), V(0),
47+
V(0), T(108), V(0), V(0), T(257), V(0), V(0), V(0),
48+
T(35), V(0), T(263), V(0), V(0), V(0), V(0), T(107),
49+
V(0), V(0), V(0), V(0), T(17), V(0), T(45), V(0),
50+
V(0), V(0), V(0), V(0), V(0), V(0), T(46), V(0),
51+
V(0), T(109), V(0), V(0), V(0), V(0), V(0), V(0),
52+
V(0), V(0), V(0), V(0), T(262), V(0), T(256), V(0)
5353
};
5454

5555
#undef V
@@ -110,7 +110,7 @@ static really_inline uint8_t hash(uint64_t prefix)
110110
prefix = le64toh(prefix);
111111
uint32_t value = (uint32_t)((prefix >> 32) ^ prefix);
112112
// magic value is generated using hash.c, rerun when adding types
113-
return (uint8_t)((value * 3523264710ull) >> 32);
113+
return (uint8_t)((value * 3523548378ull) >> 32);
114114
}
115115

116116
nonnull_all

src/generic/types.h

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2805,6 +2805,19 @@ static const rdata_info_t hip_rdata_fields[] = {
28052805
FIELD("Rendezvous Servers")
28062806
};
28072807

2808+
// https://www.iana.org/assignments/dns-parameters/NINFO/ninfo-completed-template
2809+
static const rdata_info_t ninfo_rdata_fields[] = {
2810+
FIELD("text")
2811+
};
2812+
2813+
// https://www.iana.org/assignments/dns-parameters/RKEY/rkey-completed-template
2814+
static const rdata_info_t rkey_rdata_fields[] = {
2815+
FIELD("flags"),
2816+
FIELD("protocol"),
2817+
FIELD("algorithm"),
2818+
FIELD("publickey")
2819+
};
2820+
28082821
static const rdata_info_t openpgpkey_rdata_fields[] = {
28092822
FIELD("key")
28102823
};
@@ -2886,6 +2899,28 @@ static const rdata_info_t avc_rdata_fields[] = {
28862899
FIELD("text")
28872900
};
28882901

2902+
// RFC 9606
2903+
static const rdata_info_t resinfo_rdata_fields[] = {
2904+
FIELD("text")
2905+
};
2906+
2907+
// https://www.iana.org/assignments/dns-parameters/WALLET/wallet-completed-template
2908+
static const rdata_info_t wallet_rdata_fields[] = {
2909+
FIELD("text")
2910+
};
2911+
2912+
// https://www.iana.org/assignments/dns-parameters/CLA/cla-completed-template
2913+
static const rdata_info_t cla_rdata_fields[] = {
2914+
FIELD("text")
2915+
};
2916+
2917+
static const rdata_info_t ta_rdata_fields[] = {
2918+
FIELD("key"),
2919+
FIELD("algorithm"),
2920+
FIELD("type"),
2921+
FIELD("digest")
2922+
};
2923+
28892924
static const rdata_info_t dlv_rdata_fields[] = {
28902925
FIELD("key"),
28912926
FIELD("algorithm"),
@@ -3010,9 +3045,11 @@ static const type_info_t types[] = {
30103045

30113046
TYPE("HIP", ZONE_TYPE_HIP, ZONE_CLASS_ANY, FIELDS(hip_rdata_fields),
30123047
check_hip_rr, parse_hip_rdata),
3048+
TYPE("NINFO", ZONE_TYPE_NINFO, ZONE_CLASS_ANY, FIELDS(ninfo_rdata_fields),
3049+
check_txt_rr, parse_txt_rdata),
3050+
TYPE("RKEY", ZONE_TYPE_RKEY, ZONE_CLASS_ANY, FIELDS(rkey_rdata_fields),
3051+
check_dnskey_rr, parse_dnskey_rdata),
30133052

3014-
UNKNOWN_TYPE(56),
3015-
UNKNOWN_TYPE(57),
30163053
UNKNOWN_TYPE(58),
30173054

30183055
TYPE("CDS", ZONE_TYPE_CDS, ZONE_CLASS_ANY, FIELDS(cds_rdata_fields),
@@ -3238,6 +3275,23 @@ static const type_info_t types[] = {
32383275
check_caa_rr, parse_caa_rdata),
32393276
TYPE("AVC", ZONE_TYPE_AVC, ZONE_CLASS_ANY, FIELDS(avc_rdata_fields),
32403277
check_txt_rr, parse_txt_rdata),
3278+
3279+
UNKNOWN_TYPE(259),
3280+
UNKNOWN_TYPE(260),
3281+
3282+
TYPE("RESINFO", ZONE_TYPE_RESINFO, ZONE_CLASS_ANY, FIELDS(resinfo_rdata_fields),
3283+
check_txt_rr, parse_txt_rdata),
3284+
TYPE("WALLET", ZONE_TYPE_WALLET, ZONE_CLASS_ANY, FIELDS(wallet_rdata_fields),
3285+
check_txt_rr, parse_txt_rdata),
3286+
TYPE("CLA", ZONE_TYPE_CLA, ZONE_CLASS_ANY, FIELDS(cla_rdata_fields),
3287+
check_txt_rr, parse_txt_rdata),
3288+
3289+
UNKNOWN_TYPE(264),
3290+
3291+
/* Map 32768 in hash.c to 265 */
3292+
TYPE("TA", ZONE_TYPE_TA, ZONE_CLASS_ANY, FIELDS(ta_rdata_fields), // obsolete
3293+
check_ds_rr, parse_ds_rdata),
3294+
/* Map 32769 in hash.c to 266 */
32413295
TYPE("DLV", ZONE_TYPE_DLV, ZONE_CLASS_ANY, FIELDS(dlv_rdata_fields), // obsolete
32423296
check_ds_rr, parse_ds_rdata)
32433297
};

src/westmere/type.h

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,38 +18,38 @@ static const struct {
1818
const mnemonic_t *mnemonic;
1919
int32_t code;
2020
} types_and_classes[256] = {
21-
V(0), V(0), V(0), V(0), V(0), T(44), V(0), T(3),
22-
V(0), V(0), V(0), V(0), T(11), V(0), T(42), V(0),
23-
V(0), V(0), V(0), V(0), V(0), T(62), V(0), V(0),
24-
V(0), T(99), T(25), V(0), T(53), V(0), V(0), V(0),
25-
V(0), V(0), V(0), V(0), T(50), V(0), V(0), V(0),
26-
V(0), T(39), V(0), T(21), V(0), T(5), V(0), V(0),
27-
V(0), V(0), V(0), V(0), V(0), T(1), V(0), V(0),
28-
C(1), V(0), T(105), T(49), V(0), T(59), V(0), T(29),
29-
V(0), T(20), V(0), T(6), V(0), V(0), V(0), C(3),
30-
V(0), T(63), V(0), V(0), V(0), C(2), T(43), T(37),
31-
V(0), C(4), V(0), V(0), T(45), T(104), T(2), V(0),
32-
T(23), T(55), V(0), T(24), V(0), V(0), V(0), V(0),
33-
V(0), V(0), V(0), T(7), V(0), V(0), V(0), T(12),
34-
V(0), V(0), T(60), V(0), V(0), T(36), T(10), T(15),
35-
V(0), T(26), V(0), V(0), T(19), V(0), V(0), V(0),
36-
V(0), V(0), V(0), T(65), V(0), T(8), V(0), T(108),
37-
V(0), T(38), V(0), T(9), V(0), V(0), V(0), V(0),
38-
V(0), V(0), V(0), V(0), T(46), V(0), V(0), V(0),
39-
V(0), V(0), V(0), V(0), V(0), V(0), T(27), T(48),
21+
V(0), V(0), V(0), V(0), V(0), V(0), V(0), T(20),
22+
T(3), V(0), V(0), V(0), V(0), T(261), V(0), V(0),
23+
T(60), V(0), V(0), T(105), V(0), V(0), V(0), T(258),
24+
V(0), V(0), V(0), V(0), T(30), V(0), T(28), V(0),
25+
V(0), T(16), V(0), V(0), T(56), T(14), T(22), V(0),
26+
V(0), T(13), V(0), T(47), T(21), V(0), T(65), T(27),
27+
V(0), V(0), V(0), V(0), V(0), T(1), T(62), V(0),
28+
V(0), C(1), V(0), T(44), V(0), V(0), T(33), V(0),
29+
V(0), V(0), V(0), V(0), T(63), V(0), T(266), V(0),
30+
C(3), T(99), T(37), V(0), V(0), V(0), C(2), T(43),
31+
V(0), T(50), C(4), T(51), V(0), V(0), V(0), T(2),
32+
T(49), T(42), T(19), T(23), V(0), T(6), V(0), V(0),
33+
V(0), V(0), T(29), V(0), T(7), V(0), V(0), V(0),
34+
V(0), T(57), V(0), V(0), V(0), V(0), V(0), T(36),
35+
T(15), V(0), V(0), T(26), T(11), V(0), V(0), V(0),
36+
V(0), V(0), V(0), V(0), T(104), V(0), T(8), V(0),
37+
V(0), V(0), T(38), V(0), T(9), V(0), T(64), V(0),
38+
V(0), V(0), V(0), V(0), V(0), V(0), T(39), T(52),
39+
T(24), V(0), T(5), T(106), V(0), V(0), V(0), V(0),
40+
T(265), V(0), V(0), V(0), V(0), T(25), V(0), T(18),
41+
T(48), V(0), T(53), V(0), V(0), V(0), T(59), V(0),
42+
V(0), V(0), V(0), V(0), T(4), V(0), T(10), V(0),
43+
V(0), V(0), V(0), V(0), V(0), T(55), V(0), V(0),
4044
V(0), V(0), V(0), V(0), V(0), V(0), V(0), V(0),
4145
V(0), V(0), V(0), V(0), V(0), V(0), V(0), V(0),
42-
V(0), V(0), T(28), T(4), T(51), V(0), V(0), T(30),
43-
V(0), T(106), V(0), V(0), T(16), T(64), V(0), V(0),
44-
V(0), V(0), T(257), V(0), V(0), V(0), V(0), V(0),
45-
T(256), V(0), V(0), V(0), V(0), T(22), V(0), V(0),
46-
V(0), T(33), V(0), T(61), V(0), T(52), V(0), V(0),
47-
T(259), V(0), V(0), V(0), T(14), V(0), V(0), V(0),
48-
T(13), V(0), V(0), V(0), V(0), V(0), T(107), V(0),
49-
V(0), T(18), V(0), T(17), V(0), V(0), T(35), V(0),
50-
V(0), V(0), V(0), V(0), V(0), V(0), V(0), V(0),
51-
V(0), V(0), V(0), V(0), T(258), V(0), V(0), T(109),
52-
V(0), V(0), V(0), V(0), V(0), V(0), T(47), V(0)
46+
V(0), V(0), T(61), T(12), V(0), V(0), V(0), V(0),
47+
V(0), T(108), V(0), V(0), T(257), V(0), V(0), V(0),
48+
T(35), V(0), T(263), V(0), V(0), V(0), V(0), T(107),
49+
V(0), V(0), V(0), V(0), T(17), V(0), T(45), V(0),
50+
V(0), V(0), V(0), V(0), V(0), V(0), T(46), V(0),
51+
V(0), T(109), V(0), V(0), V(0), V(0), V(0), V(0),
52+
V(0), V(0), V(0), V(0), T(262), V(0), T(256), V(0)
5353
};
5454

5555
#undef V
@@ -102,7 +102,7 @@ static really_inline uint8_t hash(uint64_t prefix)
102102
{
103103
uint32_t value = (uint32_t)((prefix >> 32) ^ prefix);
104104
// magic value is generated using hash.c, rerun when adding types
105-
return (uint8_t)((value * 3523264710ull) >> 32);
105+
return (uint8_t)((value * 3523548378ull) >> 32);
106106
}
107107

108108
nonnull_all

0 commit comments

Comments
 (0)