Commit ea197f8b8a for bind

commit ea197f8b8a45ec2d49d63ac7891f957186c7f692
Author: OndÅ™ej Surý <ondrej@isc.org>
Date:   Wed Sep 16 22:48:08 2026 +0200

    Remove dns_rdata_freestruct()

    Now that no rdata struct owns any memory, every call was a no-op that
    only validated its arguments, so drop the function together with the
    per-type callbacks and the generator switch that dispatched to them.

diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c
index 2f0985bd49..3e6ebeb312 100644
--- a/bin/dig/dighost.c
+++ b/bin/dig/dighost.c
@@ -1851,7 +1851,6 @@ followup_lookup(dns_message_t *msg, dig_query_t *query, dns_section_t section) {
 			result = dns_rdata_tostruct(&rdata, &ns);
 			check_result(result, "dns_rdata_tostruct");
 			dns_name_format(&ns.name, namestr, sizeof(namestr));
-			dns_rdata_freestruct(&ns);

 			/* Initialize lookup if we've not yet */
 			debug("found NS %s", namestr);
@@ -3700,7 +3699,6 @@ check_for_more_data(dig_lookup_t *lookup, dig_query_t *query,
 				result = dns_rdata_tostruct(&rdata, &soa);
 				check_result(result, "dns_rdata_tostruct");
 				serial = soa.serial;
-				dns_rdata_freestruct(&soa);
 				if (!query->first_soa_rcvd) {
 					query->first_soa_rcvd = true;
 					query->first_rr_serial = serial;
diff --git a/bin/dig/host.c b/bin/dig/host.c
index 0f2e187193..5207680cb1 100644
--- a/bin/dig/host.c
+++ b/bin/dig/host.c
@@ -341,7 +341,6 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) {
 		result = dns_rdata_tostruct(&rdata, &cname);
 		check_result(result, "dns_rdata_tostruct");
 		dns_name_copy(&cname.cname, qname);
-		dns_rdata_freestruct(&cname);
 	}
 }

diff --git a/bin/dig/nslookup.c b/bin/dig/nslookup.c
index 9292c0e382..3281ec6f63 100644
--- a/bin/dig/nslookup.c
+++ b/bin/dig/nslookup.c
@@ -150,7 +150,6 @@ printsoa(dns_rdata_t *rdata) {
 	printf("\tretry = %u\n", soa.retry);
 	printf("\texpire = %u\n", soa.expire);
 	printf("\tminimum = %u\n", soa.minimum);
-	dns_rdata_freestruct(&soa);
 }

 static void
@@ -339,7 +338,6 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) {
 		result = dns_rdata_tostruct(&rdata, &cname);
 		check_result(result, "dns_rdata_tostruct");
 		dns_name_copy(&cname.cname, qname);
-		dns_rdata_freestruct(&cname);
 	}
 }

diff --git a/bin/dnssec/dnssec-signzone.c b/bin/dnssec/dnssec-signzone.c
index 58a5b29f41..9b9f7a97bf 100644
--- a/bin/dnssec/dnssec-signzone.c
+++ b/bin/dnssec/dnssec-signzone.c
@@ -705,7 +705,6 @@ signset(dns_diff_t *del, dns_diff_t *add, dns_dbnode_t *node, dns_name_t *name,
 			}

 			dns_rdata_reset(&sigrdata);
-			dns_rdata_freestruct(&rrsig);
 		}
 	}

@@ -2892,7 +2891,6 @@ warnifallksk(dns_db_t *db) {
 			have_non_ksk = true;
 			break;
 		}
-		dns_rdata_freestruct(&dnskey);
 	}
 	dns_rdataset_disassociate(&rdataset);
 	dns_db_detachnode(&node);
@@ -2990,8 +2988,6 @@ set_nsec3params(bool update, bool set_salt, bool set_optout, bool set_iter) {
 		nsec3flags = nsec3.flags;
 	}

-	dns_rdata_freestruct(&nsec3);
-
 cleanup:
 	dns_rdataset_cleanup(&rdataset);
 	if (node != NULL) {
diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c
index 0f70c9b0d6..fce0d785f4 100644
--- a/bin/nsupdate/nsupdate.c
+++ b/bin/nsupdate/nsupdate.c
@@ -2910,7 +2910,6 @@ lookforsoa:
 					      primary_servers, primary_alloc);
 		if (primary_total == 0) {
 			seenerror = true;
-			dns_rdata_freestruct(&soa);
 			dns_message_detach(&soaquery);
 			dns_request_destroy(&request);
 			dns_message_detach(&rcvmsg);
@@ -2922,7 +2921,6 @@ lookforsoa:
 	} else {
 		primary_from_servers();
 	}
-	dns_rdata_freestruct(&soa);

 #if HAVE_GSSAPI
 	if (usegsstsig) {
diff --git a/bin/tests/system/dyndb/driver/syncptr.c b/bin/tests/system/dyndb/driver/syncptr.c
index fda163aeda..85a7e187c6 100644
--- a/bin/tests/system/dyndb/driver/syncptr.c
+++ b/bin/tests/system/dyndb/driver/syncptr.c
@@ -185,12 +185,6 @@ syncptr_find_zone(sample_instance_t *inst, dns_rdata_t *rdata, dns_name_t *name,
 	}

 cleanup:
-	if (rdata->type == dns_rdatatype_a) {
-		dns_rdata_freestruct(&ipv4);
-	} else {
-		dns_rdata_freestruct(&ipv6);
-	}
-
 	return result;
 }

diff --git a/doc/dev/dev.md b/doc/dev/dev.md
index 8a9773642c..b2c5cdb2d4 100644
--- a/doc/dev/dev.md
+++ b/doc/dev/dev.md
@@ -1238,11 +1238,6 @@ The structure does not own any memory: its pointers refer directly
 into the wire-format record, so the caller must preserve the record
 for as long as the structure is in use.

