Commit 4f370bada5 for bind
commit 4f370bada51f340cd7a2a478853f98e2f3a4a6e9
Author: Alessio Podda <alessio@isc.org>
Date: Tue Aug 25 03:32:06 2026 +0200
Move RDATA wire serialization out of generated code
Move the _towire functions to a single file, and replace the generated
RDATA_TOWIRE switch with an hardcoded one. This will allow further
refactoring down the road.
diff --git a/lib/dns/gen.c b/lib/dns/gen.c
index eb2ad120e4..88548e50cd 100644
--- a/lib/dns/gen.c
+++ b/lib/dns/gen.c
@@ -56,11 +56,6 @@
#define FROMWIRETYPE "type"
#define FROMWIREDEF "use_default = true"
-#define TOWIREARGS "rdata, cctx, target"
-#define TOWIRECLASS "rdata->rdclass"
-#define TOWIRETYPE "rdata->type"
-#define TOWIREDEF "use_default = true"
-
#define FROMSTRUCTARGS "rdclass, type, source, target"
#define FROMSTRUCTCLASS "rdclass"
#define FROMSTRUCTTYPE "type"
@@ -767,8 +762,6 @@ main(int argc, char **argv) {
TOTEXTCLASS, TOTEXTDEF);
doswitch("FROMWIRESWITCH", "fromwire", FROMWIREARGS,
FROMWIRETYPE, FROMWIRECLASS, FROMWIREDEF);
- doswitch("TOWIRESWITCH", "towire", TOWIREARGS, TOWIRETYPE,
- TOWIRECLASS, TOWIREDEF);
doswitch("COMPARESWITCH", "compare", COMPAREARGS, COMPARETYPE,
COMPARECLASS, COMPAREDEF);
doswitch("CASECOMPARESWITCH", "casecompare", COMPAREARGS,
diff --git a/lib/dns/meson.build b/lib/dns/meson.build
index 2e85ae277a..2248b0588a 100644
--- a/lib/dns/meson.build
+++ b/lib/dns/meson.build
@@ -78,6 +78,7 @@ dns_srcset.add(
dns_srcset.add(
files(
+ 'rdata/towire.c',
'zone/viewname.c',
'acl.c',
'adb.c',
diff --git a/lib/dns/rdata.c b/lib/dns/rdata.c
index 423a915f6f..498064795d 100644
--- a/lib/dns/rdata.c
+++ b/lib/dns/rdata.c
@@ -90,11 +90,6 @@
#define CALL_FROMWIRE rdclass, type, source, dctx, target
-#define ARGS_TOWIRE \
- dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target
-
-#define CALL_TOWIRE rdata, cctx, target
-
#define ARGS_COMPARE const dns_rdata_t *rdata1, const dns_rdata_t *rdata2
#define CALL_COMPARE rdata1, rdata2
@@ -297,7 +292,6 @@ static isc_result_t generic_tostruct_tlsa(ARGS_TOSTRUCT);
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 isc_result_t generic_additionaldata_in_svcb(ARGS_ADDLDATA);
@@ -979,45 +973,6 @@ dns_rdata_fromwire(dns_rdata_t *rdata, dns_rdataclass_t rdclass,
return result;
}
-isc_result_t
-dns_rdata_towire(dns_rdata_t *rdata, dns_compress_t *cctx,
- isc_buffer_t *target) {
- isc_result_t result = ISC_R_NOTIMPLEMENTED;
- bool use_default = false;
- isc_region_t tr;
- isc_buffer_t st;
-
- REQUIRE(rdata != NULL);
- REQUIRE(DNS_RDATA_VALIDFLAGS(rdata));
-
- /*
- * Some DynDNS meta-RRs have empty rdata.
- */
- if ((rdata->flags & DNS_RDATA_UPDATE) != 0) {
- INSIST(rdata->length == 0);
- return ISC_R_SUCCESS;
- }
-
- st = *target;
-
- TOWIRESWITCH
-
- if (use_default) {
- isc_buffer_availableregion(target, &tr);
- if (tr.length < rdata->length) {
- return ISC_R_NOSPACE;
- }
- memmove(tr.base, rdata->data, rdata->length);
- isc_buffer_add(target, rdata->length);
- return ISC_R_SUCCESS;
- }
- if (result != ISC_R_SUCCESS) {
- *target = st;
- dns_compress_rollback(cctx, target->used);
- }
- return result;
-}
-
/*
* If the binary data in 'src' is valid uncompressed wire format
* rdata of class 'rdclass' and type 'type', return ISC_R_SUCCESS
diff --git a/lib/dns/rdata/any_255/tsig_250.c b/lib/dns/rdata/any_255/tsig_250.c
index 78cbd416d3..d45c4c8ee6 100644
--- a/lib/dns/rdata/any_255/tsig_250.c
+++ b/lib/dns/rdata/any_255/tsig_250.c
@@ -308,24 +308,6 @@ fromwire_any_tsig(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, n + 2);
}
-static isc_result_t
-towire_any_tsig(ARGS_TOWIRE) {
- isc_region_t sr;
- dns_name_t name;
-
- REQUIRE(rdata->type == dns_rdatatype_tsig);
- REQUIRE(rdata->rdclass == dns_rdataclass_any);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- dns_rdata_toregion(rdata, &sr);
- dns_name_init(&name);
- dns_name_fromregion(&name, &sr);
- RETERR(dns_name_towire(&name, cctx, target));
- isc_region_consume(&sr, name_length(&name));
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_any_tsig(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/ch_3/a_1.c b/lib/dns/rdata/ch_3/a_1.c
index a229ff347c..e233981d77 100644
--- a/lib/dns/rdata/ch_3/a_1.c
+++ b/lib/dns/rdata/ch_3/a_1.c
@@ -129,36 +129,6 @@ fromwire_ch_a(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_ch_a(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t sregion;
- isc_region_t tregion;
-
- REQUIRE(rdata->type == dns_rdatatype_a);
- REQUIRE(rdata->rdclass == dns_rdataclass_ch);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&name);
-
- dns_rdata_toregion(rdata, &sregion);
-
- dns_name_fromregion(&name, &sregion);
- isc_region_consume(&sregion, name_length(&name));
- RETERR(dns_name_towire(&name, cctx, target));
-
- isc_buffer_availableregion(target, &tregion);
- if (tregion.length < 2) {
- return ISC_R_NOSPACE;
- }
-
- memmove(tregion.base, sregion.base, 2);
- isc_buffer_add(target, 2);
- return ISC_R_SUCCESS;
-}
-
static int
compare_ch_a(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/afsdb_18.c b/lib/dns/rdata/generic/afsdb_18.c
index e713eb6b5f..f76b5e9ec3 100644
--- a/lib/dns/rdata/generic/afsdb_18.c
+++ b/lib/dns/rdata/generic/afsdb_18.c
@@ -124,31 +124,6 @@ fromwire_afsdb(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_afsdb(ARGS_TOWIRE) {
- isc_region_t tr;
- isc_region_t sr;
- dns_name_t name;
-
- REQUIRE(rdata->type == dns_rdatatype_afsdb);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- isc_buffer_availableregion(target, &tr);
- dns_rdata_toregion(rdata, &sr);
- if (tr.length < 2) {
- return ISC_R_NOSPACE;
- }
- memmove(tr.base, sr.base, 2);
- isc_region_consume(&sr, 2);
- isc_buffer_add(target, 2);
-
- dns_name_init(&name);
- dns_name_fromregion(&name, &sr);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_afsdb(ARGS_COMPARE) {
int result;
diff --git a/lib/dns/rdata/generic/amtrelay_260.c b/lib/dns/rdata/generic/amtrelay_260.c
index 3a5f4aedce..603502ccee 100644
--- a/lib/dns/rdata/generic/amtrelay_260.c
+++ b/lib/dns/rdata/generic/amtrelay_260.c
@@ -230,19 +230,6 @@ fromwire_amtrelay(ARGS_FROMWIRE) {
}
}
-static isc_result_t
-towire_amtrelay(ARGS_TOWIRE) {
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_amtrelay);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, ®ion);
- return mem_tobuffer(target, region.base, region.length);
-}
-
static int
compare_amtrelay(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/avc_258.c b/lib/dns/rdata/generic/avc_258.c
index 16c479d78a..19836be1b2 100644
--- a/lib/dns/rdata/generic/avc_258.c
+++ b/lib/dns/rdata/generic/avc_258.c
@@ -38,15 +38,6 @@ fromwire_avc(ARGS_FROMWIRE) {
return generic_fromwire_txt(CALL_FROMWIRE);
}
-static isc_result_t
-towire_avc(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_avc);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_avc(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/brid_68.c b/lib/dns/rdata/generic/brid_68.c
index dcfd651029..d1c5faae1c 100644
--- a/lib/dns/rdata/generic/brid_68.c
+++ b/lib/dns/rdata/generic/brid_68.c
@@ -79,16 +79,6 @@ fromwire_brid(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_brid(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_brid);
- REQUIRE(rdata->length > 0);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_brid(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/caa_257.c b/lib/dns/rdata/generic/caa_257.c
index 5151b810b5..1ec6522659 100644
--- a/lib/dns/rdata/generic/caa_257.c
+++ b/lib/dns/rdata/generic/caa_257.c
@@ -411,20 +411,6 @@ fromwire_caa(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, sr.length);
}
-static isc_result_t
-towire_caa(ARGS_TOWIRE) {
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_caa);
- REQUIRE(rdata->length >= 3U);
- REQUIRE(rdata->data != NULL);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, ®ion);
- return mem_tobuffer(target, region.base, region.length);
-}
-
static int
compare_caa(ARGS_COMPARE) {
isc_region_t r1, r2;
diff --git a/lib/dns/rdata/generic/cdnskey_60.c b/lib/dns/rdata/generic/cdnskey_60.c
index 38aabccdf6..099c770e20 100644
--- a/lib/dns/rdata/generic/cdnskey_60.c
+++ b/lib/dns/rdata/generic/cdnskey_60.c
@@ -42,19 +42,6 @@ fromwire_cdnskey(ARGS_FROMWIRE) {
return generic_fromwire_key(CALL_FROMWIRE);
}
-static isc_result_t
-towire_cdnskey(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_cdnskey);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_cdnskey(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/cds_59.c b/lib/dns/rdata/generic/cds_59.c
index da6381da37..eb5d88ca2e 100644
--- a/lib/dns/rdata/generic/cds_59.c
+++ b/lib/dns/rdata/generic/cds_59.c
@@ -42,19 +42,6 @@ fromwire_cds(ARGS_FROMWIRE) {
return generic_fromwire_ds(CALL_FROMWIRE);
}
-static isc_result_t
-towire_cds(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_cds);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_cds(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/cert_37.c b/lib/dns/rdata/generic/cert_37.c
index 8e14f6e0ec..236ceae2eb 100644
--- a/lib/dns/rdata/generic/cert_37.c
+++ b/lib/dns/rdata/generic/cert_37.c
@@ -134,19 +134,6 @@ fromwire_cert(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, sr.length);
}
-static isc_result_t
-towire_cert(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_cert);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_cert(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/cname_5.c b/lib/dns/rdata/generic/cname_5.c
index 8f0a8dbcd8..f1e02c8a88 100644
--- a/lib/dns/rdata/generic/cname_5.c
+++ b/lib/dns/rdata/generic/cname_5.c
@@ -75,23 +75,6 @@ fromwire_cname(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_cname(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_cname);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&name);
- dns_rdata_toregion(rdata, ®ion);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_cname(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/csync_62.c b/lib/dns/rdata/generic/csync_62.c
index 68eee0feb3..771de600ee 100644
--- a/lib/dns/rdata/generic/csync_62.c
+++ b/lib/dns/rdata/generic/csync_62.c
@@ -110,16 +110,6 @@ fromwire_csync(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_csync(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_csync);
- REQUIRE(rdata->length >= 6);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_csync(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/dlv_32769.c b/lib/dns/rdata/generic/dlv_32769.c
index a6b817267d..c5b92954fe 100644
--- a/lib/dns/rdata/generic/dlv_32769.c
+++ b/lib/dns/rdata/generic/dlv_32769.c
@@ -42,19 +42,6 @@ fromwire_dlv(ARGS_FROMWIRE) {
return generic_fromwire_ds(CALL_FROMWIRE);
}
-static isc_result_t
-towire_dlv(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_dlv);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_dlv(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/dname_39.c b/lib/dns/rdata/generic/dname_39.c
index 270e16f7ad..ffc73a3c84 100644
--- a/lib/dns/rdata/generic/dname_39.c
+++ b/lib/dns/rdata/generic/dname_39.c
@@ -76,22 +76,6 @@ fromwire_dname(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_dname(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_dname);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- dns_name_init(&name);
- dns_rdata_toregion(rdata, ®ion);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_dname(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/dnskey_48.c b/lib/dns/rdata/generic/dnskey_48.c
index a32733eaaf..757f8e5992 100644
--- a/lib/dns/rdata/generic/dnskey_48.c
+++ b/lib/dns/rdata/generic/dnskey_48.c
@@ -42,20 +42,6 @@ fromwire_dnskey(ARGS_FROMWIRE) {
return generic_fromwire_key(CALL_FROMWIRE);
}
-static isc_result_t
-towire_dnskey(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata != NULL);
- REQUIRE(rdata->type == dns_rdatatype_dnskey);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_dnskey(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/doa_259.c b/lib/dns/rdata/generic/doa_259.c
index 017202ec0a..ed4f81f36c 100644
--- a/lib/dns/rdata/generic/doa_259.c
+++ b/lib/dns/rdata/generic/doa_259.c
@@ -155,20 +155,6 @@ fromwire_doa(ARGS_FROMWIRE) {
return mem_tobuffer(target, region.base, region.length);
}
-static isc_result_t
-towire_doa(ARGS_TOWIRE) {
- isc_region_t region;
-
- UNUSED(cctx);
-
- REQUIRE(rdata != NULL);
- REQUIRE(rdata->type == dns_rdatatype_doa);
- REQUIRE(rdata->length != 0);
-
- dns_rdata_toregion(rdata, ®ion);
- return mem_tobuffer(target, region.base, region.length);
-}
-
static int
compare_doa(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/ds_43.c b/lib/dns/rdata/generic/ds_43.c
index 9c636278b9..7f79198b71 100644
--- a/lib/dns/rdata/generic/ds_43.c
+++ b/lib/dns/rdata/generic/ds_43.c
@@ -204,19 +204,6 @@ fromwire_ds(ARGS_FROMWIRE) {
return generic_fromwire_ds(CALL_FROMWIRE);
}
-static isc_result_t
-towire_ds(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_ds);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_ds(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/dsync_66.c b/lib/dns/rdata/generic/dsync_66.c
index 7158574c0a..7be856fc18 100644
--- a/lib/dns/rdata/generic/dsync_66.c
+++ b/lib/dns/rdata/generic/dsync_66.c
@@ -181,26 +181,6 @@ fromwire_dsync(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_dsync(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_dsync);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
-
- dns_rdata_toregion(rdata, ®ion);
- RETERR(mem_tobuffer(target, region.base, 5));
- isc_region_consume(®ion, 5);
-
- dns_name_init(&name);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_dsync(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/eui48_108.c b/lib/dns/rdata/generic/eui48_108.c
index 2755dd8935..28ca4dac80 100644
--- a/lib/dns/rdata/generic/eui48_108.c
+++ b/lib/dns/rdata/generic/eui48_108.c
@@ -96,16 +96,6 @@ fromwire_eui48(ARGS_FROMWIRE) {
return mem_tobuffer(target, sregion.base, sregion.length);
}
-static isc_result_t
-towire_eui48(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_eui48);
- REQUIRE(rdata->length == 6);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_eui48(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/eui64_109.c b/lib/dns/rdata/generic/eui64_109.c
index 816b82dffa..34ac52d5e8 100644
--- a/lib/dns/rdata/generic/eui64_109.c
+++ b/lib/dns/rdata/generic/eui64_109.c
@@ -100,16 +100,6 @@ fromwire_eui64(ARGS_FROMWIRE) {
return mem_tobuffer(target, sregion.base, sregion.length);
}
-static isc_result_t
-towire_eui64(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_eui64);
- REQUIRE(rdata->length == 8);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_eui64(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/gpos_27.c b/lib/dns/rdata/generic/gpos_27.c
index a3cdaaca94..a6f387e8e8 100644
--- a/lib/dns/rdata/generic/gpos_27.c
+++ b/lib/dns/rdata/generic/gpos_27.c
@@ -77,16 +77,6 @@ fromwire_gpos(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_gpos(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_gpos);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_gpos(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/hhit_67.c b/lib/dns/rdata/generic/hhit_67.c
index e2209d7a68..f8f1b72163 100644
--- a/lib/dns/rdata/generic/hhit_67.c
+++ b/lib/dns/rdata/generic/hhit_67.c
@@ -79,16 +79,6 @@ fromwire_hhit(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_hhit(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_hhit);
- REQUIRE(rdata->length > 0);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_hhit(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/hinfo_13.c b/lib/dns/rdata/generic/hinfo_13.c
index 7738c67184..aa971c805a 100644
--- a/lib/dns/rdata/generic/hinfo_13.c
+++ b/lib/dns/rdata/generic/hinfo_13.c
@@ -63,16 +63,6 @@ fromwire_hinfo(ARGS_FROMWIRE) {
return txt_fromwire(source, target);
}
-static isc_result_t
-towire_hinfo(ARGS_TOWIRE) {
- UNUSED(cctx);
-
- REQUIRE(rdata->type == dns_rdatatype_hinfo);
- REQUIRE(rdata->length != 0);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_hinfo(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/hip_55.c b/lib/dns/rdata/generic/hip_55.c
index 8d71476cdd..71f3b40790 100644
--- a/lib/dns/rdata/generic/hip_55.c
+++ b/lib/dns/rdata/generic/hip_55.c
@@ -231,19 +231,6 @@ fromwire_hip(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_hip(ARGS_TOWIRE) {
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_hip);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, ®ion);
- return mem_tobuffer(target, region.base, region.length);
-}
-
static int
compare_hip(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/ipseckey_45.c b/lib/dns/rdata/generic/ipseckey_45.c
index aa92309e52..2746df444e 100644
--- a/lib/dns/rdata/generic/ipseckey_45.c
+++ b/lib/dns/rdata/generic/ipseckey_45.c
@@ -265,19 +265,6 @@ fromwire_ipseckey(ARGS_FROMWIRE) {
}
}
-static isc_result_t
-towire_ipseckey(ARGS_TOWIRE) {
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_ipseckey);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, ®ion);
- return mem_tobuffer(target, region.base, region.length);
-}
-
static int
compare_ipseckey(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/isdn_20.c b/lib/dns/rdata/generic/isdn_20.c
index 2675837753..fbf20e0b6e 100644
--- a/lib/dns/rdata/generic/isdn_20.c
+++ b/lib/dns/rdata/generic/isdn_20.c
@@ -81,16 +81,6 @@ fromwire_isdn(ARGS_FROMWIRE) {
return txt_fromwire(source, target);
}
-static isc_result_t
-towire_isdn(ARGS_TOWIRE) {
- UNUSED(cctx);
-
- REQUIRE(rdata->type == dns_rdatatype_isdn);
- REQUIRE(rdata->length != 0);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_isdn(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/key_25.c b/lib/dns/rdata/generic/key_25.c
index 3d8fd3908c..0f791bdbb1 100644
--- a/lib/dns/rdata/generic/key_25.c
+++ b/lib/dns/rdata/generic/key_25.c
@@ -253,20 +253,6 @@ fromwire_key(ARGS_FROMWIRE) {
return generic_fromwire_key(CALL_FROMWIRE);
}
-static isc_result_t
-towire_key(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata != NULL);
- REQUIRE(rdata->type == dns_rdatatype_key);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_key(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/keydata_65533.c b/lib/dns/rdata/generic/keydata_65533.c
index e9b60525d5..235c4a9602 100644
--- a/lib/dns/rdata/generic/keydata_65533.c
+++ b/lib/dns/rdata/generic/keydata_65533.c
@@ -262,18 +262,6 @@ fromwire_keydata(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, sr.length);
}
-static isc_result_t
-towire_keydata(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_keydata);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_keydata(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/l32_105.c b/lib/dns/rdata/generic/l32_105.c
index a711c6170a..d522875bac 100644
--- a/lib/dns/rdata/generic/l32_105.c
+++ b/lib/dns/rdata/generic/l32_105.c
@@ -96,16 +96,6 @@ fromwire_l32(ARGS_FROMWIRE) {
return mem_tobuffer(target, sregion.base, sregion.length);
}
-static isc_result_t
-towire_l32(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_l32);
- REQUIRE(rdata->length == 6);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_l32(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/l64_106.c b/lib/dns/rdata/generic/l64_106.c
index 92aebba585..b5fa2a6122 100644
--- a/lib/dns/rdata/generic/l64_106.c
+++ b/lib/dns/rdata/generic/l64_106.c
@@ -94,16 +94,6 @@ fromwire_l64(ARGS_FROMWIRE) {
return mem_tobuffer(target, sregion.base, sregion.length);
}
-static isc_result_t
-towire_l64(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_l64);
- REQUIRE(rdata->length == 10);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_l64(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/loc_29.c b/lib/dns/rdata/generic/loc_29.c
index acf3667a43..7f6454a8bd 100644
--- a/lib/dns/rdata/generic/loc_29.c
+++ b/lib/dns/rdata/generic/loc_29.c
@@ -657,16 +657,6 @@ fromwire_loc(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, 16);
}
-static isc_result_t
-towire_loc(ARGS_TOWIRE) {
- UNUSED(cctx);
-
- REQUIRE(rdata->type == dns_rdatatype_loc);
- REQUIRE(rdata->length != 0);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_loc(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/lp_107.c b/lib/dns/rdata/generic/lp_107.c
index 75fd8d3854..dc5cd8ae43 100644
--- a/lib/dns/rdata/generic/lp_107.c
+++ b/lib/dns/rdata/generic/lp_107.c
@@ -98,16 +98,6 @@ fromwire_lp(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_lp(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_lp);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_lp(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/mb_7.c b/lib/dns/rdata/generic/mb_7.c
index 2e0e64e626..6ff4925b2f 100644
--- a/lib/dns/rdata/generic/mb_7.c
+++ b/lib/dns/rdata/generic/mb_7.c
@@ -74,23 +74,6 @@ fromwire_mb(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_mb(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_mb);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&name);
- dns_rdata_toregion(rdata, ®ion);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_mb(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/md_3.c b/lib/dns/rdata/generic/md_3.c
index 265bbd19bb..f04545a836 100644
--- a/lib/dns/rdata/generic/md_3.c
+++ b/lib/dns/rdata/generic/md_3.c
@@ -74,23 +74,6 @@ fromwire_md(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_md(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_md);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&name);
- dns_rdata_toregion(rdata, ®ion);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_md(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/mf_4.c b/lib/dns/rdata/generic/mf_4.c
index d481f68d22..831c2dafe1 100644
--- a/lib/dns/rdata/generic/mf_4.c
+++ b/lib/dns/rdata/generic/mf_4.c
@@ -74,23 +74,6 @@ fromwire_mf(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_mf(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_mf);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&name);
- dns_rdata_toregion(rdata, ®ion);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_mf(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/mg_8.c b/lib/dns/rdata/generic/mg_8.c
index f4b4ff8997..a64cd7aa95 100644
--- a/lib/dns/rdata/generic/mg_8.c
+++ b/lib/dns/rdata/generic/mg_8.c
@@ -74,23 +74,6 @@ fromwire_mg(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_mg(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_mg);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&name);
- dns_rdata_toregion(rdata, ®ion);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_mg(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/minfo_14.c b/lib/dns/rdata/generic/minfo_14.c
index eb17f0fd32..dd10df9488 100644
--- a/lib/dns/rdata/generic/minfo_14.c
+++ b/lib/dns/rdata/generic/minfo_14.c
@@ -110,33 +110,6 @@ fromwire_minfo(ARGS_FROMWIRE) {
return dns_name_fromwire(&email, source, dctx, target);
}
-static isc_result_t
-towire_minfo(ARGS_TOWIRE) {
- isc_region_t region;
- dns_name_t rmail;
- dns_name_t email;
-
- REQUIRE(rdata->type == dns_rdatatype_minfo);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&rmail);
- dns_name_init(&email);
-
- dns_rdata_toregion(rdata, ®ion);
-
- dns_name_fromregion(&rmail, ®ion);
- isc_region_consume(®ion, name_length(&rmail));
-
- RETERR(dns_name_towire(&rmail, cctx, target));
-
- dns_name_fromregion(&rmail, ®ion);
- isc_region_consume(®ion, rmail.length);
-
- return dns_name_towire(&rmail, cctx, target);
-}
-
static int
compare_minfo(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/mr_9.c b/lib/dns/rdata/generic/mr_9.c
index a48bbaac29..95a70075e7 100644
--- a/lib/dns/rdata/generic/mr_9.c
+++ b/lib/dns/rdata/generic/mr_9.c
@@ -74,23 +74,6 @@ fromwire_mr(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_mr(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_mr);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&name);
- dns_rdata_toregion(rdata, ®ion);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_mr(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/mx_15.c b/lib/dns/rdata/generic/mx_15.c
index 2a7b069b25..4a46070545 100644
--- a/lib/dns/rdata/generic/mx_15.c
+++ b/lib/dns/rdata/generic/mx_15.c
@@ -149,26 +149,6 @@ fromwire_mx(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_mx(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_mx);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_rdata_toregion(rdata, ®ion);
- RETERR(mem_tobuffer(target, region.base, 2));
- isc_region_consume(®ion, 2);
-
- dns_name_init(&name);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_mx(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/naptr_35.c b/lib/dns/rdata/generic/naptr_35.c
index 914ed1906c..fce21632b6 100644
--- a/lib/dns/rdata/generic/naptr_35.c
+++ b/lib/dns/rdata/generic/naptr_35.c
@@ -351,48 +351,6 @@ fromwire_naptr(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_naptr(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_naptr);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- /*
- * Order, preference.
- */
- dns_rdata_toregion(rdata, &sr);
- RETERR(mem_tobuffer(target, sr.base, 4));
- isc_region_consume(&sr, 4);
-
- /*
- * Flags.
- */
- RETERR(mem_tobuffer(target, sr.base, sr.base[0] + 1));
- isc_region_consume(&sr, sr.base[0] + 1);
-
- /*
- * Service.
- */
- RETERR(mem_tobuffer(target, sr.base, sr.base[0] + 1));
- isc_region_consume(&sr, sr.base[0] + 1);
-
- /*
- * Regexp.
- */
- RETERR(mem_tobuffer(target, sr.base, sr.base[0] + 1));
- isc_region_consume(&sr, sr.base[0] + 1);
-
- /*
- * Replacement.
- */
- dns_name_init(&name);
- dns_name_fromregion(&name, &sr);
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_naptr(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/nid_104.c b/lib/dns/rdata/generic/nid_104.c
index 8d261712e3..c26b39ba9f 100644
--- a/lib/dns/rdata/generic/nid_104.c
+++ b/lib/dns/rdata/generic/nid_104.c
@@ -94,16 +94,6 @@ fromwire_nid(ARGS_FROMWIRE) {
return mem_tobuffer(target, sregion.base, sregion.length);
}
-static isc_result_t
-towire_nid(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_nid);
- REQUIRE(rdata->length == 10);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_nid(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/ninfo_56.c b/lib/dns/rdata/generic/ninfo_56.c
index 4261796882..d0b199a715 100644
--- a/lib/dns/rdata/generic/ninfo_56.c
+++ b/lib/dns/rdata/generic/ninfo_56.c
@@ -38,15 +38,6 @@ fromwire_ninfo(ARGS_FROMWIRE) {
return generic_fromwire_txt(CALL_FROMWIRE);
}
-static isc_result_t
-towire_ninfo(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_ninfo);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_ninfo(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/ns_2.c b/lib/dns/rdata/generic/ns_2.c
index f4aa667927..b7785f98a8 100644
--- a/lib/dns/rdata/generic/ns_2.c
+++ b/lib/dns/rdata/generic/ns_2.c
@@ -88,23 +88,6 @@ fromwire_ns(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_ns(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_ns);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&name);
- dns_rdata_toregion(rdata, ®ion);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_ns(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/nsec3_50.c b/lib/dns/rdata/generic/nsec3_50.c
index e85de115fb..32592f3156 100644
--- a/lib/dns/rdata/generic/nsec3_50.c
+++ b/lib/dns/rdata/generic/nsec3_50.c
@@ -248,19 +248,6 @@ fromwire_nsec3(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_nsec3(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_nsec3);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_nsec3(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/nsec3param_51.c b/lib/dns/rdata/generic/nsec3param_51.c
index 978d43ef61..d4fc565fce 100644
--- a/lib/dns/rdata/generic/nsec3param_51.c
+++ b/lib/dns/rdata/generic/nsec3param_51.c
@@ -170,19 +170,6 @@ fromwire_nsec3param(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_nsec3param(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_nsec3param);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_nsec3param(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/nsec_47.c b/lib/dns/rdata/generic/nsec_47.c
index ed20fa7773..5838828ddc 100644
--- a/lib/dns/rdata/generic/nsec_47.c
+++ b/lib/dns/rdata/generic/nsec_47.c
@@ -95,24 +95,6 @@ fromwire_nsec(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_nsec(ARGS_TOWIRE) {
- isc_region_t sr;
- dns_name_t name;
-
- REQUIRE(rdata->type == dns_rdatatype_nsec);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- dns_name_init(&name);
- dns_rdata_toregion(rdata, &sr);
- dns_name_fromregion(&name, &sr);
- isc_region_consume(&sr, name_length(&name));
- RETERR(dns_name_towire(&name, cctx, target));
-
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_nsec(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/null_10.c b/lib/dns/rdata/generic/null_10.c
index 10bdf4a951..98804e896c 100644
--- a/lib/dns/rdata/generic/null_10.c
+++ b/lib/dns/rdata/generic/null_10.c
@@ -53,15 +53,6 @@ fromwire_null(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, sr.length);
}
-static isc_result_t
-towire_null(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_null);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_null(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/nxt_30.c b/lib/dns/rdata/generic/nxt_30.c
index 7c2d1d9ed2..059bf14018 100644
--- a/lib/dns/rdata/generic/nxt_30.c
+++ b/lib/dns/rdata/generic/nxt_30.c
@@ -162,24 +162,6 @@ fromwire_nxt(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_nxt(ARGS_TOWIRE) {
- isc_region_t sr;
- dns_name_t name;
-
- REQUIRE(rdata->type == dns_rdatatype_nxt);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- dns_name_init(&name);
- dns_rdata_toregion(rdata, &sr);
- dns_name_fromregion(&name, &sr);
- isc_region_consume(&sr, name_length(&name));
- RETERR(dns_name_towire(&name, cctx, target));
-
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_nxt(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/openpgpkey_61.c b/lib/dns/rdata/generic/openpgpkey_61.c
index 359d54f6bf..01ed049b27 100644
--- a/lib/dns/rdata/generic/openpgpkey_61.c
+++ b/lib/dns/rdata/generic/openpgpkey_61.c
@@ -87,19 +87,6 @@ fromwire_openpgpkey(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, sr.length);
}
-static isc_result_t
-towire_openpgpkey(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_openpgpkey);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_openpgpkey(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/opt_41.c b/lib/dns/rdata/generic/opt_41.c
index 71f223e370..619cf588c8 100644
--- a/lib/dns/rdata/generic/opt_41.c
+++ b/lib/dns/rdata/generic/opt_41.c
@@ -301,15 +301,6 @@ fromwire_opt(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_opt(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_opt);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_opt(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/ptr_12.c b/lib/dns/rdata/generic/ptr_12.c
index 0687f578d4..de3d13e641 100644
--- a/lib/dns/rdata/generic/ptr_12.c
+++ b/lib/dns/rdata/generic/ptr_12.c
@@ -92,23 +92,6 @@ fromwire_ptr(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_ptr(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_ptr);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&name);
- dns_rdata_toregion(rdata, ®ion);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_ptr(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/resinfo_261.c b/lib/dns/rdata/generic/resinfo_261.c
index 23ce4e8d54..67e7f0b1d4 100644
--- a/lib/dns/rdata/generic/resinfo_261.c
+++ b/lib/dns/rdata/generic/resinfo_261.c
@@ -38,15 +38,6 @@ fromwire_resinfo(ARGS_FROMWIRE) {
return generic_fromwire_txt(CALL_FROMWIRE);
}
-static isc_result_t
-towire_resinfo(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_resinfo);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_resinfo(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/rkey_57.c b/lib/dns/rdata/generic/rkey_57.c
index 6b98aed70b..b001bee660 100644
--- a/lib/dns/rdata/generic/rkey_57.c
+++ b/lib/dns/rdata/generic/rkey_57.c
@@ -38,20 +38,6 @@ fromwire_rkey(ARGS_FROMWIRE) {
return generic_fromwire_key(CALL_FROMWIRE);
}
-static isc_result_t
-towire_rkey(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata != NULL);
- REQUIRE(rdata->type == dns_rdatatype_rkey);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_rkey(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/rp_17.c b/lib/dns/rdata/generic/rp_17.c
index ab3c3e725d..3c735e307f 100644
--- a/lib/dns/rdata/generic/rp_17.c
+++ b/lib/dns/rdata/generic/rp_17.c
@@ -119,32 +119,6 @@ fromwire_rp(ARGS_FROMWIRE) {
return dns_name_fromwire(&email, source, dctx, target);
}
-static isc_result_t
-towire_rp(ARGS_TOWIRE) {
- isc_region_t region;
- dns_name_t rmail;
- dns_name_t email;
-
- REQUIRE(rdata->type == dns_rdatatype_rp);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- dns_name_init(&rmail);
- dns_name_init(&email);
-
- dns_rdata_toregion(rdata, ®ion);
-
- dns_name_fromregion(&rmail, ®ion);
- isc_region_consume(®ion, rmail.length);
-
- RETERR(dns_name_towire(&rmail, cctx, target));
-
- dns_name_fromregion(&rmail, ®ion);
- isc_region_consume(®ion, rmail.length);
-
- return dns_name_towire(&rmail, cctx, target);
-}
-
static int
compare_rp(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/rrsig_46.c b/lib/dns/rdata/generic/rrsig_46.c
index 3540dbdc30..fb40e5910f 100644
--- a/lib/dns/rdata/generic/rrsig_46.c
+++ b/lib/dns/rdata/generic/rrsig_46.c
@@ -339,42 +339,6 @@ fromwire_rrsig(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, sr.length);
}
-static isc_result_t
-towire_rrsig(ARGS_TOWIRE) {
- isc_region_t sr;
- dns_name_t name;
-
- REQUIRE(rdata->type == dns_rdatatype_rrsig);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- dns_rdata_toregion(rdata, &sr);
- /*
- * type covered: 2
- * algorithm: 1
- * labels: 1
- * original ttl: 4
- * signature expiration: 4
- * time signed: 4
- * key footprint: 2
- */
- RETERR(mem_tobuffer(target, sr.base, 18));
- isc_region_consume(&sr, 18);
-
- /*
- * Signer.
- */
- dns_name_init(&name);
- dns_name_fromregion(&name, &sr);
- isc_region_consume(&sr, name_length(&name));
- RETERR(dns_name_towire(&name, cctx, target));
-
- /*
- * Signature.
- */
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_rrsig(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/rt_21.c b/lib/dns/rdata/generic/rt_21.c
index 735399866f..a3849c7487 100644
--- a/lib/dns/rdata/generic/rt_21.c
+++ b/lib/dns/rdata/generic/rt_21.c
@@ -123,31 +123,6 @@ fromwire_rt(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_rt(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
- isc_region_t tr;
-
- REQUIRE(rdata->type == dns_rdatatype_rt);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- isc_buffer_availableregion(target, &tr);
- dns_rdata_toregion(rdata, ®ion);
- if (tr.length < 2) {
- return ISC_R_NOSPACE;
- }
- memmove(tr.base, region.base, 2);
- isc_region_consume(®ion, 2);
- isc_buffer_add(target, 2);
-
- dns_name_init(&name);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_rt(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/generic/sig_24.c b/lib/dns/rdata/generic/sig_24.c
index 9dd8d3a4ba..73f5bb673b 100644
--- a/lib/dns/rdata/generic/sig_24.c
+++ b/lib/dns/rdata/generic/sig_24.c
@@ -306,42 +306,6 @@ fromwire_sig(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, sr.length);
}
-static isc_result_t
-towire_sig(ARGS_TOWIRE) {
- isc_region_t sr;
- dns_name_t name;
-
- REQUIRE(rdata->type == dns_rdatatype_sig);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- dns_rdata_toregion(rdata, &sr);
- /*
- * type covered: 2
- * algorithm: 1
- * labels: 1
- * original ttl: 4
- * signature expiration: 4
- * time signed: 4
- * key footprint: 2
- */
- RETERR(mem_tobuffer(target, sr.base, 18));
- isc_region_consume(&sr, 18);
-
- /*
- * Signer.
- */
- dns_name_init(&name);
- dns_name_fromregion(&name, &sr);
- isc_region_consume(&sr, name_length(&name));
- RETERR(dns_name_towire(&name, cctx, target));
-
- /*
- * Signature.
- */
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_sig(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/sink_40.c b/lib/dns/rdata/generic/sink_40.c
index 0072e29415..9b2f042cb3 100644
--- a/lib/dns/rdata/generic/sink_40.c
+++ b/lib/dns/rdata/generic/sink_40.c
@@ -123,16 +123,6 @@ fromwire_sink(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_sink(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_sink);
- REQUIRE(rdata->length >= 3);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_sink(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/smimea_53.c b/lib/dns/rdata/generic/smimea_53.c
index c45e3a7858..91fd72ff37 100644
--- a/lib/dns/rdata/generic/smimea_53.c
+++ b/lib/dns/rdata/generic/smimea_53.c
@@ -38,19 +38,6 @@ fromwire_smimea(ARGS_FROMWIRE) {
return generic_fromwire_tlsa(CALL_FROMWIRE);
}
-static isc_result_t
-towire_smimea(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_smimea);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_smimea(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/soa_6.c b/lib/dns/rdata/generic/soa_6.c
index 574495b6f5..b80940d8ab 100644
--- a/lib/dns/rdata/generic/soa_6.c
+++ b/lib/dns/rdata/generic/soa_6.c
@@ -195,41 +195,6 @@ fromwire_soa(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_soa(ARGS_TOWIRE) {
- isc_region_t sregion;
- isc_region_t tregion;
- dns_name_t mname;
- dns_name_t rname;
-
- REQUIRE(rdata->type == dns_rdatatype_soa);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, true);
-
- dns_name_init(&mname);
- dns_name_init(&rname);
-
- dns_rdata_toregion(rdata, &sregion);
-
- dns_name_fromregion(&mname, &sregion);
- isc_region_consume(&sregion, name_length(&mname));
- RETERR(dns_name_towire(&mname, cctx, target));
-
- dns_name_fromregion(&rname, &sregion);
- isc_region_consume(&sregion, name_length(&rname));
- RETERR(dns_name_towire(&rname, cctx, target));
-
- isc_buffer_availableregion(target, &tregion);
- if (tregion.length < 20) {
- return ISC_R_NOSPACE;
- }
-
- memmove(tregion.base, sregion.base, 20);
- isc_buffer_add(target, 20);
- return ISC_R_SUCCESS;
-}
-
static int
compare_soa(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/spf_99.c b/lib/dns/rdata/generic/spf_99.c
index 59c315d5b6..09af592086 100644
--- a/lib/dns/rdata/generic/spf_99.c
+++ b/lib/dns/rdata/generic/spf_99.c
@@ -38,15 +38,6 @@ fromwire_spf(ARGS_FROMWIRE) {
return generic_fromwire_txt(CALL_FROMWIRE);
}
-static isc_result_t
-towire_spf(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_spf);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_spf(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/sshfp_44.c b/lib/dns/rdata/generic/sshfp_44.c
index 68d2f66936..c947ce231a 100644
--- a/lib/dns/rdata/generic/sshfp_44.c
+++ b/lib/dns/rdata/generic/sshfp_44.c
@@ -148,19 +148,6 @@ fromwire_sshfp(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, sr.length);
}
-static isc_result_t
-towire_sshfp(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_sshfp);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_sshfp(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/ta_32768.c b/lib/dns/rdata/generic/ta_32768.c
index 121a036273..8274db710e 100644
--- a/lib/dns/rdata/generic/ta_32768.c
+++ b/lib/dns/rdata/generic/ta_32768.c
@@ -39,19 +39,6 @@ fromwire_ta(ARGS_FROMWIRE) {
return generic_fromwire_ds(CALL_FROMWIRE);
}
-static isc_result_t
-towire_ta(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_ta);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_ta(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/talink_58.c b/lib/dns/rdata/generic/talink_58.c
index c1f395210b..44ce3e7f87 100644
--- a/lib/dns/rdata/generic/talink_58.c
+++ b/lib/dns/rdata/generic/talink_58.c
@@ -96,31 +96,6 @@ fromwire_talink(ARGS_FROMWIRE) {
return dns_name_fromwire(&next, source, dctx, target);
}
-static isc_result_t
-towire_talink(ARGS_TOWIRE) {
- isc_region_t sregion;
- dns_name_t prev;
- dns_name_t next;
-
- REQUIRE(rdata->type == dns_rdatatype_talink);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
-
- dns_name_init(&prev);
- dns_name_init(&next);
-
- dns_rdata_toregion(rdata, &sregion);
-
- dns_name_fromregion(&prev, &sregion);
- isc_region_consume(&sregion, name_length(&prev));
- RETERR(dns_name_towire(&prev, cctx, target));
-
- dns_name_fromregion(&next, &sregion);
- isc_region_consume(&sregion, name_length(&next));
- return dns_name_towire(&next, cctx, target);
-}
-
static int
compare_talink(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/generic/tkey_249.c b/lib/dns/rdata/generic/tkey_249.c
index fe55be05a8..a76b8b0667 100644
--- a/lib/dns/rdata/generic/tkey_249.c
+++ b/lib/dns/rdata/generic/tkey_249.c
@@ -294,27 +294,6 @@ fromwire_tkey(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, n + 2);
}
-static isc_result_t
-towire_tkey(ARGS_TOWIRE) {
- isc_region_t sr;
- dns_name_t name;
-
- REQUIRE(rdata->type == dns_rdatatype_tkey);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- /*
- * Algorithm.
- */
- dns_rdata_toregion(rdata, &sr);
- dns_name_init(&name);
- dns_name_fromregion(&name, &sr);
- RETERR(dns_name_towire(&name, cctx, target));
- isc_region_consume(&sr, name_length(&name));
-
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_tkey(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/tlsa_52.c b/lib/dns/rdata/generic/tlsa_52.c
index e6644e9009..07c1b734b8 100644
--- a/lib/dns/rdata/generic/tlsa_52.c
+++ b/lib/dns/rdata/generic/tlsa_52.c
@@ -159,19 +159,6 @@ fromwire_tlsa(ARGS_FROMWIRE) {
return generic_fromwire_tlsa(CALL_FROMWIRE);
}
-static isc_result_t
-towire_tlsa(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_tlsa);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_tlsa(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/txt_16.c b/lib/dns/rdata/generic/txt_16.c
index 622db8beb4..18a2888f05 100644
--- a/lib/dns/rdata/generic/txt_16.c
+++ b/lib/dns/rdata/generic/txt_16.c
@@ -103,15 +103,6 @@ fromwire_txt(ARGS_FROMWIRE) {
return generic_fromwire_txt(CALL_FROMWIRE);
}
-static isc_result_t
-towire_txt(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_txt);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_txt(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/uri_256.c b/lib/dns/rdata/generic/uri_256.c
index 659c68bfe7..4aa55107ba 100644
--- a/lib/dns/rdata/generic/uri_256.c
+++ b/lib/dns/rdata/generic/uri_256.c
@@ -119,19 +119,6 @@ fromwire_uri(ARGS_FROMWIRE) {
return mem_tobuffer(target, region.base, region.length);
}
-static isc_result_t
-towire_uri(ARGS_TOWIRE) {
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_uri);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, ®ion);
- return mem_tobuffer(target, region.base, region.length);
-}
-
static int
compare_uri(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/wallet_262.c b/lib/dns/rdata/generic/wallet_262.c
index c0ad0ab6ae..ee0c33da55 100644
--- a/lib/dns/rdata/generic/wallet_262.c
+++ b/lib/dns/rdata/generic/wallet_262.c
@@ -38,15 +38,6 @@ fromwire_wallet(ARGS_FROMWIRE) {
return generic_fromwire_txt(CALL_FROMWIRE);
}
-static isc_result_t
-towire_wallet(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_wallet);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_wallet(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/x25_19.c b/lib/dns/rdata/generic/x25_19.c
index 3d77d77b78..1a3a60e38c 100644
--- a/lib/dns/rdata/generic/x25_19.c
+++ b/lib/dns/rdata/generic/x25_19.c
@@ -82,16 +82,6 @@ fromwire_x25(ARGS_FROMWIRE) {
return txt_fromwire(source, target);
}
-static isc_result_t
-towire_x25(ARGS_TOWIRE) {
- UNUSED(cctx);
-
- REQUIRE(rdata->type == dns_rdatatype_x25);
- REQUIRE(rdata->length != 0);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_x25(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/generic/zonemd_63.c b/lib/dns/rdata/generic/zonemd_63.c
index f8703ffcc3..820ad964b8 100644
--- a/lib/dns/rdata/generic/zonemd_63.c
+++ b/lib/dns/rdata/generic/zonemd_63.c
@@ -191,19 +191,6 @@ fromwire_zonemd(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, sr.length);
}
-static isc_result_t
-towire_zonemd(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_zonemd);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_zonemd(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/hs_4/a_1.c b/lib/dns/rdata/hs_4/a_1.c
index 6cd60eb75f..769f0f459a 100644
--- a/lib/dns/rdata/hs_4/a_1.c
+++ b/lib/dns/rdata/hs_4/a_1.c
@@ -88,25 +88,6 @@ fromwire_hs_a(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_hs_a(ARGS_TOWIRE) {
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_a);
- REQUIRE(rdata->rdclass == dns_rdataclass_hs);
- REQUIRE(rdata->length == 4);
-
- UNUSED(cctx);
-
- isc_buffer_availableregion(target, ®ion);
- if (region.length < rdata->length) {
- return ISC_R_NOSPACE;
- }
- memmove(region.base, rdata->data, rdata->length);
- isc_buffer_add(target, 4);
- return ISC_R_SUCCESS;
-}
-
static int
compare_hs_a(ARGS_COMPARE) {
int order;
diff --git a/lib/dns/rdata/in_1/a6_38.c b/lib/dns/rdata/in_1/a6_38.c
index 05a9e7eba2..5acf4047b5 100644
--- a/lib/dns/rdata/in_1/a6_38.c
+++ b/lib/dns/rdata/in_1/a6_38.c
@@ -203,35 +203,6 @@ fromwire_in_a6(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_in_a6(ARGS_TOWIRE) {
- isc_region_t sr;
- dns_name_t name;
- unsigned char prefixlen;
- unsigned char octets;
-
- REQUIRE(rdata->type == dns_rdatatype_a6);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- dns_rdata_toregion(rdata, &sr);
- prefixlen = sr.base[0];
- INSIST(prefixlen <= 128);
-
- octets = 1 + 16 - prefixlen / 8;
- RETERR(mem_tobuffer(target, sr.base, octets));
- isc_region_consume(&sr, octets);
-
- if (prefixlen == 0) {
- return ISC_R_SUCCESS;
- }
-
- dns_name_init(&name);
- dns_name_fromregion(&name, &sr);
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_in_a6(ARGS_COMPARE) {
int order;
diff --git a/lib/dns/rdata/in_1/a_1.c b/lib/dns/rdata/in_1/a_1.c
index 4faa025cae..1d05d71ce3 100644
--- a/lib/dns/rdata/in_1/a_1.c
+++ b/lib/dns/rdata/in_1/a_1.c
@@ -91,25 +91,6 @@ fromwire_in_a(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_in_a(ARGS_TOWIRE) {
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_a);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length == 4);
-
- UNUSED(cctx);
-
- isc_buffer_availableregion(target, ®ion);
- if (region.length < rdata->length) {
- return ISC_R_NOSPACE;
- }
- memmove(region.base, rdata->data, rdata->length);
- isc_buffer_add(target, 4);
- return ISC_R_SUCCESS;
-}
-
static int
compare_in_a(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/in_1/aaaa_28.c b/lib/dns/rdata/in_1/aaaa_28.c
index e40fb31fe2..2bd21e07a0 100644
--- a/lib/dns/rdata/in_1/aaaa_28.c
+++ b/lib/dns/rdata/in_1/aaaa_28.c
@@ -107,25 +107,6 @@ fromwire_in_aaaa(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_in_aaaa(ARGS_TOWIRE) {
- isc_region_t region;
-
- UNUSED(cctx);
-
- REQUIRE(rdata->type == dns_rdatatype_aaaa);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length == 16);
-
- isc_buffer_availableregion(target, ®ion);
- if (region.length < rdata->length) {
- return ISC_R_NOSPACE;
- }
- memmove(region.base, rdata->data, rdata->length);
- isc_buffer_add(target, 16);
- return ISC_R_SUCCESS;
-}
-
static int
compare_in_aaaa(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/in_1/apl_42.c b/lib/dns/rdata/in_1/apl_42.c
index a621dc71a2..ae48390eef 100644
--- a/lib/dns/rdata/in_1/apl_42.c
+++ b/lib/dns/rdata/in_1/apl_42.c
@@ -235,16 +235,6 @@ fromwire_in_apl(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr2.base, sr2.length);
}
-static isc_result_t
-towire_in_apl(ARGS_TOWIRE) {
- UNUSED(cctx);
-
- REQUIRE(rdata->type == dns_rdatatype_apl);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_in_apl(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/in_1/atma_34.c b/lib/dns/rdata/in_1/atma_34.c
index b7fc31da38..1a0ee0c3a3 100644
--- a/lib/dns/rdata/in_1/atma_34.c
+++ b/lib/dns/rdata/in_1/atma_34.c
@@ -168,17 +168,6 @@ fromwire_in_atma(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_in_atma(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_atma);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_in_atma(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/in_1/dhcid_49.c b/lib/dns/rdata/in_1/dhcid_49.c
index e58742d0f9..5ca1e4ad8b 100644
--- a/lib/dns/rdata/in_1/dhcid_49.c
+++ b/lib/dns/rdata/in_1/dhcid_49.c
@@ -85,20 +85,6 @@ fromwire_in_dhcid(ARGS_FROMWIRE) {
return mem_tobuffer(target, sr.base, sr.length);
}
-static isc_result_t
-towire_in_dhcid(ARGS_TOWIRE) {
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_dhcid);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_in_dhcid(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/in_1/eid_31.c b/lib/dns/rdata/in_1/eid_31.c
index aeb5fc9f72..dbb32dc008 100644
--- a/lib/dns/rdata/in_1/eid_31.c
+++ b/lib/dns/rdata/in_1/eid_31.c
@@ -78,17 +78,6 @@ fromwire_in_eid(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_in_eid(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_eid);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_in_eid(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/in_1/https_65.c b/lib/dns/rdata/in_1/https_65.c
index 2bb979c1eb..511b6115e0 100644
--- a/lib/dns/rdata/in_1/https_65.c
+++ b/lib/dns/rdata/in_1/https_65.c
@@ -47,14 +47,6 @@ fromwire_in_https(ARGS_FROMWIRE) {
return generic_fromwire_in_svcb(CALL_FROMWIRE);
}
-static isc_result_t
-towire_in_https(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_https);
- REQUIRE(rdata->length != 0);
-
- return generic_towire_in_svcb(CALL_TOWIRE);
-}
-
static int
compare_in_https(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/in_1/kx_36.c b/lib/dns/rdata/in_1/kx_36.c
index 330e7514b3..14f84d5569 100644
--- a/lib/dns/rdata/in_1/kx_36.c
+++ b/lib/dns/rdata/in_1/kx_36.c
@@ -101,26 +101,6 @@ fromwire_in_kx(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_in_kx(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_kx);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- dns_rdata_toregion(rdata, ®ion);
- RETERR(mem_tobuffer(target, region.base, 2));
- isc_region_consume(®ion, 2);
-
- dns_name_init(&name);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_in_kx(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/in_1/nimloc_32.c b/lib/dns/rdata/in_1/nimloc_32.c
index 59f8269d25..cbb681c3d4 100644
--- a/lib/dns/rdata/in_1/nimloc_32.c
+++ b/lib/dns/rdata/in_1/nimloc_32.c
@@ -78,17 +78,6 @@ fromwire_in_nimloc(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_in_nimloc(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_nimloc);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_in_nimloc(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/in_1/nsap-ptr_23.c b/lib/dns/rdata/in_1/nsap-ptr_23.c
index 345ad06516..616376fb5d 100644
--- a/lib/dns/rdata/in_1/nsap-ptr_23.c
+++ b/lib/dns/rdata/in_1/nsap-ptr_23.c
@@ -79,23 +79,6 @@ fromwire_in_nsap_ptr(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_in_nsap_ptr(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_nsap_ptr);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- dns_name_init(&name);
- dns_rdata_toregion(rdata, ®ion);
- dns_name_fromregion(&name, ®ion);
-
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_in_nsap_ptr(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/in_1/nsap_22.c b/lib/dns/rdata/in_1/nsap_22.c
index c3ef48481d..4a90aaaa94 100644
--- a/lib/dns/rdata/in_1/nsap_22.c
+++ b/lib/dns/rdata/in_1/nsap_22.c
@@ -113,17 +113,6 @@ fromwire_in_nsap(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_in_nsap(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_nsap);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length != 0);
-
- UNUSED(cctx);
-
- return mem_tobuffer(target, rdata->data, rdata->length);
-}
-
static int
compare_in_nsap(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/in_1/px_26.c b/lib/dns/rdata/in_1/px_26.c
index d563645989..18822c73b1 100644
--- a/lib/dns/rdata/in_1/px_26.c
+++ b/lib/dns/rdata/in_1/px_26.c
@@ -147,39 +147,6 @@ fromwire_in_px(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_in_px(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->type == dns_rdatatype_px);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- /*
- * Preference.
- */
- dns_rdata_toregion(rdata, ®ion);
- RETERR(mem_tobuffer(target, region.base, 2));
- isc_region_consume(®ion, 2);
-
- /*
- * MAP822.
- */
- dns_name_init(&name);
- dns_name_fromregion(&name, ®ion);
- RETERR(dns_name_towire(&name, cctx, target));
- isc_region_consume(®ion, name_length(&name));
-
- /*
- * MAPX400.
- */
- dns_name_init(&name);
- dns_name_fromregion(&name, ®ion);
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_in_px(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/in_1/srv_33.c b/lib/dns/rdata/in_1/srv_33.c
index 4332768d08..1be27b55c7 100644
--- a/lib/dns/rdata/in_1/srv_33.c
+++ b/lib/dns/rdata/in_1/srv_33.c
@@ -177,30 +177,6 @@ fromwire_in_srv(ARGS_FROMWIRE) {
return dns_name_fromwire(&name, source, dctx, target);
}
-static isc_result_t
-towire_in_srv(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t sr;
-
- REQUIRE(rdata->type == dns_rdatatype_srv);
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
- /*
- * Priority, weight, port.
- */
- dns_rdata_toregion(rdata, &sr);
- RETERR(mem_tobuffer(target, sr.base, 6));
- isc_region_consume(&sr, 6);
-
- /*
- * Target.
- */
- dns_name_init(&name);
- dns_name_fromregion(&name, &sr);
- return dns_name_towire(&name, cctx, target);
-}
-
static int
compare_in_srv(ARGS_COMPARE) {
dns_name_t name1;
diff --git a/lib/dns/rdata/in_1/svcb_64.c b/lib/dns/rdata/in_1/svcb_64.c
index d2b589f0b4..f77b75df19 100644
--- a/lib/dns/rdata/in_1/svcb_64.c
+++ b/lib/dns/rdata/in_1/svcb_64.c
@@ -938,44 +938,6 @@ fromwire_in_svcb(ARGS_FROMWIRE) {
return generic_fromwire_in_svcb(CALL_FROMWIRE);
}
-static isc_result_t
-generic_towire_in_svcb(ARGS_TOWIRE) {
- dns_name_t name;
- isc_region_t region;
-
- REQUIRE(rdata->length != 0);
-
- dns_compress_setpermitted(cctx, false);
-
- /*
- * SvcPriority.
- */
- dns_rdata_toregion(rdata, ®ion);
- RETERR(mem_tobuffer(target, region.base, 2));
- isc_region_consume(®ion, 2);
-
- /*
- * TargetName.
- */
- dns_name_init(&name);
- dns_name_fromregion(&name, ®ion);
- RETERR(dns_name_towire(&name, cctx, target));
- isc_region_consume(®ion, name_length(&name));
-
- /*
- * SvcParams.
- */
- return mem_tobuffer(target, region.base, region.length);
-}
-
-static isc_result_t
-towire_in_svcb(ARGS_TOWIRE) {
- REQUIRE(rdata->type == dns_rdatatype_svcb);
- REQUIRE(rdata->length != 0);
-
- return generic_towire_in_svcb(CALL_TOWIRE);
-}
-
static int
compare_in_svcb(ARGS_COMPARE) {
isc_region_t region1;
diff --git a/lib/dns/rdata/in_1/wks_11.c b/lib/dns/rdata/in_1/wks_11.c
index d3560c0e32..9280573513 100644
--- a/lib/dns/rdata/in_1/wks_11.c
+++ b/lib/dns/rdata/in_1/wks_11.c
@@ -244,20 +244,6 @@ fromwire_in_wks(ARGS_FROMWIRE) {
return ISC_R_SUCCESS;
}
-static isc_result_t
-towire_in_wks(ARGS_TOWIRE) {
- isc_region_t sr;
-
- UNUSED(cctx);
-
- REQUIRE(rdata->type == dns_rdatatype_wks);
- REQUIRE(rdata->rdclass == dns_rdataclass_in);
- REQUIRE(rdata->length != 0);
-
- dns_rdata_toregion(rdata, &sr);
- return mem_tobuffer(target, sr.base, sr.length);
-}
-
static int
compare_in_wks(ARGS_COMPARE) {
isc_region_t r1;
diff --git a/lib/dns/rdata/towire.c b/lib/dns/rdata/towire.c
new file mode 100644
index 0000000000..8f69d5afdf
--- /dev/null
+++ b/lib/dns/rdata/towire.c
@@ -0,0 +1,1742 @@
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * SPDX-License-Identifier: MPL-2.0
+ *
+ * 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 https://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+#include <isc/result.h>
+
+#include <dns/name.h>
+#include <dns/compress.h>
+#include <dns/rdata.h>
+
+static unsigned int
+name_length(const dns_name_t *name) {
+ return name->length;
+}
+
+static isc_result_t
+mem_tobuffer(isc_buffer_t *target, void *base, unsigned int length) {
+ isc_region_t tr;
+
+ if (length == 0U) {
+ return ISC_R_SUCCESS;
+ }
+
+ isc_buffer_availableregion(target, &tr);
+ if (length > tr.length) {
+ return ISC_R_NOSPACE;
+ }
+ if (tr.base != base) {
+ memmove(tr.base, base, length);
+ }
+ isc_buffer_add(target, length);
+ return ISC_R_SUCCESS;
+}
+
+
+#define CALL_TOWIRE rdata, cctx, target
+
+#define ARGS_TOWIRE \
+ dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target
+
+static isc_result_t
+generic_towire_in_svcb(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+
+ /*
+ * SvcPriority.
+ */
+ dns_rdata_toregion(rdata, ®ion);
+ RETERR(mem_tobuffer(target, region.base, 2));
+ isc_region_consume(®ion, 2);
+
+ /*
+ * TargetName.
+ */
+ dns_name_init(&name);
+ dns_name_fromregion(&name, ®ion);
+ RETERR(dns_name_towire(&name, cctx, target));
+ isc_region_consume(®ion, name_length(&name));
+
+ /*
+ * SvcParams.
+ */
+ return mem_tobuffer(target, region.base, region.length);
+}
+
+static isc_result_t
+towire_any_tsig(ARGS_TOWIRE) {
+ isc_region_t sr;
+ dns_name_t name;
+
+ REQUIRE(rdata->type == dns_rdatatype_tsig);
+ REQUIRE(rdata->rdclass == dns_rdataclass_any);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ dns_rdata_toregion(rdata, &sr);
+ dns_name_init(&name);
+ dns_name_fromregion(&name, &sr);
+ RETERR(dns_name_towire(&name, cctx, target));
+ isc_region_consume(&sr, name_length(&name));
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_ch_a(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t sregion;
+ isc_region_t tregion;
+
+ REQUIRE(rdata->type == dns_rdatatype_a);
+ REQUIRE(rdata->rdclass == dns_rdataclass_ch);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&name);
+
+ dns_rdata_toregion(rdata, &sregion);
+
+ dns_name_fromregion(&name, &sregion);
+ isc_region_consume(&sregion, name_length(&name));
+ RETERR(dns_name_towire(&name, cctx, target));
+
+ isc_buffer_availableregion(target, &tregion);
+ if (tregion.length < 2) {
+ return ISC_R_NOSPACE;
+ }
+
+ memmove(tregion.base, sregion.base, 2);
+ isc_buffer_add(target, 2);
+ return ISC_R_SUCCESS;
+}
+
+
+static isc_result_t
+towire_afsdb(ARGS_TOWIRE) {
+ isc_region_t tr;
+ isc_region_t sr;
+ dns_name_t name;
+
+ REQUIRE(rdata->type == dns_rdatatype_afsdb);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ isc_buffer_availableregion(target, &tr);
+ dns_rdata_toregion(rdata, &sr);
+ if (tr.length < 2) {
+ return ISC_R_NOSPACE;
+ }
+ memmove(tr.base, sr.base, 2);
+ isc_region_consume(&sr, 2);
+ isc_buffer_add(target, 2);
+
+ dns_name_init(&name);
+ dns_name_fromregion(&name, &sr);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_amtrelay(ARGS_TOWIRE) {
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_amtrelay);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, ®ion);
+ return mem_tobuffer(target, region.base, region.length);
+}
+
+
+static isc_result_t
+towire_avc(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_avc);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_brid(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_brid);
+ REQUIRE(rdata->length > 0);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_caa(ARGS_TOWIRE) {
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_caa);
+ REQUIRE(rdata->length >= 3U);
+ REQUIRE(rdata->data != NULL);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, ®ion);
+ return mem_tobuffer(target, region.base, region.length);
+}
+
+
+static isc_result_t
+towire_cdnskey(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_cdnskey);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_cds(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_cds);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_cert(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_cert);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_cname(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_cname);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, ®ion);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_csync(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_csync);
+ REQUIRE(rdata->length >= 6);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_dlv(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_dlv);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_dname(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_dname);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, ®ion);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_dnskey(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata != NULL);
+ REQUIRE(rdata->type == dns_rdatatype_dnskey);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_doa(ARGS_TOWIRE) {
+ isc_region_t region;
+
+ UNUSED(cctx);
+
+ REQUIRE(rdata != NULL);
+ REQUIRE(rdata->type == dns_rdatatype_doa);
+ REQUIRE(rdata->length != 0);
+
+ dns_rdata_toregion(rdata, ®ion);
+ return mem_tobuffer(target, region.base, region.length);
+}
+
+
+static isc_result_t
+towire_ds(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_ds);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_dsync(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_dsync);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+
+ dns_rdata_toregion(rdata, ®ion);
+ RETERR(mem_tobuffer(target, region.base, 5));
+ isc_region_consume(®ion, 5);
+
+ dns_name_init(&name);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_eui48(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_eui48);
+ REQUIRE(rdata->length == 6);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_eui64(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_eui64);
+ REQUIRE(rdata->length == 8);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_gpos(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_gpos);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_hhit(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_hhit);
+ REQUIRE(rdata->length > 0);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_hinfo(ARGS_TOWIRE) {
+ UNUSED(cctx);
+
+ REQUIRE(rdata->type == dns_rdatatype_hinfo);
+ REQUIRE(rdata->length != 0);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_hip(ARGS_TOWIRE) {
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_hip);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, ®ion);
+ return mem_tobuffer(target, region.base, region.length);
+}
+
+
+static isc_result_t
+towire_ipseckey(ARGS_TOWIRE) {
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_ipseckey);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, ®ion);
+ return mem_tobuffer(target, region.base, region.length);
+}
+
+
+static isc_result_t
+towire_isdn(ARGS_TOWIRE) {
+ UNUSED(cctx);
+
+ REQUIRE(rdata->type == dns_rdatatype_isdn);
+ REQUIRE(rdata->length != 0);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_key(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata != NULL);
+ REQUIRE(rdata->type == dns_rdatatype_key);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_keydata(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_keydata);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_l32(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_l32);
+ REQUIRE(rdata->length == 6);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_l64(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_l64);
+ REQUIRE(rdata->length == 10);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_loc(ARGS_TOWIRE) {
+ UNUSED(cctx);
+
+ REQUIRE(rdata->type == dns_rdatatype_loc);
+ REQUIRE(rdata->length != 0);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_lp(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_lp);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_mb(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_mb);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, ®ion);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_md(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_md);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, ®ion);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_mf(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_mf);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, ®ion);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_mg(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_mg);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, ®ion);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_minfo(ARGS_TOWIRE) {
+ isc_region_t region;
+ dns_name_t rmail;
+ dns_name_t email;
+
+ REQUIRE(rdata->type == dns_rdatatype_minfo);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&rmail);
+ dns_name_init(&email);
+
+ dns_rdata_toregion(rdata, ®ion);
+
+ dns_name_fromregion(&rmail, ®ion);
+ isc_region_consume(®ion, name_length(&rmail));
+
+ RETERR(dns_name_towire(&rmail, cctx, target));
+
+ dns_name_fromregion(&rmail, ®ion);
+ isc_region_consume(®ion, rmail.length);
+
+ return dns_name_towire(&rmail, cctx, target);
+}
+
+
+static isc_result_t
+towire_mr(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_mr);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, ®ion);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_mx(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_mx);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_rdata_toregion(rdata, ®ion);
+ RETERR(mem_tobuffer(target, region.base, 2));
+ isc_region_consume(®ion, 2);
+
+ dns_name_init(&name);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_naptr(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_naptr);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ /*
+ * Order, preference.
+ */
+ dns_rdata_toregion(rdata, &sr);
+ RETERR(mem_tobuffer(target, sr.base, 4));
+ isc_region_consume(&sr, 4);
+
+ /*
+ * Flags.
+ */
+ RETERR(mem_tobuffer(target, sr.base, sr.base[0] + 1));
+ isc_region_consume(&sr, sr.base[0] + 1);
+
+ /*
+ * Service.
+ */
+ RETERR(mem_tobuffer(target, sr.base, sr.base[0] + 1));
+ isc_region_consume(&sr, sr.base[0] + 1);
+
+ /*
+ * Regexp.
+ */
+ RETERR(mem_tobuffer(target, sr.base, sr.base[0] + 1));
+ isc_region_consume(&sr, sr.base[0] + 1);
+
+ /*
+ * Replacement.
+ */
+ dns_name_init(&name);
+ dns_name_fromregion(&name, &sr);
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_nid(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_nid);
+ REQUIRE(rdata->length == 10);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_ninfo(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_ninfo);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_ns(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_ns);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, ®ion);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_nsec3(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_nsec3);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_nsec3param(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_nsec3param);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_nsec(ARGS_TOWIRE) {
+ isc_region_t sr;
+ dns_name_t name;
+
+ REQUIRE(rdata->type == dns_rdatatype_nsec);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, &sr);
+ dns_name_fromregion(&name, &sr);
+ isc_region_consume(&sr, name_length(&name));
+ RETERR(dns_name_towire(&name, cctx, target));
+
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_null(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_null);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_nxt(ARGS_TOWIRE) {
+ isc_region_t sr;
+ dns_name_t name;
+
+ REQUIRE(rdata->type == dns_rdatatype_nxt);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, &sr);
+ dns_name_fromregion(&name, &sr);
+ isc_region_consume(&sr, name_length(&name));
+ RETERR(dns_name_towire(&name, cctx, target));
+
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_openpgpkey(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_openpgpkey);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_opt(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_opt);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_ptr(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_ptr);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, ®ion);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_resinfo(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_resinfo);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_rkey(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata != NULL);
+ REQUIRE(rdata->type == dns_rdatatype_rkey);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_rp(ARGS_TOWIRE) {
+ isc_region_t region;
+ dns_name_t rmail;
+ dns_name_t email;
+
+ REQUIRE(rdata->type == dns_rdatatype_rp);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ dns_name_init(&rmail);
+ dns_name_init(&email);
+
+ dns_rdata_toregion(rdata, ®ion);
+
+ dns_name_fromregion(&rmail, ®ion);
+ isc_region_consume(®ion, rmail.length);
+
+ RETERR(dns_name_towire(&rmail, cctx, target));
+
+ dns_name_fromregion(&rmail, ®ion);
+ isc_region_consume(®ion, rmail.length);
+
+ return dns_name_towire(&rmail, cctx, target);
+}
+
+
+static isc_result_t
+towire_rrsig(ARGS_TOWIRE) {
+ isc_region_t sr;
+ dns_name_t name;
+
+ REQUIRE(rdata->type == dns_rdatatype_rrsig);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ dns_rdata_toregion(rdata, &sr);
+ /*
+ * type covered: 2
+ * algorithm: 1
+ * labels: 1
+ * original ttl: 4
+ * signature expiration: 4
+ * time signed: 4
+ * key footprint: 2
+ */
+ RETERR(mem_tobuffer(target, sr.base, 18));
+ isc_region_consume(&sr, 18);
+
+ /*
+ * Signer.
+ */
+ dns_name_init(&name);
+ dns_name_fromregion(&name, &sr);
+ isc_region_consume(&sr, name_length(&name));
+ RETERR(dns_name_towire(&name, cctx, target));
+
+ /*
+ * Signature.
+ */
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_rt(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+ isc_region_t tr;
+
+ REQUIRE(rdata->type == dns_rdatatype_rt);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ isc_buffer_availableregion(target, &tr);
+ dns_rdata_toregion(rdata, ®ion);
+ if (tr.length < 2) {
+ return ISC_R_NOSPACE;
+ }
+ memmove(tr.base, region.base, 2);
+ isc_region_consume(®ion, 2);
+ isc_buffer_add(target, 2);
+
+ dns_name_init(&name);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_sig(ARGS_TOWIRE) {
+ isc_region_t sr;
+ dns_name_t name;
+
+ REQUIRE(rdata->type == dns_rdatatype_sig);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ dns_rdata_toregion(rdata, &sr);
+ /*
+ * type covered: 2
+ * algorithm: 1
+ * labels: 1
+ * original ttl: 4
+ * signature expiration: 4
+ * time signed: 4
+ * key footprint: 2
+ */
+ RETERR(mem_tobuffer(target, sr.base, 18));
+ isc_region_consume(&sr, 18);
+
+ /*
+ * Signer.
+ */
+ dns_name_init(&name);
+ dns_name_fromregion(&name, &sr);
+ isc_region_consume(&sr, name_length(&name));
+ RETERR(dns_name_towire(&name, cctx, target));
+
+ /*
+ * Signature.
+ */
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_sink(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_sink);
+ REQUIRE(rdata->length >= 3);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_smimea(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_smimea);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_soa(ARGS_TOWIRE) {
+ isc_region_t sregion;
+ isc_region_t tregion;
+ dns_name_t mname;
+ dns_name_t rname;
+
+ REQUIRE(rdata->type == dns_rdatatype_soa);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, true);
+
+ dns_name_init(&mname);
+ dns_name_init(&rname);
+
+ dns_rdata_toregion(rdata, &sregion);
+
+ dns_name_fromregion(&mname, &sregion);
+ isc_region_consume(&sregion, name_length(&mname));
+ RETERR(dns_name_towire(&mname, cctx, target));
+
+ dns_name_fromregion(&rname, &sregion);
+ isc_region_consume(&sregion, name_length(&rname));
+ RETERR(dns_name_towire(&rname, cctx, target));
+
+ isc_buffer_availableregion(target, &tregion);
+ if (tregion.length < 20) {
+ return ISC_R_NOSPACE;
+ }
+
+ memmove(tregion.base, sregion.base, 20);
+ isc_buffer_add(target, 20);
+ return ISC_R_SUCCESS;
+}
+
+
+static isc_result_t
+towire_spf(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_spf);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_sshfp(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_sshfp);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_ta(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_ta);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_talink(ARGS_TOWIRE) {
+ isc_region_t sregion;
+ dns_name_t prev;
+ dns_name_t next;
+
+ REQUIRE(rdata->type == dns_rdatatype_talink);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+
+ dns_name_init(&prev);
+ dns_name_init(&next);
+
+ dns_rdata_toregion(rdata, &sregion);
+
+ dns_name_fromregion(&prev, &sregion);
+ isc_region_consume(&sregion, name_length(&prev));
+ RETERR(dns_name_towire(&prev, cctx, target));
+
+ dns_name_fromregion(&next, &sregion);
+ isc_region_consume(&sregion, name_length(&next));
+ return dns_name_towire(&next, cctx, target);
+}
+
+
+static isc_result_t
+towire_tkey(ARGS_TOWIRE) {
+ isc_region_t sr;
+ dns_name_t name;
+
+ REQUIRE(rdata->type == dns_rdatatype_tkey);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ /*
+ * Algorithm.
+ */
+ dns_rdata_toregion(rdata, &sr);
+ dns_name_init(&name);
+ dns_name_fromregion(&name, &sr);
+ RETERR(dns_name_towire(&name, cctx, target));
+ isc_region_consume(&sr, name_length(&name));
+
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_tlsa(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_tlsa);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_txt(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_txt);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_uri(ARGS_TOWIRE) {
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_uri);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, ®ion);
+ return mem_tobuffer(target, region.base, region.length);
+}
+
+
+static isc_result_t
+towire_wallet(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_wallet);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_x25(ARGS_TOWIRE) {
+ UNUSED(cctx);
+
+ REQUIRE(rdata->type == dns_rdatatype_x25);
+ REQUIRE(rdata->length != 0);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_zonemd(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_zonemd);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_hs_a(ARGS_TOWIRE) {
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_a);
+ REQUIRE(rdata->rdclass == dns_rdataclass_hs);
+ REQUIRE(rdata->length == 4);
+
+ UNUSED(cctx);
+
+ isc_buffer_availableregion(target, ®ion);
+ if (region.length < rdata->length) {
+ return ISC_R_NOSPACE;
+ }
+ memmove(region.base, rdata->data, rdata->length);
+ isc_buffer_add(target, 4);
+ return ISC_R_SUCCESS;
+}
+
+
+static isc_result_t
+towire_in_a6(ARGS_TOWIRE) {
+ isc_region_t sr;
+ dns_name_t name;
+ unsigned char prefixlen;
+ unsigned char octets;
+
+ REQUIRE(rdata->type == dns_rdatatype_a6);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ dns_rdata_toregion(rdata, &sr);
+ prefixlen = sr.base[0];
+ INSIST(prefixlen <= 128);
+
+ octets = 1 + 16 - prefixlen / 8;
+ RETERR(mem_tobuffer(target, sr.base, octets));
+ isc_region_consume(&sr, octets);
+
+ if (prefixlen == 0) {
+ return ISC_R_SUCCESS;
+ }
+
+ dns_name_init(&name);
+ dns_name_fromregion(&name, &sr);
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_in_a(ARGS_TOWIRE) {
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_a);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length == 4);
+
+ UNUSED(cctx);
+
+ isc_buffer_availableregion(target, ®ion);
+ if (region.length < rdata->length) {
+ return ISC_R_NOSPACE;
+ }
+ memmove(region.base, rdata->data, rdata->length);
+ isc_buffer_add(target, 4);
+ return ISC_R_SUCCESS;
+}
+
+
+static isc_result_t
+towire_in_aaaa(ARGS_TOWIRE) {
+ isc_region_t region;
+
+ UNUSED(cctx);
+
+ REQUIRE(rdata->type == dns_rdatatype_aaaa);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length == 16);
+
+ isc_buffer_availableregion(target, ®ion);
+ if (region.length < rdata->length) {
+ return ISC_R_NOSPACE;
+ }
+ memmove(region.base, rdata->data, rdata->length);
+ isc_buffer_add(target, 16);
+ return ISC_R_SUCCESS;
+}
+
+
+static isc_result_t
+towire_in_apl(ARGS_TOWIRE) {
+ UNUSED(cctx);
+
+ REQUIRE(rdata->type == dns_rdatatype_apl);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_in_atma(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_atma);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_in_dhcid(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_dhcid);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+
+static isc_result_t
+towire_in_eid(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_eid);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_in_https(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_https);
+ REQUIRE(rdata->length != 0);
+
+ return generic_towire_in_svcb(CALL_TOWIRE);
+}
+
+
+static isc_result_t
+towire_in_kx(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_kx);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ dns_rdata_toregion(rdata, ®ion);
+ RETERR(mem_tobuffer(target, region.base, 2));
+ isc_region_consume(®ion, 2);
+
+ dns_name_init(&name);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_in_nimloc(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_nimloc);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_in_nsap_ptr(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_nsap_ptr);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ dns_name_init(&name);
+ dns_rdata_toregion(rdata, ®ion);
+ dns_name_fromregion(&name, ®ion);
+
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_in_nsap(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_nsap);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length != 0);
+
+ UNUSED(cctx);
+
+ return mem_tobuffer(target, rdata->data, rdata->length);
+}
+
+
+static isc_result_t
+towire_in_px(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t region;
+
+ REQUIRE(rdata->type == dns_rdatatype_px);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ /*
+ * Preference.
+ */
+ dns_rdata_toregion(rdata, ®ion);
+ RETERR(mem_tobuffer(target, region.base, 2));
+ isc_region_consume(®ion, 2);
+
+ /*
+ * MAP822.
+ */
+ dns_name_init(&name);
+ dns_name_fromregion(&name, ®ion);
+ RETERR(dns_name_towire(&name, cctx, target));
+ isc_region_consume(®ion, name_length(&name));
+
+ /*
+ * MAPX400.
+ */
+ dns_name_init(&name);
+ dns_name_fromregion(&name, ®ion);
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_in_srv(ARGS_TOWIRE) {
+ dns_name_t name;
+ isc_region_t sr;
+
+ REQUIRE(rdata->type == dns_rdatatype_srv);
+ REQUIRE(rdata->length != 0);
+
+ dns_compress_setpermitted(cctx, false);
+ /*
+ * Priority, weight, port.
+ */
+ dns_rdata_toregion(rdata, &sr);
+ RETERR(mem_tobuffer(target, sr.base, 6));
+ isc_region_consume(&sr, 6);
+
+ /*
+ * Target.
+ */
+ dns_name_init(&name);
+ dns_name_fromregion(&name, &sr);
+ return dns_name_towire(&name, cctx, target);
+}
+
+
+static isc_result_t
+towire_in_svcb(ARGS_TOWIRE) {
+ REQUIRE(rdata->type == dns_rdatatype_svcb);
+ REQUIRE(rdata->length != 0);
+
+ return generic_towire_in_svcb(CALL_TOWIRE);
+}
+
+
+static isc_result_t
+towire_in_wks(ARGS_TOWIRE) {
+ isc_region_t sr;
+
+ UNUSED(cctx);
+
+ REQUIRE(rdata->type == dns_rdatatype_wks);
+ REQUIRE(rdata->rdclass == dns_rdataclass_in);
+ REQUIRE(rdata->length != 0);
+
+ dns_rdata_toregion(rdata, &sr);
+ return mem_tobuffer(target, sr.base, sr.length);
+}
+
+#define TOWIRESWITCH \
+ switch (rdata->type) { \
+ case 1: switch (rdata->rdclass) { \
+ case 1: result = towire_in_a(rdata, cctx, target); break; \
+ case 3: result = towire_ch_a(rdata, cctx, target); break; \
+ case 4: result = towire_hs_a(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 2: result = towire_ns(rdata, cctx, target); break; \
+ case 3: result = towire_md(rdata, cctx, target); break; \
+ case 4: result = towire_mf(rdata, cctx, target); break; \
+ case 5: result = towire_cname(rdata, cctx, target); break; \
+ case 6: result = towire_soa(rdata, cctx, target); break; \
+ case 7: result = towire_mb(rdata, cctx, target); break; \
+ case 8: result = towire_mg(rdata, cctx, target); break; \
+ case 9: result = towire_mr(rdata, cctx, target); break; \
+ case 10: result = towire_null(rdata, cctx, target); break; \
+ case 11: switch (rdata->rdclass) { \
+ case 1: result = towire_in_wks(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 12: result = towire_ptr(rdata, cctx, target); break; \
+ case 13: result = towire_hinfo(rdata, cctx, target); break; \
+ case 14: result = towire_minfo(rdata, cctx, target); break; \
+ case 15: result = towire_mx(rdata, cctx, target); break; \
+ case 16: result = towire_txt(rdata, cctx, target); break; \
+ case 17: result = towire_rp(rdata, cctx, target); break; \
+ case 18: result = towire_afsdb(rdata, cctx, target); break; \
+ case 19: result = towire_x25(rdata, cctx, target); break; \
+ case 20: result = towire_isdn(rdata, cctx, target); break; \
+ case 21: result = towire_rt(rdata, cctx, target); break; \
+ case 22: switch (rdata->rdclass) { \
+ case 1: result = towire_in_nsap(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 23: switch (rdata->rdclass) { \
+ case 1: result = towire_in_nsap_ptr(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 24: result = towire_sig(rdata, cctx, target); break; \
+ case 25: result = towire_key(rdata, cctx, target); break; \
+ case 26: switch (rdata->rdclass) { \
+ case 1: result = towire_in_px(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 27: result = towire_gpos(rdata, cctx, target); break; \
+ case 28: switch (rdata->rdclass) { \
+ case 1: result = towire_in_aaaa(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 29: result = towire_loc(rdata, cctx, target); break; \
+ case 30: result = towire_nxt(rdata, cctx, target); break; \
+ case 31: switch (rdata->rdclass) { \
+ case 1: result = towire_in_eid(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 32: switch (rdata->rdclass) { \
+ case 1: result = towire_in_nimloc(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 33: switch (rdata->rdclass) { \
+ case 1: result = towire_in_srv(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 34: switch (rdata->rdclass) { \
+ case 1: result = towire_in_atma(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 35: result = towire_naptr(rdata, cctx, target); break; \
+ case 36: switch (rdata->rdclass) { \
+ case 1: result = towire_in_kx(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 37: result = towire_cert(rdata, cctx, target); break; \
+ case 38: switch (rdata->rdclass) { \
+ case 1: result = towire_in_a6(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 39: result = towire_dname(rdata, cctx, target); break; \
+ case 40: result = towire_sink(rdata, cctx, target); break; \
+ case 41: result = towire_opt(rdata, cctx, target); break; \
+ case 42: switch (rdata->rdclass) { \
+ case 1: result = towire_in_apl(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 43: result = towire_ds(rdata, cctx, target); break; \
+ case 44: result = towire_sshfp(rdata, cctx, target); break; \
+ case 45: result = towire_ipseckey(rdata, cctx, target); break; \
+ case 46: result = towire_rrsig(rdata, cctx, target); break; \
+ case 47: result = towire_nsec(rdata, cctx, target); break; \
+ case 48: result = towire_dnskey(rdata, cctx, target); break; \
+ case 49: switch (rdata->rdclass) { \
+ case 1: result = towire_in_dhcid(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 50: result = towire_nsec3(rdata, cctx, target); break; \
+ case 51: result = towire_nsec3param(rdata, cctx, target); break; \
+ case 52: result = towire_tlsa(rdata, cctx, target); break; \
+ case 53: result = towire_smimea(rdata, cctx, target); break; \
+ case 55: result = towire_hip(rdata, cctx, target); break; \
+ case 56: result = towire_ninfo(rdata, cctx, target); break; \
+ case 57: result = towire_rkey(rdata, cctx, target); break; \
+ case 58: result = towire_talink(rdata, cctx, target); break; \
+ case 59: result = towire_cds(rdata, cctx, target); break; \
+ case 60: result = towire_cdnskey(rdata, cctx, target); break; \
+ case 61: result = towire_openpgpkey(rdata, cctx, target); break; \
+ case 62: result = towire_csync(rdata, cctx, target); break; \
+ case 63: result = towire_zonemd(rdata, cctx, target); break; \
+ case 64: switch (rdata->rdclass) { \
+ case 1: result = towire_in_svcb(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 65: switch (rdata->rdclass) { \
+ case 1: result = towire_in_https(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 66: result = towire_dsync(rdata, cctx, target); break; \
+ case 67: result = towire_hhit(rdata, cctx, target); break; \
+ case 68: result = towire_brid(rdata, cctx, target); break; \
+ case 99: result = towire_spf(rdata, cctx, target); break; \
+ case 104: result = towire_nid(rdata, cctx, target); break; \
+ case 105: result = towire_l32(rdata, cctx, target); break; \
+ case 106: result = towire_l64(rdata, cctx, target); break; \
+ case 107: result = towire_lp(rdata, cctx, target); break; \
+ case 108: result = towire_eui48(rdata, cctx, target); break; \
+ case 109: result = towire_eui64(rdata, cctx, target); break; \
+ case 249: result = towire_tkey(rdata, cctx, target); break; \
+ case 250: switch (rdata->rdclass) { \
+ case 255: result = towire_any_tsig(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ } \
+ break; \
+ case 256: result = towire_uri(rdata, cctx, target); break; \
+ case 257: result = towire_caa(rdata, cctx, target); break; \
+ case 258: result = towire_avc(rdata, cctx, target); break; \
+ case 259: result = towire_doa(rdata, cctx, target); break; \
+ case 260: result = towire_amtrelay(rdata, cctx, target); break; \
+ case 261: result = towire_resinfo(rdata, cctx, target); break; \
+ case 262: result = towire_wallet(rdata, cctx, target); break; \
+ case 32768: result = towire_ta(rdata, cctx, target); break; \
+ case 32769: result = towire_dlv(rdata, cctx, target); break; \
+ case 65533: result = towire_keydata(rdata, cctx, target); break; \
+ default: use_default = true; break; \
+ }
+
+isc_result_t
+dns_rdata_towire(dns_rdata_t *rdata, dns_compress_t *cctx,
+ isc_buffer_t *target) {
+ isc_result_t result = ISC_R_NOTIMPLEMENTED;
+ bool use_default = false;
+ isc_region_t tr;
+ isc_buffer_t st;
+
+ REQUIRE(rdata != NULL);
+ REQUIRE(DNS_RDATA_VALIDFLAGS(rdata));
+
+ /*
+ * Some DynDNS meta-RRs have empty rdata.
+ */
+ if ((rdata->flags & DNS_RDATA_UPDATE) != 0) {
+ INSIST(rdata->length == 0);
+ return ISC_R_SUCCESS;
+ }
+
+ st = *target;
+
+ TOWIRESWITCH
+
+ if (use_default) {
+ isc_buffer_availableregion(target, &tr);
+ if (tr.length < rdata->length) {
+ return ISC_R_NOSPACE;
+ }
+ memmove(tr.base, rdata->data, rdata->length);
+ isc_buffer_add(target, rdata->length);
+ return ISC_R_SUCCESS;
+ }
+ if (result != ISC_R_SUCCESS) {
+ *target = st;
+ dns_compress_rollback(cctx, target->used);
+ }
+ return result;
+}