Merge branch '1132-wip-httpssvc-record' into 'main'

Resolve "HTTPS and SVCB records"

Closes #1132

See merge request isc-projects/bind9!2135
This commit is contained in:
Mark Andrews 2021-08-18 04:35:11 +00:00
commit 4d435eb02b
122 changed files with 2793 additions and 139 deletions

View file

@ -1,3 +1,5 @@
5696. [protocol] Add support for HTTPS and SVCB record types. [GL #1132]
5695. [func] Dig can now display the BADCOOKIE message as part of
processing it (+showbadcookie). [GL #2319]

View file

@ -37,7 +37,7 @@ do
echo_i "checking $db ($n)"
ret=0 v=0
case $db in
zones/bad-dns-sd-reverse.db)
zones/bad-dns-sd-reverse.db|zones/bad-svcb-servername.db)
$CHECKZONE -k fail -i local 0.0.0.0.in-addr.arpa $db > test.out.$n 2>&1 || v=$?
;;
*)

View file

@ -0,0 +1,15 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
$TTL 600
@ SOA ns hostmaster 2011012708 3600 1200 604800 1200
NS ns
ns A 192.0.2.1
svcb SVCB 0 . mandatory=alpn

View file

@ -0,0 +1,15 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
$TTL 600
@ SOA ns hostmaster 2011012708 3600 1200 604800 1200
NS ns
ns A 192.0.2.1
svcb SVCB 1 _underscore.example. port=60 alpn=h3 ech="ZWFzdGVyIGVnZyE="

View file

@ -0,0 +1,15 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
$TTL 600
@ SOA ns hostmaster 2011012708 3600 1200 604800 1200
NS ns
ns A 192.0.2.1
svcb SVCB 0 . unknown=wha

View file

@ -0,0 +1,24 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
$TTL 600
@ SOA ns hostmaster 2011012708 3600 1200 604800 1200
NS ns
ns A 192.0.2.1
svcb0 SVCB 0 example.net.
svcb1 SVCB 1 . port=60 alpn=h3 ech="ZWFzdGVyIGVnZyE="
svcb2 SVCB 2 . no-default-alpn alpn=alpn
svcb3 SVCB 3 . ipv4hint="10.10.10.10"
svcb4 SVCB 4 . ipv6hint="feed:a::bee"
svcb5 SVCB 5 . key9999="something"
svcb6 SVCB 6 . mandatory=port,alpn port=60 alpn=h3
svcb7 SVCB 7 . mandatory=port,alpn port=60 alpn=h1,h3
svcb8 SVCB 8 . mandatory=port,alpn port=60 alpn="h1\\,h2,h3"
svcb9 SVCB 0 44._svbc.example.net.

View file

@ -2558,6 +2558,8 @@ hinfo01.example. 3600 IN HINFO "Generic PC clone" "NetBSD-1.4"
hinfo02.example. 3600 IN HINFO "PC" "NetBSD"
hip1.example. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D
hip2.example. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D rvs.example.com.
https0.example. 3600 IN HTTPS 0 example.net.
https1.example. 3600 IN HTTPS 1 . port=60
ipseckey01.example. 3600 IN IPSECKEY 10 1 2 192.0.2.38 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
ipseckey02.example. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
ipseckey03.example. 3600 IN IPSECKEY 10 1 2 192.0.2.3 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
@ -2634,6 +2636,8 @@ srv01.example. 3600 IN SRV 0 0 0 .
srv02.example. 3600 IN SRV 65535 65535 65535 old-slow-box.example.
sshfp01.example. 3600 IN SSHFP 4 2 C76D8329954DA2835751E371544E963EFDA099080D6C58DD2BFD9A31 6E162C83
sshfp02.example. 3600 IN SSHFP 1 2 BF29468C83AC58CCF8C85AB7B3BEB054ECF1E38512B8353AB36471FA 88961DCC
svcb0.example. 3600 IN SVCB 0 example.net.
svcb1.example. 3600 IN SVCB 1 . port=60
ta.example. 3600 IN TA 30795 1 1 310D27F4D82C1FC2400704EA9939FE6E1CEAA3B9
talink0.example. 3600 IN TALINK . talink1.example.
talink1.example. 3600 IN TALINK talink0.example. talink2.example.

View file