-        static void
-        freestruct[_<class>]_<type>(void *source);
-
-"freestruct" frees any memory allocated by `tostruct()`.
-
         static isc_result_t
         additional[_<class>]_<type>(dns_rdata_t *rdata,
                                     dns_additionaldatafunc_t add,
diff --git a/lib/dns/catz.c b/lib/dns/catz.c
index ef0bcce877..56d0da965a 100644
--- a/lib/dns/catz.c
+++ b/lib/dns/catz.c
@@ -1296,8 +1296,6 @@ catz_process_coo(dns_catz_zone_t *catz, dns_label_t *mhash,
 	coos_add(&catz->coos, entry, &ptr.ptr);

 cleanup:
-	dns_rdata_freestruct(&ptr);
-
 	return result;
 }

@@ -1334,7 +1332,6 @@ catz_process_zones_entry(dns_catz_zone_t *catz, dns_rdataset_t *value,
 	if (result == ISC_R_SUCCESS) {
 		if (!dns_name_empty(&entry->name)) {
 			/* We have a duplicate. */
-			dns_rdata_freestruct(&ptr);
 			return ISC_R_FAILURE;
 		} else {
 			dns_name_dup(&ptr.ptr, catz->catzs->mctx, &entry->name);
@@ -1347,8 +1344,6 @@ catz_process_zones_entry(dns_catz_zone_t *catz, dns_rdataset_t *value,
 	}
 	INSIST(result == ISC_R_SUCCESS);

-	dns_rdata_freestruct(&ptr);
-
 	return ISC_R_SUCCESS;
 }

@@ -1402,7 +1397,6 @@ catz_process_version(dns_catz_zone_t *catz, dns_rdataset_t *value) {
 	result = ISC_R_SUCCESS;

 cleanup:
-	dns_rdata_freestruct(&rdatatxt);
 	if (result != ISC_R_SUCCESS) {
 		isc_log_write(DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_CATZ,
 			      ISC_LOG_WARNING,
@@ -1462,34 +1456,23 @@ catz_process_primaries(dns_catz_zone_t *catz, dns_ipkeylist_t *ipkl,
 			result = dns_rdata_tostruct(&rdata, &rdata_a);
 			RUNTIME_CHECK(result == ISC_R_SUCCESS);
 			isc_sockaddr_fromin(&sockaddr, &rdata_a.in_addr, 0);
-			dns_rdata_freestruct(&rdata_a);
 			break;
 		case dns_rdatatype_aaaa:
 			result = dns_rdata_tostruct(&rdata, &rdata_aaaa);
 			RUNTIME_CHECK(result == ISC_R_SUCCESS);
 			isc_sockaddr_fromin6(&sockaddr, &rdata_aaaa.in6_addr,
 					     0);
-			dns_rdata_freestruct(&rdata_aaaa);
 			break;
 		case dns_rdatatype_txt:
 			result = dns_rdata_tostruct(&rdata, &rdata_txt);
 			RUNTIME_CHECK(result == ISC_R_SUCCESS);

-			result = dns_rdata_txt_first(&rdata_txt);
-			if (result != ISC_R_SUCCESS) {
-				dns_rdata_freestruct(&rdata_txt);
-				return result;
-			}
+			RETERR(dns_rdata_txt_first(&rdata_txt));

-			result = dns_rdata_txt_current(&rdata_txt, &rdatastr);
-			if (result != ISC_R_SUCCESS) {
-				dns_rdata_freestruct(&rdata_txt);
-				return result;
-			}
+			RETERR(dns_rdata_txt_current(&rdata_txt, &rdatastr));

 			result = dns_rdata_txt_next(&rdata_txt);
 			if (result != ISC_R_NOMORE) {
-				dns_rdata_freestruct(&rdata_txt);
 				return ISC_R_FAILURE;
 			}

@@ -1498,7 +1481,6 @@ catz_process_primaries(dns_catz_zone_t *catz, dns_ipkeylist_t *ipkl,
 			dns_name_init(keyname);
 			memmove(keycbuf, rdatastr.data, rdatastr.length);
 			keycbuf[rdatastr.length] = 0;
-			dns_rdata_freestruct(&rdata_txt);
 			result = dns_name_fromstring(keyname, keycbuf,
 						     dns_rootname, 0, mctx);
 			if (result != ISC_R_SUCCESS) {
@@ -1577,13 +1559,11 @@ catz_process_primaries(dns_catz_zone_t *catz, dns_ipkeylist_t *ipkl,
 			RUNTIME_CHECK(result == ISC_R_SUCCESS);
 			isc_sockaddr_fromin(&ipkl->addrs[ipkl->count],
 					    &rdata_a.in_addr, 0);
-			dns_rdata_freestruct(&rdata_a);
 		} else {
 			result = dns_rdata_tostruct(&rdata, &rdata_aaaa);
 			RUNTIME_CHECK(result == ISC_R_SUCCESS);
 			isc_sockaddr_fromin6(&ipkl->addrs[ipkl->count],
 					     &rdata_aaaa.in6_addr, 0);
-			dns_rdata_freestruct(&rdata_aaaa);
 		}
 		ipkl->keys[ipkl->count] = NULL;
 		ipkl->labels[ipkl->count] = NULL;
@@ -1667,7 +1647,6 @@ cleanup:
 	if (aclb != NULL) {
 		isc_buffer_free(&aclb);
 	}
-	dns_rdata_freestruct(&rdata_apl);
 	return result;
 }

@@ -1870,10 +1849,6 @@ dns__catz_update_process(dns_catz_zone_t *catz, const dns_name_t *src_name,
 			result = dns_rdata_tostruct(&rdata, &soa);
 			RUNTIME_CHECK(result == ISC_R_SUCCESS);

-			/*
-			 * xxxwpk TODO do we want to save something from SOA?
-			 */
-			dns_rdata_freestruct(&soa);
 			return result;
 		} else if (rdataset->type == dns_rdatatype_ns) {
 			return ISC_R_SUCCESS;
diff --git a/lib/dns/client.c b/lib/dns/client.c
index 2da5b61187..b132e979b3 100644
--- a/lib/dns/client.c
+++ b/lib/dns/client.c
@@ -583,7 +583,6 @@ client_resfind(resctx_t *rctx, dns_fetchresponse_t *resp) {
 				goto done;
 			}
 			dns_name_copy(&cname.cname, name);
-			dns_rdata_freestruct(&cname);
 			want_restart = true;
 			goto done;
 		case DNS_R_DNAME:
@@ -626,7 +625,6 @@ client_resfind(resctx_t *rctx, dns_fetchresponse_t *resp) {
 			dns_name_split(name, nlabels, prefix, NULL);
 			tresult = dns_name_concatenate(prefix, &dname.dname,
 						       name);
-			dns_rdata_freestruct(&dname);
 			if (tresult == ISC_R_SUCCESS) {
 				want_restart = true;
 			} else {
diff --git a/lib/dns/dnssec.c b/lib/dns/dnssec.c
index 9b3bfcc897..efbc47ae29 100644
--- a/lib/dns/dnssec.c
+++ b/lib/dns/dnssec.c
@@ -498,11 +498,8 @@ dns_dnssec_verify(const dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
 	}

 again:
-	result = dst_context_create(key, mctx, DNS_LOGCATEGORY_DNSSEC, false,
-				    &ctx);
-	if (result != ISC_R_SUCCESS) {
-		goto cleanup_struct;
-	}
+	CHECK(dst_context_create(key, mctx, DNS_LOGCATEGORY_DNSSEC, false,
+				 &ctx));

 	/*
 	 * Digest the SIG rdata (not including the signature).
@@ -613,9 +610,7 @@ cleanup_context:
 		downcase = true;
 		goto again;
 	}
-cleanup_struct:
-	dns_rdata_freestruct(&sig);
-
+cleanup:
 	if (result == DST_R_VERIFYFAILURE) {
 		result = DNS_R_SIGINVALID;
 	}
@@ -940,7 +935,6 @@ dns_dnssec_verifymessage(isc_buffer_t *source, dns_message_t *msg,
 	isc_mem_t *mctx;
 	isc_result_t result;
 	uint16_t addcount, addcount_n;
-	bool signeedsfree = false;

 	REQUIRE(source != NULL);
 	REQUIRE(msg != NULL);
@@ -964,7 +958,6 @@ dns_dnssec_verifymessage(isc_buffer_t *source, dns_message_t *msg,
 	dns_rdataset_current(msg->sig0, &rdata);

 	CHECK(dns_rdata_tostruct(&rdata, &sig));
-	signeedsfree = true;

 	if (sig.labels != 0) {
 		CLEANUP(DNS_R_SIGINVALID);
@@ -1050,14 +1043,10 @@ dns_dnssec_verifymessage(isc_buffer_t *source, dns_message_t *msg,
 	msg->sig0status = dns_rcode_noerror;

 	dst_context_destroy(&ctx);
-	dns_rdata_freestruct(&sig);

 	return ISC_R_SUCCESS;

 cleanup:
-	if (signeedsfree) {
-		dns_rdata_freestruct(&sig);
-	}
 	if (ctx != NULL) {
 		dst_context_destroy(&ctx);
 	}
diff --git a/lib/dns/gen.c b/lib/dns/gen.c
index bca02e7028..184267a848 100644
--- a/lib/dns/gen.c
+++ b/lib/dns/gen.c
@@ -71,11 +71,6 @@
 #define TOSTRUCTTYPE  "rdata->type"
 #define TOSTRUCTDEF   "use_default = true"

-#define FREESTRUCTARGS	"source"
-#define FREESTRUCTCLASS "common->rdclass"
-#define FREESTRUCTTYPE	"common->rdtype"
-#define FREESTRUCTDEF	NULL
-
 #define COMPAREARGS  "rdata1, rdata2"
 #define COMPARECLASS "rdata1->rdclass"
 #define COMPARETYPE  "rdata1->type"
@@ -781,8 +776,6 @@ main(int argc, char **argv) {
 			 FROMSTRUCTTYPE, FROMSTRUCTCLASS, FROMSTRUCTDEF);
 		doswitch("TOSTRUCTSWITCH", "tostruct", TOSTRUCTARGS,
 			 TOSTRUCTTYPE, TOSTRUCTCLASS, TOSTRUCTDEF);
-		doswitch("FREESTRUCTSWITCH", "freestruct", FREESTRUCTARGS,
-			 FREESTRUCTTYPE, FREESTRUCTCLASS, FREESTRUCTDEF);
 		doswitch("ADDITIONALDATASWITCH", "additionaldata",
 			 ADDITIONALDATAARGS, ADDITIONALDATATYPE,
 			 ADDITIONALDATACLASS, ADDITIONALDATADEF);
diff --git a/lib/dns/include/dns/rdata.h b/lib/dns/include/dns/rdata.h
index c475abd0f6..110b50f45a 100644
--- a/lib/dns/include/dns/rdata.h
+++ b/lib/dns/include/dns/rdata.h
@@ -550,17 +550,6 @@ dns_rdata_tostruct(const dns_rdata_t *rdata, void *target);
  *\li	Not Implemented
  */

-void
-dns_rdata_freestruct(void *source);
-/*%<
- * Free dynamic memory attached to 'source' (if any).
- *
- * Requires:
- *
- *\li	'source' to point to the structure previously filled in by
- *	dns_rdata_tostruct().
- */
-
 unsigned int
 dns_rdatatype_attributes(dns_rdatatype_t rdtype);
 /*%<
diff --git a/lib/dns/message.c b/lib/dns/message.c
index 4e2c6498eb..ecf7624272 100644
--- a/lib/dns/message.c
+++ b/lib/dns/message.c
@@ -2910,7 +2910,6 @@ dns_message_signer(dns_message_t *msg, dns_name_t *signer) {
 			result = DNS_R_SIGINVALID;
 		}
 		dns_name_clone(&sig.signer, signer);
-		dns_rdata_freestruct(&sig);
 	} else {
 		const dns_name_t *identity;
 		dns_rdata_any_tsig_t tsig;
@@ -2933,7 +2932,6 @@ dns_message_signer(dns_message_t *msg, dns_name_t *signer) {
 			INSIST(tsig.error != dns_rcode_noerror);
 			result = DNS_R_TSIGERRORSET;
 		}
-		dns_rdata_freestruct(&tsig);

 		if (msg->tsigkey == NULL) {
 			/*
@@ -3183,7 +3181,6 @@ dns_message_checksig(dns_message_t *msg, dns_view_t *view) {

 	freesig:
 		dns_rdataset_cleanup(&keyset);
-		dns_rdata_freestruct(&sig);
 		return result;
 	}
 }
diff --git a/lib/dns/nsec.c b/lib/dns/nsec.c
index acd4ed0f30..dd91e0c9bf 100644
--- a/lib/dns/nsec.c
+++ b/lib/dns/nsec.c
@@ -231,7 +231,6 @@ dns_nsec_typepresent(dns_rdata_t *nsec, dns_rdatatype_t type) {
 		}
 		break;
 	}
-	dns_rdata_freestruct(&nsecstruct);
 	return present;
 }

@@ -434,7 +433,6 @@ dns_nsec_noexistnodata(dns_rdatatype_t type, const dns_name_t *name,
 	RETERR(dns_rdata_tostruct(&rdata, &nsec));
 	relation = dns_name_fullcompare(&nsec.next, name, &order, &nlabels);
 	if (order == 0) {
-		dns_rdata_freestruct(&nsec);
 		(*logit)(arg, ISC_LOG_DEBUG(3),
 			 "ignoring nsec matches next name");
 		return ISC_R_IGNORE;
@@ -444,7 +442,6 @@ dns_nsec_noexistnodata(dns_rdatatype_t type, const dns_name_t *name,
 		/*
 		 * The name is not within the NSEC range.
 		 */
-		dns_rdata_freestruct(&nsec);
 		(*logit)(arg, ISC_LOG_DEBUG(3),
 			 "ignoring nsec because name is past end of range");
 		return ISC_R_IGNORE;
@@ -453,7 +450,6 @@ dns_nsec_noexistnodata(dns_rdatatype_t type, const dns_name_t *name,
 	if (order > 0 && relation == dns_namereln_subdomain) {
 		(*logit)(arg, ISC_LOG_DEBUG(3),
 			 "nsec proves name exist (empty)");
-		dns_rdata_freestruct(&nsec);
 		*exists = true;
 		*data = false;
 		return ISC_R_SUCCESS;
@@ -472,13 +468,11 @@ dns_nsec_noexistnodata(dns_rdatatype_t type, const dns_name_t *name,
 		}
 		result = dns_name_concatenate(dns_wildcardname, &common, wild);
 		if (result != ISC_R_SUCCESS) {
-			dns_rdata_freestruct(&nsec);
 			(*logit)(arg, ISC_LOG_DEBUG(3),
 				 "failure generating wildcard name");
 			return result;
 		}
 	}
-	dns_rdata_freestruct(&nsec);
 	(*logit)(arg, ISC_LOG_DEBUG(3), "nsec range ok");
 	*exists = false;
 	return ISC_R_SUCCESS;
diff --git a/lib/dns/nsec3.c b/lib/dns/nsec3.c
index 0608ea6791..a99b850a96 100644
--- a/lib/dns/nsec3.c
+++ b/lib/dns/nsec3.c
@@ -211,7 +211,6 @@ dns_nsec3_typepresent(dns_rdata_t *rdata, dns_rdatatype_t type) {
 		}
 		break;
 	}
-	dns_rdata_freestruct(&nsec3);
 	return present;
 }

diff --git a/lib/dns/rdata.c b/lib/dns/rdata.c
index 43ac5a6e29..cf8beb075f 100644
--- a/lib/dns/rdata.c
+++ b/lib/dns/rdata.c
@@ -108,10 +108,6 @@

 #define CALL_TOSTRUCT rdata, target

-#define ARGS_FREESTRUCT void *source
-
-#define CALL_FREESTRUCT source
-
 #define ARGS_ADDLDATA                                \
 	dns_rdata_t *rdata, const dns_name_t *owner, \
 		dns_additionaldatafunc_t add, void *arg
@@ -259,8 +255,6 @@ static isc_result_t generic_fromstruct_key(ARGS_FROMSTRUCT);

 static isc_result_t generic_tostruct_key(ARGS_TOSTRUCT);

-static void generic_freestruct_key(ARGS_FREESTRUCT);
-
 static isc_result_t generic_fromtext_txt(ARGS_FROMTEXT);

 static isc_result_t generic_totext_txt(ARGS_TOTEXT);
@@ -271,8 +265,6 @@ static isc_result_t generic_fromstruct_txt(ARGS_FROMSTRUCT);

 static isc_result_t generic_tostruct_txt(ARGS_TOSTRUCT);

-static void generic_freestruct_txt(ARGS_FREESTRUCT);
-
 static isc_result_t
 generic_txt_first(dns_rdata_txt_t *txt);

@@ -302,15 +294,12 @@ static isc_result_t generic_fromstruct_tlsa(ARGS_FROMSTRUCT);

 static isc_result_t generic_tostruct_tlsa(ARGS_TOSTRUCT);

-static void generic_freestruct_tlsa(ARGS_FREESTRUCT);
-
 static isc_result_t generic_fromtext_in_svcb(ARGS_FROMTEXT);
 static isc_result_t generic_totext_in_svcb(ARGS_TOTEXT);
 static isc_result_t generic_fromwire_in_svcb(ARGS_FROMWIRE);
 static isc_result_t generic_towire_in_svcb(ARGS_TOWIRE);
 static isc_result_t generic_fromstruct_in_svcb(ARGS_FROMSTRUCT);
 static isc_result_t generic_tostruct_in_svcb(ARGS_TOSTRUCT);
-static void generic_freestruct_in_svcb(ARGS_FREESTRUCT);
 static isc_result_t generic_additionaldata_in_svcb(ARGS_ADDLDATA);
 static bool generic_checknames_in_svcb(ARGS_CHECKNAMES);
 static isc_result_t
@@ -1403,14 +1392,6 @@ dns_rdata_tostruct(const dns_rdata_t *rdata, void *target) {
 	return result;
 }

-void
-dns_rdata_freestruct(void *source) {
-	dns_rdatacommon_t *common = source;
-	REQUIRE(common != NULL);
-
-	FREESTRUCTSWITCH
-}
-
 isc_result_t
 dns_rdata_additionaldata(dns_rdata_t *rdata, const dns_name_t *owner,
 			 dns_additionaldatafunc_t add, void *arg) {
diff --git a/lib/dns/rdata/any_255/tsig_250.c b/lib/dns/rdata/any_255/tsig_250.c
index 83632bee41..dfba8bbf47 100644
--- a/lib/dns/rdata/any_255/tsig_250.c
+++ b/lib/dns/rdata/any_255/tsig_250.c
@@ -522,15 +522,6 @@ tostruct_any_tsig(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_any_tsig(ARGS_FREESTRUCT) {
-	dns_rdata_any_tsig_t *tsig = (dns_rdata_any_tsig_t *)source;
-
-	REQUIRE(tsig != NULL);
-	REQUIRE(tsig->common.rdtype == dns_rdatatype_tsig);
-	REQUIRE(tsig->common.rdclass == dns_rdataclass_any);
-}
-
 static isc_result_t
 additionaldata_any_tsig(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_tsig);
diff --git a/lib/dns/rdata/ch_3/a_1.c b/lib/dns/rdata/ch_3/a_1.c
index 5ab93c22b5..a229ff347c 100644
--- a/lib/dns/rdata/ch_3/a_1.c
+++ b/lib/dns/rdata/ch_3/a_1.c
@@ -240,14 +240,6 @@ tostruct_ch_a(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_ch_a(ARGS_FREESTRUCT) {
-	dns_rdata_ch_a_t *a = source;
-
-	REQUIRE(a != NULL);
-	REQUIRE(a->common.rdtype == dns_rdatatype_a);
-}
-
 static isc_result_t
 additionaldata_ch_a(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_a);
diff --git a/lib/dns/rdata/generic/afsdb_18.c b/lib/dns/rdata/generic/afsdb_18.c
index 6fcaf22800..e713eb6b5f 100644
--- a/lib/dns/rdata/generic/afsdb_18.c
+++ b/lib/dns/rdata/generic/afsdb_18.c
@@ -227,14 +227,6 @@ tostruct_afsdb(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_afsdb(ARGS_FREESTRUCT) {
-	dns_rdata_afsdb_t *afsdb = source;
-
-	REQUIRE(afsdb != NULL);
-	REQUIRE(afsdb->common.rdtype == dns_rdatatype_afsdb);
-}
-
 static isc_result_t
 additionaldata_afsdb(ARGS_ADDLDATA) {
 	dns_name_t name;
diff --git a/lib/dns/rdata/generic/amtrelay_260.c b/lib/dns/rdata/generic/amtrelay_260.c
index 8429d81cd1..3a5f4aedce 100644
--- a/lib/dns/rdata/generic/amtrelay_260.c
+++ b/lib/dns/rdata/generic/amtrelay_260.c
@@ -357,14 +357,6 @@ tostruct_amtrelay(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_amtrelay(ARGS_FREESTRUCT) {
-	dns_rdata_amtrelay_t *amtrelay = source;
-
-	REQUIRE(amtrelay != NULL);
-	REQUIRE(amtrelay->common.rdtype == dns_rdatatype_amtrelay);
-}
-
 static isc_result_t
 additionaldata_amtrelay(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_amtrelay);
diff --git a/lib/dns/rdata/generic/avc_258.c b/lib/dns/rdata/generic/avc_258.c
index f19cb480e6..16c479d78a 100644
--- a/lib/dns/rdata/generic/avc_258.c
+++ b/lib/dns/rdata/generic/avc_258.c
@@ -80,16 +80,6 @@ tostruct_avc(ARGS_TOSTRUCT) {
 	return generic_tostruct_txt(CALL_TOSTRUCT);
 }

-static void
-freestruct_avc(ARGS_FREESTRUCT) {
-	dns_rdata_avc_t *avc = source;
-
-	REQUIRE(avc != NULL);
-	REQUIRE(avc->common.rdtype == dns_rdatatype_avc);
-
-	generic_freestruct_txt(source);
-}
-
 static isc_result_t
 additionaldata_avc(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_avc);
diff --git a/lib/dns/rdata/generic/brid_68.c b/lib/dns/rdata/generic/brid_68.c
index c716fac019..dcfd651029 100644
--- a/lib/dns/rdata/generic/brid_68.c
+++ b/lib/dns/rdata/generic/brid_68.c
@@ -140,14 +140,6 @@ tostruct_brid(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_brid(ARGS_FREESTRUCT) {
-	dns_rdata_brid_t *brid = (dns_rdata_brid_t *)source;
-
-	REQUIRE(brid != NULL);
-	REQUIRE(brid->common.rdtype == dns_rdatatype_brid);
-}
-
 static isc_result_t
 additionaldata_brid(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_brid);
diff --git a/lib/dns/rdata/generic/caa_257.c b/lib/dns/rdata/generic/caa_257.c
index 49489eb57d..5151b810b5 100644
--- a/lib/dns/rdata/generic/caa_257.c
+++ b/lib/dns/rdata/generic/caa_257.c
@@ -530,14 +530,6 @@ tostruct_caa(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_caa(ARGS_FREESTRUCT) {
-	dns_rdata_caa_t *caa = (dns_rdata_caa_t *)source;
-
-	REQUIRE(caa != NULL);
-	REQUIRE(caa->common.rdtype == dns_rdatatype_caa);
-}
-
 static isc_result_t
 additionaldata_caa(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_caa);
diff --git a/lib/dns/rdata/generic/cdnskey_60.c b/lib/dns/rdata/generic/cdnskey_60.c
index 92bb1712ee..38aabccdf6 100644
--- a/lib/dns/rdata/generic/cdnskey_60.c
+++ b/lib/dns/rdata/generic/cdnskey_60.c
@@ -93,16 +93,6 @@ tostruct_cdnskey(ARGS_TOSTRUCT) {
 	return generic_tostruct_key(CALL_TOSTRUCT);
 }

-static void
-freestruct_cdnskey(ARGS_FREESTRUCT) {
-	dns_rdata_cdnskey_t *dnskey = (dns_rdata_cdnskey_t *)source;
-
-	REQUIRE(dnskey != NULL);
-	REQUIRE(dnskey->common.rdtype == dns_rdatatype_cdnskey);
-
-	generic_freestruct_key(source);
-}
-
 static isc_result_t
 additionaldata_cdnskey(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_cdnskey);
diff --git a/lib/dns/rdata/generic/cds_59.c b/lib/dns/rdata/generic/cds_59.c
index 15bb21c4f5..da6381da37 100644
--- a/lib/dns/rdata/generic/cds_59.c
+++ b/lib/dns/rdata/generic/cds_59.c
@@ -94,14 +94,6 @@ tostruct_cds(ARGS_TOSTRUCT) {
 	return generic_tostruct_ds(CALL_TOSTRUCT);
 }

-static void
-freestruct_cds(ARGS_FREESTRUCT) {
-	dns_rdata_cds_t *cds = source;
-
-	REQUIRE(cds != NULL);
-	REQUIRE(cds->common.rdtype == dns_rdatatype_cds);
-}
-
 static isc_result_t
 additionaldata_cds(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_cds);
diff --git a/lib/dns/rdata/generic/cert_37.c b/lib/dns/rdata/generic/cert_37.c
index 6a8abbeeae..8e14f6e0ec 100644
--- a/lib/dns/rdata/generic/cert_37.c
+++ b/lib/dns/rdata/generic/cert_37.c
@@ -207,14 +207,6 @@ tostruct_cert(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_cert(ARGS_FREESTRUCT) {
-	dns_rdata_cert_t *cert = source;
-
-	REQUIRE(cert != NULL);
-	REQUIRE(cert->common.rdtype == dns_rdatatype_cert);
-}
-
 static isc_result_t
 additionaldata_cert(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_cert);
diff --git a/lib/dns/rdata/generic/cname_5.c b/lib/dns/rdata/generic/cname_5.c
index 9a670bf6bc..8f0a8dbcd8 100644
--- a/lib/dns/rdata/generic/cname_5.c
+++ b/lib/dns/rdata/generic/cname_5.c
@@ -154,13 +154,6 @@ tostruct_cname(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_cname(ARGS_FREESTRUCT) {
-	dns_rdata_cname_t *cname = source;
-
-	REQUIRE(cname != NULL);
-}
-
 static isc_result_t
 additionaldata_cname(ARGS_ADDLDATA) {
 	UNUSED(rdata);
diff --git a/lib/dns/rdata/generic/csync_62.c b/lib/dns/rdata/generic/csync_62.c
index 77e34d56f3..68eee0feb3 100644
--- a/lib/dns/rdata/generic/csync_62.c
+++ b/lib/dns/rdata/generic/csync_62.c
@@ -183,14 +183,6 @@ tostruct_csync(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_csync(ARGS_FREESTRUCT) {
-	dns_rdata_csync_t *csync = source;
-
-	REQUIRE(csync != NULL);
-	REQUIRE(csync->common.rdtype == dns_rdatatype_csync);
-}
-
 static isc_result_t
 additionaldata_csync(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_csync);
diff --git a/lib/dns/rdata/generic/dlv_32769.c b/lib/dns/rdata/generic/dlv_32769.c
index 30f825ba86..a6b817267d 100644
--- a/lib/dns/rdata/generic/dlv_32769.c
+++ b/lib/dns/rdata/generic/dlv_32769.c
@@ -90,14 +90,6 @@ tostruct_dlv(ARGS_TOSTRUCT) {
 	return generic_tostruct_ds(CALL_TOSTRUCT);
 }

-static void
-freestruct_dlv(ARGS_FREESTRUCT) {
-	dns_rdata_dlv_t *dlv = source;
-
-	REQUIRE(dlv != NULL);
-	REQUIRE(dlv->common.rdtype == dns_rdatatype_dlv);
-}
-
 static isc_result_t
 additionaldata_dlv(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_dlv);
diff --git a/lib/dns/rdata/generic/dname_39.c b/lib/dns/rdata/generic/dname_39.c
index 7606e1a85b..270e16f7ad 100644
--- a/lib/dns/rdata/generic/dname_39.c
+++ b/lib/dns/rdata/generic/dname_39.c
@@ -154,14 +154,6 @@ tostruct_dname(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_dname(ARGS_FREESTRUCT) {
-	dns_rdata_dname_t *dname = source;
-
-	REQUIRE(dname != NULL);
-	REQUIRE(dname->common.rdtype == dns_rdatatype_dname);
-}
-
 static isc_result_t
 additionaldata_dname(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_dname);
diff --git a/lib/dns/rdata/generic/dnskey_48.c b/lib/dns/rdata/generic/dnskey_48.c
index aeb98fc507..a32733eaaf 100644
--- a/lib/dns/rdata/generic/dnskey_48.c
+++ b/lib/dns/rdata/generic/dnskey_48.c
@@ -94,16 +94,6 @@ tostruct_dnskey(ARGS_TOSTRUCT) {
 	return generic_tostruct_key(CALL_TOSTRUCT);
 }

-static void
-freestruct_dnskey(ARGS_FREESTRUCT) {
-	dns_rdata_dnskey_t *dnskey = (dns_rdata_dnskey_t *)source;
-
-	REQUIRE(dnskey != NULL);
-	REQUIRE(dnskey->common.rdtype == dns_rdatatype_dnskey);
-
-	generic_freestruct_key(source);
-}
-
 static isc_result_t
 additionaldata_dnskey(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_dnskey);
diff --git a/lib/dns/rdata/generic/doa_259.c b/lib/dns/rdata/generic/doa_259.c
index cd54856b7a..017202ec0a 100644
--- a/lib/dns/rdata/generic/doa_259.c
+++ b/lib/dns/rdata/generic/doa_259.c
@@ -258,14 +258,6 @@ tostruct_doa(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_doa(ARGS_FREESTRUCT) {
-	dns_rdata_doa_t *doa = source;
-
-	REQUIRE(doa != NULL);
-	REQUIRE(doa->common.rdtype == dns_rdatatype_doa);
-}
-
 static isc_result_t
 additionaldata_doa(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_doa);
diff --git a/lib/dns/rdata/generic/ds_43.c b/lib/dns/rdata/generic/ds_43.c
index 7f183c7e79..9c636278b9 100644
--- a/lib/dns/rdata/generic/ds_43.c
+++ b/lib/dns/rdata/generic/ds_43.c
@@ -306,14 +306,6 @@ tostruct_ds(ARGS_TOSTRUCT) {
 	return generic_tostruct_ds(CALL_TOSTRUCT);
 }

-static void
-freestruct_ds(ARGS_FREESTRUCT) {
-	dns_rdata_ds_t *ds = source;
-
-	REQUIRE(ds != NULL);
-	REQUIRE(ds->common.rdtype == dns_rdatatype_ds);
-}
-
 static isc_result_t
 additionaldata_ds(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_ds);
diff --git a/lib/dns/rdata/generic/dsync_66.c b/lib/dns/rdata/generic/dsync_66.c
index cc49171648..8cd8be20eb 100644
--- a/lib/dns/rdata/generic/dsync_66.c
+++ b/lib/dns/rdata/generic/dsync_66.c
@@ -270,14 +270,6 @@ tostruct_dsync(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_dsync(ARGS_FREESTRUCT) {
-	dns_rdata_dsync_t *dsync = source;
-
-	REQUIRE(dsync != NULL);
-	REQUIRE(dsync->common.rdtype == dns_rdatatype_dsync);
-}
-
 static isc_result_t
 additionaldata_dsync(ARGS_ADDLDATA) {
 	dns_name_t name;
diff --git a/lib/dns/rdata/generic/eui48_108.c b/lib/dns/rdata/generic/eui48_108.c
index bd53015d55..2755dd8935 100644
--- a/lib/dns/rdata/generic/eui48_108.c
+++ b/lib/dns/rdata/generic/eui48_108.c
@@ -151,16 +151,6 @@ tostruct_eui48(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_eui48(ARGS_FREESTRUCT) {
-	dns_rdata_eui48_t *eui48 = source;
-
-	REQUIRE(eui48 != NULL);
-	REQUIRE(eui48->common.rdtype == dns_rdatatype_eui48);
-
-	return;
-}
-
 static isc_result_t
 additionaldata_eui48(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_eui48);
diff --git a/lib/dns/rdata/generic/eui64_109.c b/lib/dns/rdata/generic/eui64_109.c
index 124100b7f1..816b82dffa 100644
--- a/lib/dns/rdata/generic/eui64_109.c
+++ b/lib/dns/rdata/generic/eui64_109.c
@@ -155,16 +155,6 @@ tostruct_eui64(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_eui64(ARGS_FREESTRUCT) {
-	dns_rdata_eui64_t *eui64 = source;
-
-	REQUIRE(eui64 != NULL);
-	REQUIRE(eui64->common.rdtype == dns_rdatatype_eui64);
-
-	return;
-}
-
 static isc_result_t
 additionaldata_eui64(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_eui64);
diff --git a/lib/dns/rdata/generic/gpos_27.c b/lib/dns/rdata/generic/gpos_27.c
index a2da83c347..a3cdaaca94 100644
--- a/lib/dns/rdata/generic/gpos_27.c
+++ b/lib/dns/rdata/generic/gpos_27.c
@@ -156,14 +156,6 @@ tostruct_gpos(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_gpos(ARGS_FREESTRUCT) {
-	dns_rdata_gpos_t *gpos = source;
-
-	REQUIRE(gpos != NULL);
-	REQUIRE(gpos->common.rdtype == dns_rdatatype_gpos);
-}
-
 static isc_result_t
 additionaldata_gpos(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_gpos);
diff --git a/lib/dns/rdata/generic/hhit_67.c b/lib/dns/rdata/generic/hhit_67.c
index ff182f3b7c..e2209d7a68 100644
--- a/lib/dns/rdata/generic/hhit_67.c
+++ b/lib/dns/rdata/generic/hhit_67.c
@@ -140,14 +140,6 @@ tostruct_hhit(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_hhit(ARGS_FREESTRUCT) {
-	dns_rdata_hhit_t *hhit = (dns_rdata_hhit_t *)source;
-
-	REQUIRE(hhit != NULL);
-	REQUIRE(hhit->common.rdtype == dns_rdatatype_hhit);
-}
-
 static isc_result_t
 additionaldata_hhit(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_hhit);
diff --git a/lib/dns/rdata/generic/hinfo_13.c b/lib/dns/rdata/generic/hinfo_13.c
index 771c9df715..7738c67184 100644
--- a/lib/dns/rdata/generic/hinfo_13.c
+++ b/lib/dns/rdata/generic/hinfo_13.c
@@ -130,13 +130,6 @@ tostruct_hinfo(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_hinfo(ARGS_FREESTRUCT) {
-	dns_rdata_hinfo_t *hinfo = source;
-
-	REQUIRE(hinfo != NULL);
-}
-
 static isc_result_t
 additionaldata_hinfo(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_hinfo);
diff --git a/lib/dns/rdata/generic/hip_55.c b/lib/dns/rdata/generic/hip_55.c
index a17283e8fa..8d71476cdd 100644
--- a/lib/dns/rdata/generic/hip_55.c
+++ b/lib/dns/rdata/generic/hip_55.c
@@ -335,13 +335,6 @@ tostruct_hip(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_hip(ARGS_FREESTRUCT) {
-	dns_rdata_hip_t *hip = source;
-
-	REQUIRE(hip != NULL);
-}
-
 static isc_result_t
 additionaldata_hip(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_hip);
diff --git a/lib/dns/rdata/generic/ipseckey_45.c b/lib/dns/rdata/generic/ipseckey_45.c
index b96b733f59..aa92309e52 100644
--- a/lib/dns/rdata/generic/ipseckey_45.c
+++ b/lib/dns/rdata/generic/ipseckey_45.c
@@ -398,14 +398,6 @@ tostruct_ipseckey(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_ipseckey(ARGS_FREESTRUCT) {
-	dns_rdata_ipseckey_t *ipseckey = source;
-
-	REQUIRE(ipseckey != NULL);
-	REQUIRE(ipseckey->common.rdtype == dns_rdatatype_ipseckey);
-}
-
 static isc_result_t
 additionaldata_ipseckey(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_ipseckey);
diff --git a/lib/dns/rdata/generic/isdn_20.c b/lib/dns/rdata/generic/isdn_20.c
index f1d7842606..2675837753 100644
--- a/lib/dns/rdata/generic/isdn_20.c
+++ b/lib/dns/rdata/generic/isdn_20.c
@@ -158,13 +158,6 @@ tostruct_isdn(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_isdn(ARGS_FREESTRUCT) {
-	dns_rdata_isdn_t *isdn = source;
-
-	REQUIRE(isdn != NULL);
-}
-
 static isc_result_t
 additionaldata_isdn(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_isdn);
diff --git a/lib/dns/rdata/generic/key_25.c b/lib/dns/rdata/generic/key_25.c
index 3d168b50a3..3d8fd3908c 100644
--- a/lib/dns/rdata/generic/key_25.c
+++ b/lib/dns/rdata/generic/key_25.c
@@ -345,13 +345,6 @@ generic_tostruct_key(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-generic_freestruct_key(ARGS_FREESTRUCT) {
-	dns_rdata_key_t *key = (dns_rdata_key_t *)source;
-
-	REQUIRE(key != NULL);
-}
-
 static isc_result_t
 fromstruct_key(ARGS_FROMSTRUCT) {
 	REQUIRE(type == dns_rdatatype_key);
@@ -372,16 +365,6 @@ tostruct_key(ARGS_TOSTRUCT) {
 	return generic_tostruct_key(CALL_TOSTRUCT);
 }

-static void
-freestruct_key(ARGS_FREESTRUCT) {
-	dns_rdata_key_t *key = (dns_rdata_key_t *)source;
-
-	REQUIRE(key != NULL);
-	REQUIRE(key->common.rdtype == dns_rdatatype_key);
-
-	generic_freestruct_key(source);
-}
-
 static isc_result_t
 additionaldata_key(ARGS_ADDLDATA) {
 	REQUIRE(rdata != NULL);
diff --git a/lib/dns/rdata/generic/keydata_65533.c b/lib/dns/rdata/generic/keydata_65533.c
index 775057cc38..e9b60525d5 100644
--- a/lib/dns/rdata/generic/keydata_65533.c
+++ b/lib/dns/rdata/generic/keydata_65533.c
@@ -388,14 +388,6 @@ tostruct_keydata(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_keydata(ARGS_FREESTRUCT) {
-	dns_rdata_keydata_t *keydata = (dns_rdata_keydata_t *)source;
-
-	REQUIRE(keydata != NULL);
-	REQUIRE(keydata->common.rdtype == dns_rdatatype_keydata);
-}
-
 static isc_result_t
 additionaldata_keydata(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_keydata);
diff --git a/lib/dns/rdata/generic/l32_105.c b/lib/dns/rdata/generic/l32_105.c
index e7b7ce5330..a711c6170a 100644
--- a/lib/dns/rdata/generic/l32_105.c
+++ b/lib/dns/rdata/generic/l32_105.c
@@ -161,16 +161,6 @@ tostruct_l32(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_l32(ARGS_FREESTRUCT) {
-	dns_rdata_l32_t *l32 = source;
-
-	REQUIRE(l32 != NULL);
-	REQUIRE(l32->common.rdtype == dns_rdatatype_l32);
-
-	return;
-}
-
 static isc_result_t
 additionaldata_l32(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_l32);
diff --git a/lib/dns/rdata/generic/l64_106.c b/lib/dns/rdata/generic/l64_106.c
index a1706d77f8..92aebba585 100644
--- a/lib/dns/rdata/generic/l64_106.c
+++ b/lib/dns/rdata/generic/l64_106.c
@@ -155,16 +155,6 @@ tostruct_l64(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_l64(ARGS_FREESTRUCT) {
-	dns_rdata_l64_t *l64 = source;
-
-	REQUIRE(l64 != NULL);
-	REQUIRE(l64->common.rdtype == dns_rdatatype_l64);
-
-	return;
-}
-
 static isc_result_t
 additionaldata_l64(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_l64);
diff --git a/lib/dns/rdata/generic/loc_29.c b/lib/dns/rdata/generic/loc_29.c
index c500c27253..acf3667a43 100644
--- a/lib/dns/rdata/generic/loc_29.c
+++ b/lib/dns/rdata/generic/loc_29.c
@@ -770,17 +770,6 @@ tostruct_loc(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_loc(ARGS_FREESTRUCT) {
-	dns_rdata_loc_t *loc = source;
-
-	REQUIRE(loc != NULL);
-	REQUIRE(loc->common.rdtype == dns_rdatatype_loc);
-
-	UNUSED(source);
-	UNUSED(loc);
-}
-
 static isc_result_t
 additionaldata_loc(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_loc);
diff --git a/lib/dns/rdata/generic/lp_107.c b/lib/dns/rdata/generic/lp_107.c
index d3d81a657d..75fd8d3854 100644
--- a/lib/dns/rdata/generic/lp_107.c
+++ b/lib/dns/rdata/generic/lp_107.c
@@ -165,14 +165,6 @@ tostruct_lp(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_lp(ARGS_FREESTRUCT) {
-	dns_rdata_lp_t *lp = source;
-
-	REQUIRE(lp != NULL);
-	REQUIRE(lp->common.rdtype == dns_rdatatype_lp);
-}
-
 static isc_result_t
 additionaldata_lp(ARGS_ADDLDATA) {
 	dns_name_t name;
diff --git a/lib/dns/rdata/generic/mb_7.c b/lib/dns/rdata/generic/mb_7.c
index 9b1193d7b1..2e0e64e626 100644
--- a/lib/dns/rdata/generic/mb_7.c
+++ b/lib/dns/rdata/generic/mb_7.c
@@ -153,13 +153,6 @@ tostruct_mb(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_mb(ARGS_FREESTRUCT) {
-	dns_rdata_mb_t *mb = source;
-
-	REQUIRE(mb != NULL);
-}
-
 static isc_result_t
 additionaldata_mb(ARGS_ADDLDATA) {
 	dns_name_t name;
diff --git a/lib/dns/rdata/generic/md_3.c b/lib/dns/rdata/generic/md_3.c
index 52a9440214..265bbd19bb 100644
--- a/lib/dns/rdata/generic/md_3.c
+++ b/lib/dns/rdata/generic/md_3.c
@@ -153,14 +153,6 @@ tostruct_md(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_md(ARGS_FREESTRUCT) {
-	dns_rdata_md_t *md = source;
-
-	REQUIRE(md != NULL);
-	REQUIRE(md->common.rdtype == dns_rdatatype_md);
-}
-
 static isc_result_t
 additionaldata_md(ARGS_ADDLDATA) {
 	dns_name_t name;
diff --git a/lib/dns/rdata/generic/mf_4.c b/lib/dns/rdata/generic/mf_4.c
index 429d4272b3..d481f68d22 100644
--- a/lib/dns/rdata/generic/mf_4.c
+++ b/lib/dns/rdata/generic/mf_4.c
@@ -153,14 +153,6 @@ tostruct_mf(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_mf(ARGS_FREESTRUCT) {
-	dns_rdata_mf_t *mf = source;
-
-	REQUIRE(mf != NULL);
-	REQUIRE(mf->common.rdtype == dns_rdatatype_mf);
-}
-
 static isc_result_t
 additionaldata_mf(ARGS_ADDLDATA) {
 	dns_name_t name;
diff --git a/lib/dns/rdata/generic/mg_8.c b/lib/dns/rdata/generic/mg_8.c
index 1027aa10c9..f4b4ff8997 100644
--- a/lib/dns/rdata/generic/mg_8.c
+++ b/lib/dns/rdata/generic/mg_8.c
@@ -153,14 +153,6 @@ tostruct_mg(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_mg(ARGS_FREESTRUCT) {
-	dns_rdata_mg_t *mg = source;
-
-	REQUIRE(mg != NULL);
-	REQUIRE(mg->common.rdtype == dns_rdatatype_mg);
-}
-
 static isc_result_t
 additionaldata_mg(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_mg);
diff --git a/lib/dns/rdata/generic/minfo_14.c b/lib/dns/rdata/generic/minfo_14.c
index ce1d1ccb28..eb17f0fd32 100644
--- a/lib/dns/rdata/generic/minfo_14.c
+++ b/lib/dns/rdata/generic/minfo_14.c
@@ -222,14 +222,6 @@ tostruct_minfo(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_minfo(ARGS_FREESTRUCT) {
-	dns_rdata_minfo_t *minfo = source;
-
-	REQUIRE(minfo != NULL);
-	REQUIRE(minfo->common.rdtype == dns_rdatatype_minfo);
-}
-
 static isc_result_t
 additionaldata_minfo(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_minfo);
diff --git a/lib/dns/rdata/generic/mr_9.c b/lib/dns/rdata/generic/mr_9.c
index 387ef51c6c..a48bbaac29 100644
--- a/lib/dns/rdata/generic/mr_9.c
+++ b/lib/dns/rdata/generic/mr_9.c
@@ -153,14 +153,6 @@ tostruct_mr(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_mr(ARGS_FREESTRUCT) {
-	dns_rdata_mr_t *mr = source;
-
-	REQUIRE(mr != NULL);
-	REQUIRE(mr->common.rdtype == dns_rdatatype_mr);
-}
-
 static isc_result_t
 additionaldata_mr(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_mr);
diff --git a/lib/dns/rdata/generic/mx_15.c b/lib/dns/rdata/generic/mx_15.c
index f65d112b16..47bbc971b5 100644
--- a/lib/dns/rdata/generic/mx_15.c
+++ b/lib/dns/rdata/generic/mx_15.c
@@ -243,14 +243,6 @@ tostruct_mx(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_mx(ARGS_FREESTRUCT) {
-	dns_rdata_mx_t *mx = source;
-
-	REQUIRE(mx != NULL);
-	REQUIRE(mx->common.rdtype == dns_rdatatype_mx);
-}
-
 static unsigned char port25_ndata[] = "\003_25\004_tcp";
 static dns_name_t port25 = DNS_NAME_INITNONABSOLUTE(port25_ndata);

diff --git a/lib/dns/rdata/generic/naptr_35.c b/lib/dns/rdata/generic/naptr_35.c
index 94cbaa3f82..914ed1906c 100644
--- a/lib/dns/rdata/generic/naptr_35.c
+++ b/lib/dns/rdata/generic/naptr_35.c
@@ -542,14 +542,6 @@ tostruct_naptr(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_naptr(ARGS_FREESTRUCT) {
-	dns_rdata_naptr_t *naptr = source;
-
-	REQUIRE(naptr != NULL);
-	REQUIRE(naptr->common.rdtype == dns_rdatatype_naptr);
-}
-
 static isc_result_t
 additionaldata_naptr(ARGS_ADDLDATA) {
 	dns_name_t name;
diff --git a/lib/dns/rdata/generic/nid_104.c b/lib/dns/rdata/generic/nid_104.c
index bb22d770d9..8d261712e3 100644
--- a/lib/dns/rdata/generic/nid_104.c
+++ b/lib/dns/rdata/generic/nid_104.c
@@ -155,16 +155,6 @@ tostruct_nid(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_nid(ARGS_FREESTRUCT) {
-	dns_rdata_nid_t *nid = source;
-
-	REQUIRE(nid != NULL);
-	REQUIRE(nid->common.rdtype == dns_rdatatype_nid);
-
-	return;
-}
-
 static isc_result_t
 additionaldata_nid(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_nid);
diff --git a/lib/dns/rdata/generic/ninfo_56.c b/lib/dns/rdata/generic/ninfo_56.c
index 100acdcf46..4261796882 100644
--- a/lib/dns/rdata/generic/ninfo_56.c
+++ b/lib/dns/rdata/generic/ninfo_56.c
@@ -80,16 +80,6 @@ tostruct_ninfo(ARGS_TOSTRUCT) {
 	return generic_tostruct_txt(CALL_TOSTRUCT);
 }

-static void
-freestruct_ninfo(ARGS_FREESTRUCT) {
-	dns_rdata_ninfo_t *ninfo = source;
-
-	REQUIRE(ninfo != NULL);
-	REQUIRE(ninfo->common.rdtype == dns_rdatatype_ninfo);
-
-	generic_freestruct_txt(source);
-}
-
 static isc_result_t
 additionaldata_ninfo(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_ninfo);
diff --git a/lib/dns/rdata/generic/ns_2.c b/lib/dns/rdata/generic/ns_2.c
index 5fbe63c447..f4aa667927 100644
--- a/lib/dns/rdata/generic/ns_2.c
+++ b/lib/dns/rdata/generic/ns_2.c
@@ -167,13 +167,6 @@ tostruct_ns(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_ns(ARGS_FREESTRUCT) {
-	dns_rdata_ns_t *ns = source;
-
-	REQUIRE(ns != NULL);
-}
-
 static isc_result_t
 additionaldata_ns(ARGS_ADDLDATA) {
 	dns_name_t name;
diff --git a/lib/dns/rdata/generic/nsec3_50.c b/lib/dns/rdata/generic/nsec3_50.c
index 6496a58a01..e85de115fb 100644
--- a/lib/dns/rdata/generic/nsec3_50.c
+++ b/lib/dns/rdata/generic/nsec3_50.c
@@ -306,8 +306,6 @@ fromstruct_nsec3(ARGS_FROMSTRUCT) {
 			    nsec3->typebits.length);
 }

-static void freestruct_nsec3(ARGS_FREESTRUCT);
-
 static isc_result_t
 tostruct_nsec3(ARGS_TOSTRUCT) {
 	isc_region_t region;
@@ -341,14 +339,6 @@ tostruct_nsec3(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_nsec3(ARGS_FREESTRUCT) {
-	dns_rdata_nsec3_t *nsec3 = source;
-
-	REQUIRE(nsec3 != NULL);
-	REQUIRE(nsec3->common.rdtype == dns_rdatatype_nsec3);
-}
-
 static isc_result_t
 additionaldata_nsec3(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_nsec3);
diff --git a/lib/dns/rdata/generic/nsec3param_51.c b/lib/dns/rdata/generic/nsec3param_51.c
index 3712c9e02f..978d43ef61 100644
--- a/lib/dns/rdata/generic/nsec3param_51.c
+++ b/lib/dns/rdata/generic/nsec3param_51.c
@@ -245,14 +245,6 @@ tostruct_nsec3param(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_nsec3param(ARGS_FREESTRUCT) {
-	dns_rdata_nsec3param_t *nsec3param = source;
-
-	REQUIRE(nsec3param != NULL);
-	REQUIRE(nsec3param->common.rdtype == dns_rdatatype_nsec3param);
-}
-
 static isc_result_t
 additionaldata_nsec3param(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_nsec3param);
diff --git a/lib/dns/rdata/generic/nsec_47.c b/lib/dns/rdata/generic/nsec_47.c
index b0a5b5b9b4..ed20fa7773 100644
--- a/lib/dns/rdata/generic/nsec_47.c
+++ b/lib/dns/rdata/generic/nsec_47.c
@@ -176,14 +176,6 @@ tostruct_nsec(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_nsec(ARGS_FREESTRUCT) {
-	dns_rdata_nsec_t *nsec = source;
-
-	REQUIRE(nsec != NULL);
-	REQUIRE(nsec->common.rdtype == dns_rdatatype_nsec);
-}
-
 static isc_result_t
 additionaldata_nsec(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_nsec);
diff --git a/lib/dns/rdata/generic/null_10.c b/lib/dns/rdata/generic/null_10.c
index 1397801f3a..10bdf4a951 100644
--- a/lib/dns/rdata/generic/null_10.c
+++ b/lib/dns/rdata/generic/null_10.c
@@ -108,14 +108,6 @@ tostruct_null(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_null(ARGS_FREESTRUCT) {
-	dns_rdata_null_t *null = source;
-
-	REQUIRE(null != NULL);
-	REQUIRE(null->common.rdtype == dns_rdatatype_null);
-}
-
 static isc_result_t
 additionaldata_null(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_null);
diff --git a/lib/dns/rdata/generic/nxt_30.c b/lib/dns/rdata/generic/nxt_30.c
index ea73690284..7c2d1d9ed2 100644
--- a/lib/dns/rdata/generic/nxt_30.c
+++ b/lib/dns/rdata/generic/nxt_30.c
@@ -259,14 +259,6 @@ tostruct_nxt(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_nxt(ARGS_FREESTRUCT) {
-	dns_rdata_nxt_t *nxt = source;
-
-	REQUIRE(nxt != NULL);
-	REQUIRE(nxt->common.rdtype == dns_rdatatype_nxt);
-}
-
 static isc_result_t
 additionaldata_nxt(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_nxt);
diff --git a/lib/dns/rdata/generic/openpgpkey_61.c b/lib/dns/rdata/generic/openpgpkey_61.c
index e0b5827c01..359d54f6bf 100644
--- a/lib/dns/rdata/generic/openpgpkey_61.c
+++ b/lib/dns/rdata/generic/openpgpkey_61.c
@@ -156,14 +156,6 @@ tostruct_openpgpkey(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_openpgpkey(ARGS_FREESTRUCT) {
-	dns_rdata_openpgpkey_t *sig = (dns_rdata_openpgpkey_t *)source;
-
-	REQUIRE(sig != NULL);
-	REQUIRE(sig->common.rdtype == dns_rdatatype_openpgpkey);
-}
-
 static isc_result_t
 additionaldata_openpgpkey(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_openpgpkey);
diff --git a/lib/dns/rdata/generic/opt_41.c b/lib/dns/rdata/generic/opt_41.c
index 5a83d1642f..71f223e370 100644
--- a/lib/dns/rdata/generic/opt_41.c
+++ b/lib/dns/rdata/generic/opt_41.c
@@ -374,14 +374,6 @@ tostruct_opt(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_opt(ARGS_FREESTRUCT) {
-	dns_rdata_opt_t *opt = source;
-
-	REQUIRE(opt != NULL);
-	REQUIRE(opt->common.rdtype == dns_rdatatype_opt);
-}
-
 static isc_result_t
 additionaldata_opt(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_opt);
diff --git a/lib/dns/rdata/generic/proforma.c b/lib/dns/rdata/generic/proforma.c
index 811d31cf78..2f73fd4d10 100644
--- a/lib/dns/rdata/generic/proforma.c
+++ b/lib/dns/rdata/generic/proforma.c
@@ -93,14 +93,6 @@ static isc_result_t tostruct_ #(ARGS_TOSTRUCT) {
 	return ISC_R_NOTIMPLEMENTED;
 }

-static void freestruct_ #(ARGS_FREESTRUCT) {
-	dns_rdata_ #_t *# = source;
-
-	REQUIRE(# != NULL);
-	REQUIRE(#->common.rdtype == dns_rdatatype_proforma.c #);
-	REQUIRE(#->common.rdclass == #);
-}
-
 static isc_result_t additionaldata_ #(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_proforma.c #);
 	REQUIRE(rdata->rdclass == #);
diff --git a/lib/dns/rdata/generic/ptr_12.c b/lib/dns/rdata/generic/ptr_12.c
index 504cc88bf6..0687f578d4 100644
--- a/lib/dns/rdata/generic/ptr_12.c
+++ b/lib/dns/rdata/generic/ptr_12.c
@@ -171,14 +171,6 @@ tostruct_ptr(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_ptr(ARGS_FREESTRUCT) {
-	dns_rdata_ptr_t *ptr = source;
-
-	REQUIRE(ptr != NULL);
-	REQUIRE(ptr->common.rdtype == dns_rdatatype_ptr);
-}
-
 static isc_result_t
 additionaldata_ptr(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_ptr);
diff --git a/lib/dns/rdata/generic/resinfo_261.c b/lib/dns/rdata/generic/resinfo_261.c
index a34895c7a9..23ce4e8d54 100644
--- a/lib/dns/rdata/generic/resinfo_261.c
+++ b/lib/dns/rdata/generic/resinfo_261.c
@@ -81,16 +81,6 @@ tostruct_resinfo(ARGS_TOSTRUCT) {
 	return generic_tostruct_txt(CALL_TOSTRUCT);
 }

-static void
-freestruct_resinfo(ARGS_FREESTRUCT) {
-	dns_rdata_resinfo_t *resinfo = source;
-
-	REQUIRE(resinfo != NULL);
-	REQUIRE(resinfo->common.rdtype == dns_rdatatype_resinfo);
-
-	generic_freestruct_txt(source);
-}
-
 static isc_result_t
 additionaldata_resinfo(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_resinfo);
diff --git a/lib/dns/rdata/generic/rkey_57.c b/lib/dns/rdata/generic/rkey_57.c
index e2882f68ea..6b98aed70b 100644
--- a/lib/dns/rdata/generic/rkey_57.c
+++ b/lib/dns/rdata/generic/rkey_57.c
@@ -90,16 +90,6 @@ tostruct_rkey(ARGS_TOSTRUCT) {
 	return generic_tostruct_key(CALL_TOSTRUCT);
 }

-static void
-freestruct_rkey(ARGS_FREESTRUCT) {
-	dns_rdata_rkey_t *rkey = (dns_rdata_rkey_t *)source;
-
-	REQUIRE(rkey != NULL);
-	REQUIRE(rkey->common.rdtype == dns_rdatatype_rkey);
-
-	generic_freestruct_key(source);
-}
-
 static isc_result_t
 additionaldata_rkey(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_rkey);
diff --git a/lib/dns/rdata/generic/rp_17.c b/lib/dns/rdata/generic/rp_17.c
index 73b871c760..ab3c3e725d 100644
--- a/lib/dns/rdata/generic/rp_17.c
+++ b/lib/dns/rdata/generic/rp_17.c
@@ -228,14 +228,6 @@ tostruct_rp(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_rp(ARGS_FREESTRUCT) {
-	dns_rdata_rp_t *rp = source;
-
-	REQUIRE(rp != NULL);
-	REQUIRE(rp->common.rdtype == dns_rdatatype_rp);
-}
-
 static isc_result_t
 additionaldata_rp(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_rp);
diff --git a/lib/dns/rdata/generic/rrsig_46.c b/lib/dns/rdata/generic/rrsig_46.c
index f2f6b4a3f8..1ad781ebea 100644
--- a/lib/dns/rdata/generic/rrsig_46.c
+++ b/lib/dns/rdata/generic/rrsig_46.c
@@ -580,14 +580,6 @@ tostruct_rrsig(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_rrsig(ARGS_FREESTRUCT) {
-	dns_rdata_rrsig_t *sig = (dns_rdata_rrsig_t *)source;
-
-	REQUIRE(sig != NULL);
-	REQUIRE(sig->common.rdtype == dns_rdatatype_rrsig);
-}
-
 static isc_result_t
 additionaldata_rrsig(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_rrsig);
diff --git a/lib/dns/rdata/generic/rt_21.c b/lib/dns/rdata/generic/rt_21.c
index 53bc816a38..735399866f 100644
--- a/lib/dns/rdata/generic/rt_21.c
+++ b/lib/dns/rdata/generic/rt_21.c
@@ -223,14 +223,6 @@ tostruct_rt(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_rt(ARGS_FREESTRUCT) {
-	dns_rdata_rt_t *rt = source;
-
-	REQUIRE(rt != NULL);
-	REQUIRE(rt->common.rdtype == dns_rdatatype_rt);
-}
-
 static isc_result_t
 additionaldata_rt(ARGS_ADDLDATA) {
 	dns_name_t name;
diff --git a/lib/dns/rdata/generic/sig_24.c b/lib/dns/rdata/generic/sig_24.c
index 49295573d1..c2787f72a9 100644
--- a/lib/dns/rdata/generic/sig_24.c
+++ b/lib/dns/rdata/generic/sig_24.c
@@ -525,14 +525,6 @@ tostruct_sig(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_sig(ARGS_FREESTRUCT) {
-	dns_rdata_sig_t *sig = (dns_rdata_sig_t *)source;
-
-	REQUIRE(sig != NULL);
-	REQUIRE(sig->common.rdtype == dns_rdatatype_sig);
-}
-
 static isc_result_t
 additionaldata_sig(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_sig);
diff --git a/lib/dns/rdata/generic/sink_40.c b/lib/dns/rdata/generic/sink_40.c
index cf3f7a5857..0072e29415 100644
--- a/lib/dns/rdata/generic/sink_40.c
+++ b/lib/dns/rdata/generic/sink_40.c
@@ -205,14 +205,6 @@ tostruct_sink(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_sink(ARGS_FREESTRUCT) {
-	dns_rdata_sink_t *sink = (dns_rdata_sink_t *)source;
-
-	REQUIRE(sink != NULL);
-	REQUIRE(sink->common.rdtype == dns_rdatatype_sink);
-}
-
 static isc_result_t
 additionaldata_sink(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_sink);
diff --git a/lib/dns/rdata/generic/smimea_53.c b/lib/dns/rdata/generic/smimea_53.c
index 2ddcab81f8..c45e3a7858 100644
--- a/lib/dns/rdata/generic/smimea_53.c
+++ b/lib/dns/rdata/generic/smimea_53.c
@@ -87,16 +87,6 @@ tostruct_smimea(ARGS_TOSTRUCT) {
 	return generic_tostruct_tlsa(CALL_TOSTRUCT);
 }

-static void
-freestruct_smimea(ARGS_FREESTRUCT) {
-	dns_rdata_smimea_t *smimea = source;
-
-	REQUIRE(smimea != NULL);
-	REQUIRE(smimea->common.rdtype == dns_rdatatype_smimea);
-
-	generic_freestruct_tlsa(source);
-}
-
 static isc_result_t
 additionaldata_smimea(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_smimea);
diff --git a/lib/dns/rdata/generic/soa_6.c b/lib/dns/rdata/generic/soa_6.c
index e985c3f515..574495b6f5 100644
--- a/lib/dns/rdata/generic/soa_6.c
+++ b/lib/dns/rdata/generic/soa_6.c
@@ -344,14 +344,6 @@ tostruct_soa(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_soa(ARGS_FREESTRUCT) {
-	dns_rdata_soa_t *soa = source;
-
-	REQUIRE(soa != NULL);
-	REQUIRE(soa->common.rdtype == dns_rdatatype_soa);
-}
-
 static isc_result_t
 additionaldata_soa(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_soa);
diff --git a/lib/dns/rdata/generic/spf_99.c b/lib/dns/rdata/generic/spf_99.c
index 3991860551..59c315d5b6 100644
--- a/lib/dns/rdata/generic/spf_99.c
+++ b/lib/dns/rdata/generic/spf_99.c
@@ -81,16 +81,6 @@ tostruct_spf(ARGS_TOSTRUCT) {
 	return generic_tostruct_txt(CALL_TOSTRUCT);
 }

-static void
-freestruct_spf(ARGS_FREESTRUCT) {
-	dns_rdata_spf_t *spf = source;
-
-	REQUIRE(spf != NULL);
-	REQUIRE(spf->common.rdtype == dns_rdatatype_spf);
-
-	generic_freestruct_txt(source);
-}
-
 static isc_result_t
 additionaldata_spf(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_spf);
diff --git a/lib/dns/rdata/generic/sshfp_44.c b/lib/dns/rdata/generic/sshfp_44.c
index e85c3cf717..68d2f66936 100644
--- a/lib/dns/rdata/generic/sshfp_44.c
+++ b/lib/dns/rdata/generic/sshfp_44.c
@@ -218,14 +218,6 @@ tostruct_sshfp(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_sshfp(ARGS_FREESTRUCT) {
-	dns_rdata_sshfp_t *sshfp = source;
-
-	REQUIRE(sshfp != NULL);
-	REQUIRE(sshfp->common.rdtype == dns_rdatatype_sshfp);
-}
-
 static isc_result_t
 additionaldata_sshfp(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_sshfp);
diff --git a/lib/dns/rdata/generic/ta_32768.c b/lib/dns/rdata/generic/ta_32768.c
index 9256221860..121a036273 100644
--- a/lib/dns/rdata/generic/ta_32768.c
+++ b/lib/dns/rdata/generic/ta_32768.c
@@ -90,14 +90,6 @@ tostruct_ta(ARGS_TOSTRUCT) {
 	return generic_tostruct_ds(CALL_TOSTRUCT);
 }

-static void
-freestruct_ta(ARGS_FREESTRUCT) {
-	dns_rdata_ta_t *ds = source;
-
-	REQUIRE(ds != NULL);
-	REQUIRE(ds->common.rdtype == dns_rdatatype_ta);
-}
-
 static isc_result_t
 additionaldata_ta(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_ta);
diff --git a/lib/dns/rdata/generic/talink_58.c b/lib/dns/rdata/generic/talink_58.c
index 1ab80f4f49..c1f395210b 100644
--- a/lib/dns/rdata/generic/talink_58.c
+++ b/lib/dns/rdata/generic/talink_58.c
@@ -184,14 +184,6 @@ tostruct_talink(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_talink(ARGS_FREESTRUCT) {
-	dns_rdata_talink_t *talink = source;
-
-	REQUIRE(talink != NULL);
-	REQUIRE(talink->common.rdtype == dns_rdatatype_talink);
-}
-
 static isc_result_t
 additionaldata_talink(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_talink);
diff --git a/lib/dns/rdata/generic/tkey_249.c b/lib/dns/rdata/generic/tkey_249.c
index 142604cc07..dbc7c68c29 100644
--- a/lib/dns/rdata/generic/tkey_249.c
+++ b/lib/dns/rdata/generic/tkey_249.c
@@ -487,13 +487,6 @@ tostruct_tkey(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_tkey(ARGS_FREESTRUCT) {
-	dns_rdata_tkey_t *tkey = (dns_rdata_tkey_t *)source;
-
-	REQUIRE(tkey != NULL);
-}
-
 static isc_result_t
 additionaldata_tkey(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_tkey);
diff --git a/lib/dns/rdata/generic/tlsa_52.c b/lib/dns/rdata/generic/tlsa_52.c
index 0931156547..e6644e9009 100644
--- a/lib/dns/rdata/generic/tlsa_52.c
+++ b/lib/dns/rdata/generic/tlsa_52.c
@@ -232,13 +232,6 @@ generic_tostruct_tlsa(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-generic_freestruct_tlsa(ARGS_FREESTRUCT) {
-	dns_rdata_tlsa_t *tlsa = source;
-
-	REQUIRE(tlsa != NULL);
-}
-
 static isc_result_t
 fromstruct_tlsa(ARGS_FROMSTRUCT) {
 	REQUIRE(type == dns_rdatatype_tlsa);
@@ -258,16 +251,6 @@ tostruct_tlsa(ARGS_TOSTRUCT) {
 	return generic_tostruct_tlsa(CALL_TOSTRUCT);
 }

-static void
-freestruct_tlsa(ARGS_FREESTRUCT) {
-	dns_rdata_tlsa_t *tlsa = source;
-
-	REQUIRE(tlsa != NULL);
-	REQUIRE(tlsa->common.rdtype == dns_rdatatype_tlsa);
-
-	generic_freestruct_tlsa(source);
-}
-
 static isc_result_t
 additionaldata_tlsa(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_tlsa);
diff --git a/lib/dns/rdata/generic/txt_16.c b/lib/dns/rdata/generic/txt_16.c
index 8584eaac28..622db8beb4 100644
--- a/lib/dns/rdata/generic/txt_16.c
+++ b/lib/dns/rdata/generic/txt_16.c
@@ -170,13 +170,6 @@ generic_tostruct_txt(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-generic_freestruct_txt(ARGS_FREESTRUCT) {
-	dns_rdata_txt_t *txt = source;
-
-	REQUIRE(txt != NULL);
-}
-
 static isc_result_t
 fromstruct_txt(ARGS_FROMSTRUCT) {
 	REQUIRE(type == dns_rdatatype_txt);
@@ -196,16 +189,6 @@ tostruct_txt(ARGS_TOSTRUCT) {
 	return generic_tostruct_txt(CALL_TOSTRUCT);
 }

-static void
-freestruct_txt(ARGS_FREESTRUCT) {
-	dns_rdata_txt_t *txt = source;
-
-	REQUIRE(txt != NULL);
-	REQUIRE(txt->common.rdtype == dns_rdatatype_txt);
-
-	generic_freestruct_txt(source);
-}
-
 static isc_result_t
 additionaldata_txt(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_txt);
diff --git a/lib/dns/rdata/generic/uri_256.c b/lib/dns/rdata/generic/uri_256.c
index f586f8f1e8..659c68bfe7 100644
--- a/lib/dns/rdata/generic/uri_256.c
+++ b/lib/dns/rdata/generic/uri_256.c
@@ -232,14 +232,6 @@ tostruct_uri(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_uri(ARGS_FREESTRUCT) {
-	dns_rdata_uri_t *uri = (dns_rdata_uri_t *)source;
-
-	REQUIRE(uri != NULL);
-	REQUIRE(uri->common.rdtype == dns_rdatatype_uri);
-}
-
 static isc_result_t
 additionaldata_uri(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_uri);
diff --git a/lib/dns/rdata/generic/wallet_262.c b/lib/dns/rdata/generic/wallet_262.c
index 0cab8ee3b1..c0ad0ab6ae 100644
--- a/lib/dns/rdata/generic/wallet_262.c
+++ b/lib/dns/rdata/generic/wallet_262.c
@@ -80,16 +80,6 @@ tostruct_wallet(ARGS_TOSTRUCT) {
 	return generic_tostruct_txt(CALL_TOSTRUCT);
 }

-static void
-freestruct_wallet(ARGS_FREESTRUCT) {
-	dns_rdata_wallet_t *wallet = source;
-
-	REQUIRE(wallet != NULL);
-	REQUIRE(wallet->common.rdtype == dns_rdatatype_wallet);
-
-	generic_freestruct_txt(source);
-}
-
 static isc_result_t
 additionaldata_wallet(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_wallet);
diff --git a/lib/dns/rdata/generic/x25_19.c b/lib/dns/rdata/generic/x25_19.c
index 631a26de3a..3d77d77b78 100644
--- a/lib/dns/rdata/generic/x25_19.c
+++ b/lib/dns/rdata/generic/x25_19.c
@@ -154,14 +154,6 @@ tostruct_x25(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_x25(ARGS_FREESTRUCT) {
-	dns_rdata_x25_t *x25 = source;
-
-	REQUIRE(x25 != NULL);
-	REQUIRE(x25->common.rdtype == dns_rdatatype_x25);
-}
-
 static isc_result_t
 additionaldata_x25(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_x25);
diff --git a/lib/dns/rdata/generic/zonemd_63.c b/lib/dns/rdata/generic/zonemd_63.c
index b3e5550e16..f8703ffcc3 100644
--- a/lib/dns/rdata/generic/zonemd_63.c
+++ b/lib/dns/rdata/generic/zonemd_63.c
@@ -272,14 +272,6 @@ tostruct_zonemd(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_zonemd(ARGS_FREESTRUCT) {
-	dns_rdata_zonemd_t *zonemd = source;
-
-	REQUIRE(zonemd != NULL);
-	REQUIRE(zonemd->common.rdtype == dns_rdatatype_zonemd);
-}
-
 static isc_result_t
 additionaldata_zonemd(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_zonemd);
diff --git a/lib/dns/rdata/hs_4/a_1.c b/lib/dns/rdata/hs_4/a_1.c
index c20ea41d70..6cd60eb75f 100644
--- a/lib/dns/rdata/hs_4/a_1.c
+++ b/lib/dns/rdata/hs_4/a_1.c
@@ -165,13 +165,6 @@ tostruct_hs_a(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_hs_a(ARGS_FREESTRUCT) {
-	UNUSED(source);
-
-	REQUIRE(source != NULL);
-}
-
 static isc_result_t
 additionaldata_hs_a(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_a);
diff --git a/lib/dns/rdata/in_1/a6_38.c b/lib/dns/rdata/in_1/a6_38.c
index 69e7bc178f..05a9e7eba2 100644
--- a/lib/dns/rdata/in_1/a6_38.c
+++ b/lib/dns/rdata/in_1/a6_38.c
@@ -379,15 +379,6 @@ tostruct_in_a6(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_a6(ARGS_FREESTRUCT) {
-	dns_rdata_in_a6_t *a6 = source;
-
-	REQUIRE(a6 != NULL);
-	REQUIRE(a6->common.rdclass == dns_rdataclass_in);
-	REQUIRE(a6->common.rdtype == dns_rdatatype_a6);
-}
-
 static isc_result_t
 additionaldata_in_a6(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_a6);
diff --git a/lib/dns/rdata/in_1/a_1.c b/lib/dns/rdata/in_1/a_1.c
index 280063586c..4faa025cae 100644
--- a/lib/dns/rdata/in_1/a_1.c
+++ b/lib/dns/rdata/in_1/a_1.c
@@ -166,17 +166,6 @@ tostruct_in_a(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_a(ARGS_FREESTRUCT) {
-	dns_rdata_in_a_t *a = source;
-
-	REQUIRE(a != NULL);
-	REQUIRE(a->common.rdtype == dns_rdatatype_a);
-	REQUIRE(a->common.rdclass == dns_rdataclass_in);
-
-	UNUSED(a);
-}
-
 static isc_result_t
 additionaldata_in_a(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_a);
diff --git a/lib/dns/rdata/in_1/aaaa_28.c b/lib/dns/rdata/in_1/aaaa_28.c
index f2794a7c68..e40fb31fe2 100644
--- a/lib/dns/rdata/in_1/aaaa_28.c
+++ b/lib/dns/rdata/in_1/aaaa_28.c
@@ -178,17 +178,6 @@ tostruct_in_aaaa(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_aaaa(ARGS_FREESTRUCT) {
-	dns_rdata_in_aaaa_t *aaaa = source;
-
-	REQUIRE(aaaa != NULL);
-	REQUIRE(aaaa->common.rdclass == dns_rdataclass_in);
-	REQUIRE(aaaa->common.rdtype == dns_rdatatype_aaaa);
-
-	UNUSED(aaaa);
-}
-
 static isc_result_t
 additionaldata_in_aaaa(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_aaaa);
diff --git a/lib/dns/rdata/in_1/apl_42.c b/lib/dns/rdata/in_1/apl_42.c
index 7d414965b5..a621dc71a2 100644
--- a/lib/dns/rdata/in_1/apl_42.c
+++ b/lib/dns/rdata/in_1/apl_42.c
@@ -297,15 +297,6 @@ tostruct_in_apl(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_apl(ARGS_FREESTRUCT) {
-	dns_rdata_in_apl_t *apl = source;
-
-	REQUIRE(apl != NULL);
-	REQUIRE(apl->common.rdtype == dns_rdatatype_apl);
-	REQUIRE(apl->common.rdclass == dns_rdataclass_in);
-}
-
 isc_result_t
 dns_rdata_apl_first(dns_rdata_in_apl_t *apl) {
 	uint32_t length;
diff --git a/lib/dns/rdata/in_1/atma_34.c b/lib/dns/rdata/in_1/atma_34.c
index c5315678c3..b7fc31da38 100644
--- a/lib/dns/rdata/in_1/atma_34.c
+++ b/lib/dns/rdata/in_1/atma_34.c
@@ -234,15 +234,6 @@ tostruct_in_atma(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_atma(ARGS_FREESTRUCT) {
-	dns_rdata_in_atma_t *atma = source;
-
-	REQUIRE(atma != NULL);
-	REQUIRE(atma->common.rdclass == dns_rdataclass_in);
-	REQUIRE(atma->common.rdtype == dns_rdatatype_atma);
-}
-
 static isc_result_t
 additionaldata_in_atma(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_atma);
diff --git a/lib/dns/rdata/in_1/dhcid_49.c b/lib/dns/rdata/in_1/dhcid_49.c
index f047e54b27..e58742d0f9 100644
--- a/lib/dns/rdata/in_1/dhcid_49.c
+++ b/lib/dns/rdata/in_1/dhcid_49.c
@@ -152,15 +152,6 @@ tostruct_in_dhcid(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_dhcid(ARGS_FREESTRUCT) {
-	dns_rdata_in_dhcid_t *dhcid = source;
-
-	REQUIRE(dhcid != NULL);
-	REQUIRE(dhcid->common.rdtype == dns_rdatatype_dhcid);
-	REQUIRE(dhcid->common.rdclass == dns_rdataclass_in);
-}
-
 static isc_result_t
 additionaldata_in_dhcid(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_dhcid);
diff --git a/lib/dns/rdata/in_1/eid_31.c b/lib/dns/rdata/in_1/eid_31.c
index 42370ecb93..aeb5fc9f72 100644
--- a/lib/dns/rdata/in_1/eid_31.c
+++ b/lib/dns/rdata/in_1/eid_31.c
@@ -141,15 +141,6 @@ tostruct_in_eid(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_eid(ARGS_FREESTRUCT) {
-	dns_rdata_in_eid_t *eid = source;
-
-	REQUIRE(eid != NULL);
-	REQUIRE(eid->common.rdclass == dns_rdataclass_in);
-	REQUIRE(eid->common.rdtype == dns_rdatatype_eid);
-}
-
 static isc_result_t
 additionaldata_in_eid(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_eid);
diff --git a/lib/dns/rdata/in_1/https_65.c b/lib/dns/rdata/in_1/https_65.c
index b04c1cddb2..2bb979c1eb 100644
--- a/lib/dns/rdata/in_1/https_65.c
+++ b/lib/dns/rdata/in_1/https_65.c
@@ -98,17 +98,6 @@ tostruct_in_https(ARGS_TOSTRUCT) {
 	return generic_tostruct_in_svcb(CALL_TOSTRUCT);
 }

-static void
-freestruct_in_https(ARGS_FREESTRUCT) {
-	dns_rdata_in_https_t *https = source;
-
-	REQUIRE(https != NULL);
-	REQUIRE(https->common.rdclass == dns_rdataclass_in);
-	REQUIRE(https->common.rdtype == dns_rdatatype_https);
-
-	generic_freestruct_in_svcb(CALL_FREESTRUCT);
-}
-
 static isc_result_t
 additionaldata_in_https(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_https);
diff --git a/lib/dns/rdata/in_1/kx_36.c b/lib/dns/rdata/in_1/kx_36.c
index 639028d2cd..330e7514b3 100644
--- a/lib/dns/rdata/in_1/kx_36.c
+++ b/lib/dns/rdata/in_1/kx_36.c
@@ -200,15 +200,6 @@ tostruct_in_kx(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_kx(ARGS_FREESTRUCT) {
-	dns_rdata_in_kx_t *kx = source;
-
-	REQUIRE(kx != NULL);
-	REQUIRE(kx->common.rdclass == dns_rdataclass_in);
-	REQUIRE(kx->common.rdtype == dns_rdatatype_kx);
-}
-
 static isc_result_t
 additionaldata_in_kx(ARGS_ADDLDATA) {
 	dns_name_t name;
diff --git a/lib/dns/rdata/in_1/nimloc_32.c b/lib/dns/rdata/in_1/nimloc_32.c
index ed45d387df..59f8269d25 100644
--- a/lib/dns/rdata/in_1/nimloc_32.c
+++ b/lib/dns/rdata/in_1/nimloc_32.c
@@ -141,15 +141,6 @@ tostruct_in_nimloc(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_nimloc(ARGS_FREESTRUCT) {
-	dns_rdata_in_nimloc_t *nimloc = source;
-
-	REQUIRE(nimloc != NULL);
-	REQUIRE(nimloc->common.rdclass == dns_rdataclass_in);
-	REQUIRE(nimloc->common.rdtype == dns_rdatatype_nimloc);
-}
-
 static isc_result_t
 additionaldata_in_nimloc(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_nimloc);
diff --git a/lib/dns/rdata/in_1/nsap-ptr_23.c b/lib/dns/rdata/in_1/nsap-ptr_23.c
index eda4f6e44c..345ad06516 100644
--- a/lib/dns/rdata/in_1/nsap-ptr_23.c
+++ b/lib/dns/rdata/in_1/nsap-ptr_23.c
@@ -161,15 +161,6 @@ tostruct_in_nsap_ptr(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_nsap_ptr(ARGS_FREESTRUCT) {
-	dns_rdata_in_nsap_ptr_t *nsap_ptr = source;
-
-	REQUIRE(nsap_ptr != NULL);
-	REQUIRE(nsap_ptr->common.rdclass == dns_rdataclass_in);
-	REQUIRE(nsap_ptr->common.rdtype == dns_rdatatype_nsap_ptr);
-}
-
 static isc_result_t
 additionaldata_in_nsap_ptr(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_nsap_ptr);
diff --git a/lib/dns/rdata/in_1/nsap_22.c b/lib/dns/rdata/in_1/nsap_22.c
index 92d69a84f8..c3ef48481d 100644
--- a/lib/dns/rdata/in_1/nsap_22.c
+++ b/lib/dns/rdata/in_1/nsap_22.c
@@ -176,15 +176,6 @@ tostruct_in_nsap(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_nsap(ARGS_FREESTRUCT) {
-	dns_rdata_in_nsap_t *nsap = source;
-
-	REQUIRE(nsap != NULL);
-	REQUIRE(nsap->common.rdclass == dns_rdataclass_in);
-	REQUIRE(nsap->common.rdtype == dns_rdatatype_nsap);
-}
-
 static isc_result_t
 additionaldata_in_nsap(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_nsap);
diff --git a/lib/dns/rdata/in_1/px_26.c b/lib/dns/rdata/in_1/px_26.c
index 6837409b2f..d563645989 100644
--- a/lib/dns/rdata/in_1/px_26.c
+++ b/lib/dns/rdata/in_1/px_26.c
@@ -278,15 +278,6 @@ tostruct_in_px(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_px(ARGS_FREESTRUCT) {
-	dns_rdata_in_px_t *px = source;
-
-	REQUIRE(px != NULL);
-	REQUIRE(px->common.rdclass == dns_rdataclass_in);
-	REQUIRE(px->common.rdtype == dns_rdatatype_px);
-}
-
 static isc_result_t
 additionaldata_in_px(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_px);
diff --git a/lib/dns/rdata/in_1/srv_33.c b/lib/dns/rdata/in_1/srv_33.c
index 4c3e5d7f87..95be2bd19d 100644
--- a/lib/dns/rdata/in_1/srv_33.c
+++ b/lib/dns/rdata/in_1/srv_33.c
@@ -290,15 +290,6 @@ tostruct_in_srv(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_srv(ARGS_FREESTRUCT) {
-	dns_rdata_in_srv_t *srv = source;
-
-	REQUIRE(srv != NULL);
-	REQUIRE(srv->common.rdclass == dns_rdataclass_in);
-	REQUIRE(srv->common.rdtype == dns_rdatatype_srv);
-}
-
 static isc_result_t
 additionaldata_in_srv(ARGS_ADDLDATA) {
 	char buf[sizeof("_65000._tcp")];
diff --git a/lib/dns/rdata/in_1/svcb_64.c b/lib/dns/rdata/in_1/svcb_64.c
index 09cc620da1..632ebcf973 100644
--- a/lib/dns/rdata/in_1/svcb_64.c
+++ b/lib/dns/rdata/in_1/svcb_64.c
@@ -1075,24 +1075,6 @@ tostruct_in_svcb(ARGS_TOSTRUCT) {
 	return generic_tostruct_in_svcb(CALL_TOSTRUCT);
 }

-static void
-generic_freestruct_in_svcb(ARGS_FREESTRUCT) {
-	dns_rdata_in_svcb_t *svcb = source;
-
-	REQUIRE(svcb != NULL);
-}
-
-static void
-freestruct_in_svcb(ARGS_FREESTRUCT) {
-	dns_rdata_in_svcb_t *svcb = source;
-
-	REQUIRE(svcb != NULL);
-	REQUIRE(svcb->common.rdclass == dns_rdataclass_in);
-	REQUIRE(svcb->common.rdtype == dns_rdatatype_svcb);
-
-	generic_freestruct_in_svcb(CALL_FREESTRUCT);
-}
-
 static isc_result_t
 generic_additionaldata_in_svcb(ARGS_ADDLDATA) {
 	bool alias, done = false;
diff --git a/lib/dns/rdata/in_1/wks_11.c b/lib/dns/rdata/in_1/wks_11.c
index 55b2d4b71b..b53583e1f8 100644
--- a/lib/dns/rdata/in_1/wks_11.c
+++ b/lib/dns/rdata/in_1/wks_11.c
@@ -318,15 +318,6 @@ tostruct_in_wks(ARGS_TOSTRUCT) {
 	return ISC_R_SUCCESS;
 }

-static void
-freestruct_in_wks(ARGS_FREESTRUCT) {
-	dns_rdata_in_wks_t *wks = source;
-
-	REQUIRE(wks != NULL);
-	REQUIRE(wks->common.rdtype == dns_rdatatype_wks);
-	REQUIRE(wks->common.rdclass == dns_rdataclass_in);
-}
-
 static isc_result_t
 additionaldata_in_wks(ARGS_ADDLDATA) {
 	REQUIRE(rdata->type == dns_rdatatype_wks);
diff --git a/lib/dns/tsig.c b/lib/dns/tsig.c
index efd6fb7d95..2ab8e4a521 100644
--- a/lib/dns/tsig.c
+++ b/lib/dns/tsig.c
@@ -1514,8 +1514,6 @@ cleanup_context:
 	}

 cleanup_querystruct:
-	dns_rdata_freestruct(&querytsig);
-
 	return result;
 }

diff --git a/lib/dns/validator.c b/lib/dns/validator.c
index 9936f0637b..5f92d40d6c 100644
--- a/lib/dns/validator.c
+++ b/lib/dns/validator.c
@@ -2976,7 +2976,6 @@ valid_nsec_signer(dns_validator_t *val, dns_name_t *name,
 		CHECK(dns_rdata_tostruct(&rdata, &sig));

 		bool equal = dns_name_equal(zonename, &sig.signer);
-		dns_rdata_freestruct(&sig);
 		if (!equal) {
 			validator_log(val, ISC_LOG_DEBUG(3),
 				      "ignoring NSEC wildcard proof from a "