libs: support for RESINFO RRtype, RFC 9696

closes #962
This commit is contained in:
Jan Hák 2025-12-11 14:17:30 +01:00 committed by Daniel Salzman
parent e6a3f8a788
commit b7a1769bbc
11 changed files with 72054 additions and 70939 deletions

View file

@ -42,7 +42,7 @@ DNS features:
TXT, RP, AFSDB, RT, KEY, AAAA, LOC, SRV, NAPTR, KX, CERT, DNAME, APL, DS,
SSHFP, IPSECKEY, RRSIG, NSEC, DNSKEY, DHCID, NSEC3, NSEC3PARAM, TLSA, SMIMEA,
CDS, CDNSKEY, OPENPGPKEY, CSYNC, ZONEMD, SVCB, HTTPS, SPF, NID, L32, L64, LP,
DSYNC, EUI48, EUI64, URI, CAA, WALLET, and Unknown
DSYNC, EUI48, EUI64, URI, CAA, RESINFO, WALLET, and Unknown
Server features:

View file

@ -143,6 +143,8 @@ static const knot_rdata_descriptor_t rdata_descriptors[] = {
KNOT_RDATA_WF_END }, "URI" },
[KNOT_RRTYPE_CAA] = { { KNOT_RDATA_WF_REMAINDER,
KNOT_RDATA_WF_END }, "CAA" },
[KNOT_RRTYPE_RESINFO] = { { KNOT_RDATA_WF_REMAINDER,
KNOT_RDATA_WF_END }, "RESINFO" },
[KNOT_RRTYPE_WALLET] = { { KNOT_RDATA_WF_REMAINDER,
KNOT_RDATA_WF_END }, "WALLET" },
};

View file

@ -118,6 +118,7 @@ enum knot_rr_type {
KNOT_RRTYPE_URI = 256, /*!< Uniform resource identifier. */
KNOT_RRTYPE_CAA = 257, /*!< Certification authority restriction. */
KNOT_RRTYPE_RESINFO = 261, /*!< Resolver information as key/value pairs. */
KNOT_RRTYPE_WALLET = 262, /*!< Public wallet address. */
};

View file

@ -2306,6 +2306,7 @@ static int txt_dump_data(rrset_dump_params_t *p, uint16_t type)
return dump_mx(p);
case KNOT_RRTYPE_TXT:
case KNOT_RRTYPE_SPF:
case KNOT_RRTYPE_RESINFO:
case KNOT_RRTYPE_WALLET:
return dump_txt(p);
case KNOT_RRTYPE_KEY:

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1420,6 +1420,7 @@
| "SVCB"i %{ type_num(KNOT_RRTYPE_SVCB, &rdata_tail); }
| "HTTPS"i %{ type_num(KNOT_RRTYPE_HTTPS, &rdata_tail); }
| "DSYNC"i %{ type_num(KNOT_RRTYPE_DSYNC, &rdata_tail); }
| "RESINFO"i %{ type_num(KNOT_RRTYPE_RESINFO, &rdata_tail); }
| "WALLET"i %{ type_num(KNOT_RRTYPE_WALLET, &rdata_tail); }
| "TYPE"i . num16 # TYPE0-TYPE65535.
) $!_type_error %_ret . all_wchar;
@ -1489,6 +1490,7 @@
| "SVCB"i %{ window_add_bit(KNOT_RRTYPE_SVCB, s); }
| "HTTPS"i %{ window_add_bit(KNOT_RRTYPE_HTTPS, s); }
| "DSYNC"i %{ window_add_bit(KNOT_RRTYPE_DSYNC, s); }
| "RESINFO"i %{ window_add_bit(KNOT_RRTYPE_RESINFO, s); }
| "WALLET"i %{ window_add_bit(KNOT_RRTYPE_WALLET, s); }
| "TYPE"i . type_bitmap # TYPE0-TYPE65535.
);
@ -2105,6 +2107,7 @@
fcall r_data_mx;
case KNOT_RRTYPE_TXT:
case KNOT_RRTYPE_SPF:
case KNOT_RRTYPE_RESINFO:
case KNOT_RRTYPE_WALLET:
fcall r_data_txt;
case KNOT_RRTYPE_AAAA:
@ -2222,6 +2225,7 @@
case KNOT_RRTYPE_SVCB:
case KNOT_RRTYPE_HTTPS:
case KNOT_RRTYPE_DSYNC:
case KNOT_RRTYPE_RESINFO:
case KNOT_RRTYPE_WALLET:
fcall nonempty_hex_r_data;
// Next types can have empty rdata.
@ -2308,6 +2312,7 @@
| "SVCB"i %{ s->r_type = KNOT_RRTYPE_SVCB; }
| "HTTPS"i %{ s->r_type = KNOT_RRTYPE_HTTPS; }
| "DSYNC"i %{ s->r_type = KNOT_RRTYPE_DSYNC; }
| "RESINFO"i %{ s->r_type = KNOT_RRTYPE_RESINFO; }
| "WALLET"i %{ s->r_type = KNOT_RRTYPE_WALLET; }
| "TYPE"i . type_number
) $!_r_type_error;

View file

@ -86,3 +86,4 @@
58_HTTPS
59_WALLET
60_DSYNC
61_RESINFO

View file

@ -0,0 +1,14 @@
$ORIGIN .
$TTL 1
; The RESINFO is the same as the TXT, so there are the differences and basics only.
; OK
@ RESINFO "" "test1" "\255" test2 ; Array of text strings
@ RESINFO \# 1 00 ; Hexadecimal rdata
@ TYPE261 \# 1 00 ; TYPE + Hexadecimal rdata
@ TYPE261 "" ; TYPE
@ resinfo "" ; Type in lower-case
; KO
@ RESINFO

View file

@ -0,0 +1,32 @@
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0105
RDATA=0005746573743101FF057465737432
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0105
RDATA=00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0105
RDATA=00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0105
RDATA=00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0105
RDATA=00
------
WARNG=ZS_BAD_RDATA
------

View file

@ -14,7 +14,7 @@ TMPDIR=$(test_tmpdir)
TESTS_DIR="$SOURCE"/data
ZSCANNER_TOOL="$BUILD"/zscanner-tool
plan 88
plan 89
mkdir -p "$TMPDIR"/includes/
for a in 1 2 3 4 5 6; do