@ -493,6 +493,12 @@ dlv DLV 30795 1 1 (
; type 65280-65534 (private use)
https0 HTTPS 0 example.net.
https1 HTTPS 1 . port=60
svcb0 SVCB 0 example.net.
svcb1 SVCB 1 . port=60
; keydata (internal type used for managed keys)
keydata TYPE65533 \# 0
keydata TYPE65533 \# 6 010203040506

View file

@ -13,6 +13,17 @@ $TTL 600
@ IN MX 0 mail
ns IN A 10.53.0.6
mail IN A 10.53.0.6
www IN HTTPS 0 http-server
http-server IN A 10.53.0.6
https-loop IN HTTPS 0 https-next
https-loop IN A 10.53.0.6
https-next IN HTTPS 0 https-loop
https-next IN A 10.53.0.7
https-cname IN HTTPS 0 cname-server
cname-server IN CNAME cname-next
cname-next IN CNAME http-server
https-cname-loop IN HTTPS 0 https-cname-loop0
https-cname-loop0 IN CNAME https-cname-loop0
fetch 10 IN TXT A short ttl
non-zero 10 IN TXT A short ttl
zero 0 IN TXT A zero ttl

View file

@ -28,6 +28,7 @@ options {
* has a exclude list.
*/
root-delegation-only exclude { "a"; };
max-udp-size 4096;
};
zone "." {

View file

@ -29,6 +29,7 @@ options {
*/
prefetch 0;
querylog yes;
edns-udp-size 4096;
};
key rndc_key {

View file

@ -29,6 +29,7 @@ options {
*/
prefetch 0;
querylog yes;
edns-udp-size 4096;
};
key rndc_key {

View file

@ -845,5 +845,49 @@ grep "status: NXDOMAIN" dig.ns1.out.${n} > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "check that the addition section for HTTPS is populated on initial query to a recursive server ($n)"
ret=0
$DIG $DIGOPTS @10.53.0.7 www.example.net https > dig.out.ns7.${n} || ret=1
grep "status: NOERROR" dig.out.ns7.${n} > /dev/null || ret=1
grep "flags:[^;]* ra[ ;]" dig.out.ns7.${n} > /dev/null || ret=1
grep "ADDITIONAL: 2" dig.out.ns7.${n} > /dev/null || ret=1
grep "ANSWER: 1," dig.out.ns7.${n} > /dev/null || ret=1
grep "http-server\.example\.net\..*A.*10\.53\.0\.6" dig.out.ns7.${n} > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "check HTTPS loop is handled properly ($n)"
ret=0
$DIG $DIGOPTS @10.53.0.7 https-loop.example.net https > dig.out.ns7.${n} || ret=1
grep "status: NOERROR" dig.out.ns7.${n} > /dev/null || ret=1
grep "ANSWER: 1," dig.out.ns7.${n} > /dev/null || ret=1
grep "ADDITIONAL: 2" dig.out.ns7.${n} > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "check HTTPS -> CNAME loop is handled properly ($n)"
ret=0
$DIG $DIGOPTS @10.53.0.7 https-cname-loop.example.net https > dig.out.ns7.${n} || ret=1
grep "status: NOERROR" dig.out.ns7.${n} > /dev/null || ret=1
grep "ADDITIONAL: 2" dig.out.ns7.${n} > /dev/null || ret=1
grep "ANSWER: 1," dig.out.ns7.${n} > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "check HTTPS cname chains are followed ($n)"
ret=0
$DIG $DIGOPTS @10.53.0.7 https-cname.example.net https > dig.out.ns7.${n} || ret=1
grep "status: NOERROR" dig.out.ns7.${n} > /dev/null || ret=1
grep "ADDITIONAL: 4" dig.out.ns7.${n} > /dev/null || ret=1
grep 'http-server\.example\.net\..*A.10\.53\.0\.6' dig.out.ns7.${n} > /dev/null || ret=1
grep 'cname-server\.example\.net\..*CNAME.cname-next\.example\.net\.' dig.out.ns7.${n} > /dev/null || ret=1
grep 'cname-next\.example\.net\..*CNAME.http-server\.example\.net\.' dig.out.ns7.${n} > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
echo_i "exit status: $status"
[ $status -eq 0 ] || exit 1

View file

@ -59,6 +59,8 @@ CDNSKEY
OPENPGPKEY
CSYNC
ZONEMD
SVCB
HTTPS
SPF
UINFO
UID

View file

@ -59,6 +59,8 @@ hinfo01.example. 3600 IN HINFO "Generic PC clone" "NetBSD-1.4"
hinfo02.example. 3600 IN HINFO "PC" "NetBSD"
hip1.example. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D
hip2.example. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D rvs.example.com.
https0.example. 3600 IN HTTPS 0 example.net.
https1.example. 3600 IN HTTPS 1 . port=60
ipseckey01.example. 3600 IN IPSECKEY 10 1 2 192.0.2.38 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
ipseckey02.example. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
ipseckey03.example. 3600 IN IPSECKEY 10 1 2 192.0.2.3 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
@ -137,6 +139,8 @@ sink02.example. 3600 IN SINK 8 0 2 l4ik
smimea.example. 3600 IN SMIMEA 1 1 2 92003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA3 46BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE 51FFD48C43326CBC
srv01.example. 3600 IN SRV 0 0 0 .
srv02.example. 3600 IN SRV 65535 65535 65535 old-slow-box.example.
svcb0.example. 3600 IN SVCB 0 example.net.
svcb1.example. 3600 IN SVCB 1 . port=60
ta.example. 3600 IN TA 30795 1 1 310D27F4D82C1FC2400704EA9939FE6E1CEAA3B9
talink0.example. 3600 IN TALINK . talink1.example.
talink1.example. 3600 IN TALINK talink0.example. talink2.example.

View file

@ -69,6 +69,8 @@ isdn04.example. 3600 IN ISDN "isdn-address" "subaddress"
hip1.example. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D
hip2.example. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D rvs.example.com.
dnskey01.example. 3600 IN DNSKEY 512 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2od GWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60z yGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
https0.example. 3600 IN HTTPS 0 example.net.
https1.example. 3600 IN HTTPS 1 . port=60
keydata.example. 3600 IN TYPE65533 \# 0
keydata.example. 3600 IN TYPE65533 \# 6 010203040506
keydata.example. 3600 IN TYPE65533 \# 18 010203040506010203040506010203040506
@ -137,6 +139,8 @@ srv01.example. 3600 IN SRV 0 0 0 .
srv02.example. 3600 IN SRV 65535 65535 65535 old-slow-box.example.
sshfp01.example. 3600 IN SSHFP 4 2 C76D8329954DA2835751E371544E963EFDA099080D6C58DD2BFD9A31 6E162C83
sshfp02.example. 3600 IN SSHFP 1 2 BF29468C83AC58CCF8C85AB7B3BEB054ECF1E38512B8353AB36471FA 88961DCC
svcb0.example. 3600 IN SVCB 0 example.net.
svcb1.example. 3600 IN SVCB 1 . port=60
ta.example. 3600 IN TA 30795 1 1 310D27F4D82C1FC2400704EA9939FE6E1CEAA3B9
talink0.example. 3600 IN TALINK . talink1.example.
talink1.example. 3600 IN TALINK talink0.example. talink2.example.

View file

@ -35,6 +35,8 @@ New Features
parameters to an ``http`` statement. The defaults are 300 and 100
respectively. :gl:`#2809`
- Add support for HTTPS and SVCB record types. :gl:`#1132`
Removed Features
~~~~~~~~~~~~~~~~

Binary file not shown.

View file

@ -78,7 +78,7 @@
#define COMPARETYPE "rdata1->type"
#define COMPAREDEF "use_default = true"
#define ADDITIONALDATAARGS "rdata, add, arg"
#define ADDITIONALDATAARGS "rdata, owner, add, arg"
#define ADDITIONALDATACLASS "rdata->rdclass"
#define ADDITIONALDATATYPE "rdata->type"
#define ADDITIONALDATADEF "use_default = true"

View file

@ -594,8 +594,8 @@ dns_rdatatype_isknown(dns_rdatatype_t type);
*/
isc_result_t
dns_rdata_additionaldata(dns_rdata_t *rdata, dns_additionaldatafunc_t add,
void *arg);
dns_rdata_additionaldata(dns_rdata_t *rdata, const dns_name_t *owner,
dns_additionaldatafunc_t add, void *arg);
/*%<
* Call 'add' for each name and type from 'rdata' which is subject to
* additional section processing.
@ -695,6 +695,21 @@ dns_rdatatype_atcname(dns_rdatatype_t type);
*
*/
bool
dns_rdatatype_followadditional(dns_rdatatype_t type);
/*%<
* Return true if adding a record of type 'type' to the ADDITIONAL section
* of a message can itself trigger the addition of still more data to the
* additional section.
*
* (For example: adding SRV to the ADDITIONAL section may trigger
* the addition of address records associated with that SRV.)
*
* Requires:
* \li 'type' is a valid rdata type.
*
*/
unsigned int
dns_rdatatype_attributes(dns_rdatatype_t rdtype);
/*%<
@ -729,6 +744,8 @@ dns_rdatatype_attributes(dns_rdatatype_t rdtype);
#define DNS_RDATATYPEATTR_ATPARENT 0x00000200U
/*% Can exist along side a CNAME */
#define DNS_RDATATYPEATTR_ATCNAME 0x00000400U
/*% Follow additional */
#define DNS_RDATATYPEATTR_FOLLOWADDITIONAL 0x00000800U
dns_rdatatype_t
dns_rdata_covers(dns_rdata_t *rdata);

View file

@ -439,6 +439,7 @@ dns_rdataset_towirepartial(dns_rdataset_t * rdataset,
isc_result_t
dns_rdataset_additionaldata(dns_rdataset_t * rdataset,
const dns_name_t * owner_name,
dns_additionaldatafunc_t add, void *arg);
/*%<
* For each rdata in rdataset, call 'add' for each name and type in the

View file

@ -162,8 +162,9 @@
#define DNS_R_NSEC3SALTRANGE (ISC_RESULTCLASS_DNS + 124)
#define DNS_R_NSEC3BADALG (ISC_RESULTCLASS_DNS + 125)
#define DNS_R_NSEC3RESALT (ISC_RESULTCLASS_DNS + 126)
#define DNS_R_INCONSISTENTRR (ISC_RESULTCLASS_DNS + 127)
#define DNS_R_NRESULTS 127 /*%< Number of results */
#define DNS_R_NRESULTS 128 /*%< Number of results */
/*
* DNS wire format rcodes.

View file

@ -396,7 +396,8 @@ typedef isc_result_t (*dns_addrdatasetfunc_t)(void *, const dns_name_t *,
dns_rdataset_t *);
typedef isc_result_t (*dns_additionaldatafunc_t)(void *, const dns_name_t *,
dns_rdatatype_t);
dns_rdatatype_t,
dns_rdataset_t *);
typedef isc_result_t (*dns_digestfunc_t)(void *, isc_region_t *);

View file

@ -10084,7 +10084,8 @@ maybe_rehash_gluetable(rbtdb_version_t *version) {
}
static isc_result_t
glue_nsdname_cb(void *arg, const dns_name_t *name, dns_rdatatype_t qtype) {
glue_nsdname_cb(void *arg, const dns_name_t *name, dns_rdatatype_t qtype,
dns_rdataset_t *unused) {
rbtdb_glue_additionaldata_ctx_t *ctx;
isc_result_t result;
dns_fixedname_t fixedname_a;
@ -10098,6 +10099,8 @@ glue_nsdname_cb(void *arg, const dns_name_t *name, dns_rdatatype_t qtype) {
rbtdb_glue_t *glue = NULL;
dns_name_t *gluename = NULL;
UNUSED(unused);
/*
* NS records want addresses in additional records.
*/
@ -10397,7 +10400,8 @@ no_glue:
maybe_rehash_gluetable(rbtversion);
idx = hash_32(hash, rbtversion->glue_table_bits);
(void)dns_rdataset_additionaldata(rdataset, glue_nsdname_cb, &ctx);
(void)dns_rdataset_additionaldata(rdataset, dns_rootname,
glue_nsdname_cb, &ctx);
cur = isc_mem_get(rbtdb->common.mctx, sizeof(*cur));

View file

@ -29,12 +29,14 @@
#include <dns/compress.h>
#include <dns/dsdigest.h>
#include <dns/enumtype.h>
#include <dns/fixedname.h>
#include <dns/keyflags.h>
#include <dns/keyvalues.h>
#include <dns/message.h>
#include <dns/rcode.h>
#include <dns/rdata.h>
#include <dns/rdataclass.h>
#include <dns/rdataset.h>
#include <dns/rdatastruct.h>
#include <dns/rdatatype.h>
#include <dns/result.h>
@ -118,10 +120,11 @@
#define CALL_FREESTRUCT source
#define ARGS_ADDLDATA \
dns_rdata_t *rdata, dns_additionaldatafunc_t add, void *arg
#define ARGS_ADDLDATA \
dns_rdata_t *rdata, const dns_name_t *owner, \
dns_additionaldatafunc_t add, void *arg
#define CALL_ADDLDATA rdata, add, arg
#define CALL_ADDLDATA rdata, owner, add, arg
#define ARGS_DIGEST dns_rdata_t *rdata, dns_digestfunc_t digest, void *arg
@ -159,6 +162,13 @@ txt_fromtext(isc_textregion_t *source, isc_buffer_t *target);
static isc_result_t
txt_fromwire(isc_buffer_t *source, isc_buffer_t *target);
static isc_result_t
commatxt_fromtext(isc_textregion_t *source, bool comma, isc_buffer_t *target);
static isc_result_t
commatxt_totext(isc_region_t *source, bool quote, bool comma,
isc_buffer_t *target);
static isc_result_t
multitxt_totext(isc_region_t *source, isc_buffer_t *target);
@ -302,6 +312,22 @@ static isc_result_t generic_tostruct_tlsa(ARGS_TOSTRUCT);
static void generic_freestruct_tlsa(ARGS_FREESTRUCT);
static isc_result_t generic_fromtext_in_svcb(ARGS_FROMTEXT);
static isc_result_t generic_totext_in_svcb(ARGS_TOTEXT);
static isc_result_t generic_fromwire_in_svcb(ARGS_FROMWIRE);
static isc_result_t generic_towire_in_svcb(ARGS_TOWIRE);
static isc_result_t generic_fromstruct_in_svcb(ARGS_FROMSTRUCT);
static isc_result_t generic_tostruct_in_svcb(ARGS_TOSTRUCT);
static void generic_freestruct_in_svcb(ARGS_FREESTRUCT);
static isc_result_t generic_additionaldata_in_svcb(ARGS_ADDLDATA);
static bool generic_checknames_in_svcb(ARGS_CHECKNAMES);
static isc_result_t
generic_rdata_in_svcb_first(dns_rdata_in_svcb_t *);
static isc_result_t
generic_rdata_in_svcb_next(dns_rdata_in_svcb_t *);
static void
generic_rdata_in_svcb_current(dns_rdata_in_svcb_t *, isc_region_t *);
/*% INT16 Size */
#define NS_INT16SZ 2
/*% IPv6 Address Size */
@ -1242,8 +1268,8 @@ dns_rdata_freestruct(void *source) {
}
isc_result_t
dns_rdata_additionaldata(dns_rdata_t *rdata, dns_additionaldatafunc_t add,
void *arg) {
dns_rdata_additionaldata(dns_rdata_t *rdata, const dns_name_t *owner,
dns_additionaldatafunc_t add, void *arg) {
isc_result_t result = ISC_R_NOTIMPLEMENTED;
bool use_default = false;
@ -1415,7 +1441,8 @@ name_length(const dns_name_t *name) {
}
static isc_result_t
txt_totext(isc_region_t *source, bool quote, isc_buffer_t *target) {
commatxt_totext(isc_region_t *source, bool quote, bool comma,
isc_buffer_t *target) {
unsigned int tl;
unsigned int n;
unsigned char *sp;
@ -1445,30 +1472,48 @@ txt_totext(isc_region_t *source, bool quote, isc_buffer_t *target) {
/*
* \DDD space (0x20) if not quoting.
*/
if (*sp < (quote ? 0x20 : 0x21) || *sp >= 0x7f) {
if (*sp < (quote ? ' ' : '!') || *sp >= 0x7f) {
if (tl < 4) {
return (ISC_R_NOSPACE);
}
*tp++ = 0x5c;
*tp++ = 0x30 + ((*sp / 100) % 10);
*tp++ = 0x30 + ((*sp / 10) % 10);
*tp++ = 0x30 + (*sp % 10);
*tp++ = '\\';
*tp++ = '0' + ((*sp / 100) % 10);
*tp++ = '0' + ((*sp / 10) % 10);
*tp++ = '0' + (*sp % 10);
sp++;
tl -= 4;
continue;
}
/*
* Escape double quote and backslash. If we are not
* enclosing the string in double quotes also escape
* at sign and semicolon.
* enclosing the string in double quotes, also escape
* at sign (@) and semicolon (;) unless comma is set.
* If comma is set, then only escape commas (,).
*/
if (*sp == 0x22 || *sp == 0x5c ||
(!quote && (*sp == 0x40 || *sp == 0x3b))) {
if (*sp == '"' || *sp == '\\' || (comma && *sp == ',') ||
(!comma && !quote && (*sp == '@' || *sp == ';')))
{
if (tl < 2) {
return (ISC_R_NOSPACE);
}
*tp++ = '\\';
tl--;
/*
* Perform comma escape processing.
* ',' => '\\,'
* '\' => '\\\\'
*/
if (comma && (*sp == ',' || *sp == '\\')) {
if (tl < ((*sp == '\\') ? 3 : 2)) {
return (ISC_R_NOSPACE);
}
*tp++ = '\\';
tl--;
if (*sp == '\\') {
*tp++ = '\\';
tl--;
}
}
}
if (tl < 1) {
return (ISC_R_NOSPACE);
@ -1490,9 +1535,14 @@ txt_totext(isc_region_t *source, bool quote, isc_buffer_t *target) {
}
static isc_result_t
txt_fromtext(isc_textregion_t *source, isc_buffer_t *target) {
txt_totext(isc_region_t *source, bool quote, isc_buffer_t *target) {
return (commatxt_totext(source, quote, false, target));
}
static isc_result_t
commatxt_fromtext(isc_textregion_t *source, bool comma, isc_buffer_t *target) {
isc_region_t tregion;
bool escape;
bool escape = false, comma_escape = false, seen_comma = false;
unsigned int n, nrem;
char *s;
unsigned char *t;
@ -1504,7 +1554,6 @@ txt_fromtext(isc_textregion_t *source, isc_buffer_t *target) {
n = source->length;
t = tregion.base;
nrem = tregion.length;
escape = false;
if (nrem < 1) {
return (ISC_R_NOSPACE);
}
@ -1549,6 +1598,25 @@ txt_fromtext(isc_textregion_t *source, isc_buffer_t *target) {
continue;
}
escape = false;
/*
* Level 1 escape processing complete.
* If comma is set perform comma escape processing.
*
* Level 1 Level 2 ALPN's
* h1\,h2 => h1,h2 => h1 and h2
* h1\\,h2 => h1\,h2 => h1,h2
* h1\\h2 => h1\h2 => h1h2
* h1\\\\h2 => h1\\h2 => h1\h2
*/
if (comma && !comma_escape && c == ',') {
seen_comma = true;
break;
}
if (comma && !comma_escape && c == '\\') {
comma_escape = true;
continue;
}
comma_escape = false;
if (nrem == 0) {
return ((tregion.length <= 256U) ? ISC_R_NOSPACE
: DNS_R_SYNTAX);
@ -1556,14 +1624,41 @@ txt_fromtext(isc_textregion_t *source, isc_buffer_t *target) {
*t++ = c;
nrem--;
}
if (escape) {
/*
* Incomplete escape processing?
*/
if (escape || (comma && comma_escape)) {
return (DNS_R_SYNTAX);
}
if (comma) {
/*
* Disallow empty ALPN at start (",h1") or in the
* middle ("h1,,h2").
*/
if (s == source->base || (seen_comma && s == source->base + 1))
{
return (DNS_R_SYNTAX);
}
isc_textregion_consume(source, s - source->base);
/*
* Disallow empty ALPN at end ("h1,").
*/
if (seen_comma && source->length == 0) {
return (DNS_R_SYNTAX);
}
}
*tregion.base = (unsigned char)(t - tregion.base - 1);
isc_buffer_add(target, *tregion.base + 1);
return (ISC_R_SUCCESS);
}
static isc_result_t
txt_fromtext(isc_textregion_t *source, isc_buffer_t *target) {
return (commatxt_fromtext(source, false, target));
}
static isc_result_t
txt_fromwire(isc_buffer_t *source, isc_buffer_t *target) {
unsigned int n;
@ -1618,20 +1713,20 @@ multitxt_totext(isc_region_t *source, isc_buffer_t *target) {
n0 = source->length - 1;
while (n--) {
if (*sp < 0x20 || *sp >= 0x7f) {
if (*sp < ' ' || *sp >= 0x7f) {
if (tl < 4) {
return (ISC_R_NOSPACE);
}
*tp++ = 0x5c;
*tp++ = 0x30 + ((*sp / 100) % 10);
*tp++ = 0x30 + ((*sp / 10) % 10);
*tp++ = 0x30 + (*sp % 10);
*tp++ = '\\';
*tp++ = '0' + ((*sp / 100) % 10);
*tp++ = '0' + ((*sp / 10) % 10);
*tp++ = '0' + (*sp % 10);
sp++;
tl -= 4;
continue;
}
/* double quote, backslash */
if (*sp == 0x22 || *sp == 0x5c) {
if (*sp == '"' || *sp == '\\') {
if (tl < 2) {
return (ISC_R_NOSPACE);
}
@ -2131,6 +2226,15 @@ dns_rdatatype_atparent(dns_rdatatype_t type) {
return (false);
}
bool
dns_rdatatype_followadditional(dns_rdatatype_t type) {
if ((dns_rdatatype_attributes(type) &
DNS_RDATATYPEATTR_FOLLOWADDITIONAL) != 0) {
return (true);
}
return (false);
}
bool
dns_rdataclass_ismeta(dns_rdataclass_t rdclass) {
if (rdclass == dns_rdataclass_reserved0 ||

View file

@ -567,6 +567,7 @@ additionaldata_any_tsig(ARGS_ADDLDATA) {
REQUIRE(rdata->rdclass == dns_rdataclass_any);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -261,6 +261,7 @@ additionaldata_ch_a(ARGS_ADDLDATA) {
REQUIRE(rdata->rdclass == dns_rdataclass_ch);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -247,12 +247,14 @@ additionaldata_afsdb(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_afsdb);
UNUSED(owner);
dns_name_init(&name, offsets);
dns_rdata_toregion(rdata, &region);
isc_region_consume(&region, 2);
dns_name_fromregion(&name, &region);
return ((add)(arg, &name, dns_rdatatype_a));
return ((add)(arg, &name, dns_rdatatype_a, NULL));
}
static inline isc_result_t

View file

@ -395,6 +395,7 @@ additionaldata_amtrelay(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_amtrelay);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -95,6 +95,7 @@ additionaldata_avc(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_avc);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -572,6 +572,7 @@ additionaldata_caa(ARGS_ADDLDATA) {
REQUIRE(rdata->length >= 3U);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -108,6 +108,7 @@ additionaldata_cdnskey(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_cdnskey);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -116,6 +116,7 @@ additionaldata_cds(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_cds);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -235,6 +235,7 @@ additionaldata_cert(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_cert);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -175,6 +175,7 @@ freestruct_cname(ARGS_FREESTRUCT) {
static inline isc_result_t
additionaldata_cname(ARGS_ADDLDATA) {
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -214,6 +214,7 @@ additionaldata_csync(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_csync);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -112,6 +112,7 @@ additionaldata_dlv(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_dlv);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -175,12 +175,13 @@ freestruct_dname(ARGS_FREESTRUCT) {
static inline isc_result_t
additionaldata_dname(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_dname);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);
REQUIRE(rdata->type == dns_rdatatype_dname);
return (ISC_R_SUCCESS);
}

View file

@ -109,6 +109,7 @@ additionaldata_dnskey(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_dnskey);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -308,12 +308,13 @@ freestruct_doa(ARGS_FREESTRUCT) {
static inline isc_result_t
additionaldata_doa(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_doa);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);
REQUIRE(rdata->type == dns_rdatatype_doa);
return (ISC_R_SUCCESS);
}

View file

@ -335,6 +335,7 @@ additionaldata_ds(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_ds);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -159,6 +159,7 @@ additionaldata_eui48(ARGS_ADDLDATA) {
REQUIRE(rdata->length == 6);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -162,6 +162,7 @@ additionaldata_eui64(ARGS_ADDLDATA) {
REQUIRE(rdata->length == 8);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -205,6 +205,7 @@ additionaldata_gpos(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_gpos);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -169,9 +169,10 @@ static inline isc_result_t
additionaldata_hinfo(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_hinfo);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);
UNUSED(rdata);
return (ISC_R_SUCCESS);
}

View file

@ -379,12 +379,13 @@ freestruct_hip(ARGS_FREESTRUCT) {
static inline isc_result_t
additionaldata_hip(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_hip);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);
REQUIRE(rdata->type == dns_rdatatype_hip);
return (ISC_R_SUCCESS);
}

View file

@ -440,6 +440,7 @@ additionaldata_ipseckey(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_ipseckey);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -196,6 +196,7 @@ additionaldata_isdn(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_isdn);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -415,6 +415,7 @@ additionaldata_key(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_key);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -412,6 +412,7 @@ additionaldata_keydata(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_keydata);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -178,6 +178,7 @@ additionaldata_l32(ARGS_ADDLDATA) {
REQUIRE(rdata->length == 6);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -172,6 +172,7 @@ additionaldata_l64(ARGS_ADDLDATA) {
REQUIRE(rdata->length == 10);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -785,6 +785,7 @@ additionaldata_loc(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_loc);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -193,16 +193,18 @@ additionaldata_lp(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_lp);
UNUSED(owner);
dns_name_init(&name, offsets);
dns_rdata_toregion(rdata, &region);
isc_region_consume(&region, 2);
dns_name_fromregion(&name, &region);
result = (add)(arg, &name, dns_rdatatype_l32);
result = (add)(arg, &name, dns_rdatatype_l32, NULL);
if (result != ISC_R_SUCCESS) {
return (result);
}
return ((add)(arg, &name, dns_rdatatype_l64));
return ((add)(arg, &name, dns_rdatatype_l64, NULL));
}
static inline isc_result_t

View file

@ -179,11 +179,13 @@ additionaldata_mb(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_mb);
UNUSED(owner);
dns_name_init(&name, offsets);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return ((add)(arg, &name, dns_rdatatype_a));
return ((add)(arg, &name, dns_rdatatype_a, NULL));
}
static inline isc_result_t

View file

@ -180,11 +180,13 @@ additionaldata_md(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_md);
UNUSED(owner);
dns_name_init(&name, offsets);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return ((add)(arg, &name, dns_rdatatype_a));
return ((add)(arg, &name, dns_rdatatype_a, NULL));
}
static inline isc_result_t

View file

@ -179,11 +179,13 @@ additionaldata_mf(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_mf);
UNUSED(owner);
dns_name_init(&name, offsets);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return ((add)(arg, &name, dns_rdatatype_a));
return ((add)(arg, &name, dns_rdatatype_a, NULL));
}
static inline isc_result_t

View file

@ -178,6 +178,7 @@ additionaldata_mg(ARGS_ADDLDATA) {
UNUSED(add);
UNUSED(arg);
UNUSED(rdata);
UNUSED(owner);
return (ISC_R_SUCCESS);
}

View file

@ -253,6 +253,7 @@ additionaldata_minfo(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_minfo);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -176,6 +176,7 @@ additionaldata_mr(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_mr);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -273,6 +273,8 @@ additionaldata_mx(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_mx);
UNUSED(owner);
dns_name_init(&name, offsets);
dns_rdata_toregion(rdata, &region);
isc_region_consume(&region, 2);
@ -282,7 +284,7 @@ additionaldata_mx(ARGS_ADDLDATA) {
return (ISC_R_SUCCESS);
}
result = (add)(arg, &name, dns_rdatatype_a);
result = (add)(arg, &name, dns_rdatatype_a, NULL);
if (result != ISC_R_SUCCESS) {
return (result);
}
@ -294,7 +296,8 @@ additionaldata_mx(ARGS_ADDLDATA) {
return (ISC_R_SUCCESS);
}
return ((add)(arg, dns_fixedname_name(&fixed), dns_rdatatype_tlsa));
return ((add)(arg, dns_fixedname_name(&fixed), dns_rdatatype_tlsa,
NULL));
}
static inline isc_result_t

View file

@ -601,6 +601,8 @@ additionaldata_naptr(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_naptr);
UNUSED(owner);
/*
* Order, preference.
*/
@ -642,7 +644,7 @@ additionaldata_naptr(ARGS_ADDLDATA) {
dns_name_fromregion(&name, &sr);
if (atype != 0) {
return ((add)(arg, &name, atype));
return ((add)(arg, &name, atype, NULL));
}
return (ISC_R_SUCCESS);

View file

@ -172,6 +172,7 @@ additionaldata_nid(ARGS_ADDLDATA) {
REQUIRE(rdata->length == 10);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -95,6 +95,7 @@ additionaldata_ninfo(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_ninfo);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -190,11 +190,13 @@ additionaldata_ns(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_ns);
UNUSED(owner);
dns_name_init(&name, offsets);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return ((add)(arg, &name, dns_rdatatype_a));
return ((add)(arg, &name, dns_rdatatype_a, NULL));
}
static inline isc_result_t

View file

@ -362,6 +362,7 @@ additionaldata_nsec3(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_nsec3);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -272,6 +272,7 @@ additionaldata_nsec3param(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_nsec3param);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -213,6 +213,7 @@ additionaldata_nsec(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_nsec);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -133,12 +133,13 @@ freestruct_null(ARGS_FREESTRUCT) {
static inline isc_result_t
additionaldata_null(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_null);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);
REQUIRE(rdata->type == dns_rdatatype_null);
return (ISC_R_SUCCESS);
}

View file

@ -292,6 +292,7 @@ additionaldata_nxt(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_nxt);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -187,6 +187,7 @@ additionaldata_openpgpkey(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_openpgpkey);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -359,6 +359,7 @@ additionaldata_opt(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_opt);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -103,8 +103,9 @@ static inline isc_result_t additionaldata_ #(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_proforma.c #);
REQUIRE(rdata->rdclass == #);
(void)add;
(void)arg;
UNUSED(owner);
UNUSED(add);
UNUSED(arg);
return (ISC_R_SUCCESS);
}

View file

@ -190,6 +190,7 @@ additionaldata_ptr(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_ptr);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -105,6 +105,7 @@ additionaldata_rkey(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_rkey);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -252,6 +252,7 @@ additionaldata_rp(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_rp);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -536,6 +536,7 @@ additionaldata_rrsig(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_rrsig);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -241,20 +241,22 @@ additionaldata_rt(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_rt);
UNUSED(owner);
dns_name_init(&name, offsets);
dns_rdata_toregion(rdata, &region);
isc_region_consume(&region, 2);
dns_name_fromregion(&name, &region);
result = (add)(arg, &name, dns_rdatatype_x25);
result = (add)(arg, &name, dns_rdatatype_x25, NULL);
if (result != ISC_R_SUCCESS) {
return (result);
}
result = (add)(arg, &name, dns_rdatatype_isdn);
result = (add)(arg, &name, dns_rdatatype_isdn, NULL);
if (result != ISC_R_SUCCESS) {
return (result);
}
return ((add)(arg, &name, dns_rdatatype_a));
return ((add)(arg, &name, dns_rdatatype_a, NULL));
}
static inline isc_result_t

View file

@ -528,6 +528,7 @@ additionaldata_sig(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_sig);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -242,6 +242,7 @@ additionaldata_sink(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_sink);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -102,6 +102,7 @@ additionaldata_smimea(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_smimea);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -370,12 +370,13 @@ freestruct_soa(ARGS_FREESTRUCT) {
static inline isc_result_t
additionaldata_soa(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_soa);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);
REQUIRE(rdata->type == dns_rdatatype_soa);
return (ISC_R_SUCCESS);
}

View file

@ -96,6 +96,7 @@ additionaldata_spf(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_spf);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -246,6 +246,7 @@ additionaldata_sshfp(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_sshfp);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -112,6 +112,7 @@ additionaldata_ta(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_ta);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -216,12 +216,13 @@ freestruct_talink(ARGS_FREESTRUCT) {
static inline isc_result_t
additionaldata_talink(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_talink);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);
REQUIRE(rdata->type == dns_rdatatype_talink);
return (ISC_R_SUCCESS);
}

View file

@ -527,12 +527,13 @@ freestruct_tkey(ARGS_FREESTRUCT) {
static inline isc_result_t
additionaldata_tkey(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_tkey);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);
REQUIRE(rdata->type == dns_rdatatype_tkey);
return (ISC_R_SUCCESS);
}

View file

@ -289,6 +289,7 @@ additionaldata_tlsa(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_tlsa);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -231,6 +231,7 @@ additionaldata_txt(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_txt);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -268,6 +268,7 @@ additionaldata_uri(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_uri);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -182,6 +182,7 @@ additionaldata_x25(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_x25);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -300,6 +300,7 @@ additionaldata_zonemd(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_zonemd);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -182,6 +182,7 @@ additionaldata_hs_a(ARGS_ADDLDATA) {
REQUIRE(rdata->rdclass == dns_rdataclass_hs);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -401,6 +401,7 @@ additionaldata_in_a6(ARGS_ADDLDATA) {
REQUIRE(rdata->rdclass == dns_rdataclass_in);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -186,6 +186,7 @@ additionaldata_in_a(ARGS_ADDLDATA) {
REQUIRE(rdata->rdclass == dns_rdataclass_in);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -198,6 +198,7 @@ additionaldata_in_aaaa(ARGS_ADDLDATA) {
REQUIRE(rdata->rdclass == dns_rdataclass_in);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -428,8 +428,10 @@ additionaldata_in_apl(ARGS_ADDLDATA) {
REQUIRE(rdata->type == dns_rdatatype_apl);
REQUIRE(rdata->rdclass == dns_rdataclass_in);
(void)add;
(void)arg;
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);
return (ISC_R_SUCCESS);
}

View file

@ -264,6 +264,7 @@ additionaldata_in_atma(ARGS_ADDLDATA) {
REQUIRE(rdata->rdclass == dns_rdataclass_in);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -182,6 +182,7 @@ additionaldata_in_dhcid(ARGS_ADDLDATA) {
REQUIRE(rdata->rdclass == dns_rdataclass_in);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

View file

@ -171,6 +171,7 @@ additionaldata_in_eid(ARGS_ADDLDATA) {
REQUIRE(rdata->rdclass == dns_rdataclass_in);
UNUSED(rdata);
UNUSED(owner);
UNUSED(add);
UNUSED(arg);

Some files were not shown because too many files have changed in this diff Show more