From: Matthijs Mekking Date: Thu, 19 Mar 2026 16:58:30 +0000 (+0100) Subject: Move three more functions to zoneproperties.c X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a320801042a030edf9aaa67936a3f91d20871b2b;p=thirdparty%2Fbind9.git Move three more functions to zoneproperties.c Move the following functions to the zoneproperties source files, as they are simple get functions: - dns_zone_getgluecachestats - dns_zone_getkeystores - dns_zone_getrequesttransporttype --- diff --git a/lib/dns/include/dns/zone.h b/lib/dns/include/dns/zone.h index 31ec62871fb..ecb1bee6682 100644 --- a/lib/dns/include/dns/zone.h +++ b/lib/dns/include/dns/zone.h @@ -502,18 +502,6 @@ dns_zone_replacedb(dns_zone_t *zone, dns_db_t *db, bool dump); * Others */ -dns_transport_type_t -dns_zone_getrequesttransporttype(dns_zone_t *zone); -/*%< - * Get the transport type used for the SOA query to the current primary server - * before an ongoing incoming zone transfer is lanunched. When the transfer is - * already running, this information should be retrieved from the xfrin object - * instead, using the dns_xfrin_gettransporttype() function. - * - * Requires: - * \li 'zone' to be a valid zone. - */ - isc_result_t dns_zone_forwardupdate(dns_zone_t *zone, dns_message_t *msg, dns_updatecallback_t callback, void *callback_arg); @@ -939,19 +927,6 @@ dns_zone_setserial(dns_zone_t *zone, uint32_t serial); * Set the zone's serial to 'serial'. */ -isc_stats_t * -dns_zone_getgluecachestats(dns_zone_t *zone); -/*%< - * Get the glue cache statistics for zone. - * - * Requires: - * \li 'zone' to be a valid zone. - * - * Returns: - * \li if present, a pointer to the statistics set installed in zone; - * otherwise NULL. - */ - bool dns_zone_isloaded(dns_zone_t *zone); /*%< @@ -1044,13 +1019,6 @@ dns_zonemgr_setkeystores(dns_zonemgr_t *zmgr, dns_keystorelist_t *keystores); * \li 'keystores' to be a valid. */ -dns_keystorelist_t * -dns_zone_getkeystores(dns_zone_t *zone); -/**< - * Get the keystores pointer, it should never be NULL once the server is - * initialized. - */ - void dns_zone_setplugins(dns_zone_t *zone, void *plugins, void (*plugins_free)(isc_mem_t *, void **)); diff --git a/lib/dns/include/dns/zoneproperties.h b/lib/dns/include/dns/zoneproperties.h index a4924532713..ed7a8b18818 100644 --- a/lib/dns/include/dns/zoneproperties.h +++ b/lib/dns/include/dns/zoneproperties.h @@ -1525,3 +1525,35 @@ dns_zone_getcfg(dns_zone_t *zone); * Requires: * \li 'zone' to be a valid zone. */ + +dns_transport_type_t +dns_zone_getrequesttransporttype(dns_zone_t *zone); +/*%< + * Get the transport type used for the SOA query to the current primary server + * before an ongoing incoming zone transfer is lanunched. When the transfer is + * already running, this information should be retrieved from the xfrin object + * instead, using the dns_xfrin_gettransporttype() function. + * + * Requires: + * \li 'zone' to be a valid zone. + */ + +isc_stats_t * +dns_zone_getgluecachestats(dns_zone_t *zone); +/*%< + * Get the glue cache statistics for zone. + * + * Requires: + * \li 'zone' to be a valid zone. + * + * Returns: + * \li if present, a pointer to the statistics set installed in zone; + * otherwise NULL. + */ + +dns_keystorelist_t * +dns_zone_getkeystores(dns_zone_t *zone); +/**< + * Get the keystores pointer, it should never be NULL once the server is + * initialized. + */ diff --git a/lib/dns/zone.c b/lib/dns/zone.c index ae4d77d09ca..ce04932ebc3 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -15677,63 +15677,6 @@ queue_xfrin(dns_zone_t *zone) { } } -/* - * Get the transport type used for the SOA query to the current primary server - * before an ongoing incoming zone transfer. - * - * Requires: - * The zone is locked by the caller. - */ -static dns_transport_type_t -get_request_transport_type(dns_zone_t *zone) { - dns_transport_type_t transport_type = DNS_TRANSPORT_NONE; - - if (zone->transport != NULL) { - transport_type = dns_transport_get_type(zone->transport); - } else { - transport_type = (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_USEVC)) - ? DNS_TRANSPORT_TCP - : DNS_TRANSPORT_UDP; - - /* Check if the peer is forced to always use TCP. */ - if (transport_type != DNS_TRANSPORT_TCP && - !dns_remote_done(&zone->primaries)) - { - isc_result_t result; - isc_sockaddr_t primaryaddr; - isc_netaddr_t primaryip; - dns_peer_t *peer = NULL; - - primaryaddr = dns_remote_curraddr(&zone->primaries); - isc_netaddr_fromsockaddr(&primaryip, &primaryaddr); - result = dns_peerlist_peerbyaddr(zone->view->peers, - &primaryip, &peer); - if (result == ISC_R_SUCCESS && peer != NULL) { - bool usetcp; - result = dns_peer_getforcetcp(peer, &usetcp); - if (result == ISC_R_SUCCESS && usetcp) { - transport_type = DNS_TRANSPORT_TCP; - } - } - } - } - - return transport_type; -} - -dns_transport_type_t -dns_zone_getrequesttransporttype(dns_zone_t *zone) { - dns_transport_type_t transport_type; - - REQUIRE(DNS_ZONE_VALID(zone)); - - LOCK_ZONE(zone); - transport_type = get_request_transport_type(zone); - UNLOCK_ZONE(zone); - - return transport_type; -} - /* * Update forwarding support. */ @@ -16099,11 +16042,6 @@ cleanup: isc_mem_put(zone->mctx, buf, buflen); } -dns_keystorelist_t * -dns_zone_getkeystores(dns_zone_t *zone) { - return zone->zmgr->keystores; -} - void dns_zone_stopxfr(dns_zone_t *zone) { dns_xfrin_t *xfr = NULL; @@ -20634,13 +20572,6 @@ cleanup: return result; } -isc_stats_t * -dns_zone_getgluecachestats(dns_zone_t *zone) { - REQUIRE(DNS_ZONE_VALID(zone)); - - return zone->gluecachestats; -} - bool dns_zone_isloaded(dns_zone_t *zone) { REQUIRE(DNS_ZONE_VALID(zone)); diff --git a/lib/dns/zoneproperties.c b/lib/dns/zoneproperties.c index fc323068f85..06c0c57c271 100644 --- a/lib/dns/zoneproperties.c +++ b/lib/dns/zoneproperties.c @@ -17,6 +17,7 @@ #include /* WMM: remove include */ #include +#include #include #include #include @@ -2048,3 +2049,72 @@ dns_zone_getcfg(dns_zone_t *zone) { return zone->cfg; } + +/* + * Get the transport type used for the SOA query to the current primary server + * before an ongoing incoming zone transfer. + * + * Requires: + * The zone is locked by the caller. + */ +static dns_transport_type_t +get_request_transport_type(dns_zone_t *zone) { + dns_transport_type_t transport_type = DNS_TRANSPORT_NONE; + + if (zone->transport != NULL) { + transport_type = dns_transport_get_type(zone->transport); + } else { + transport_type = (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_USEVC)) + ? DNS_TRANSPORT_TCP + : DNS_TRANSPORT_UDP; + + /* Check if the peer is forced to always use TCP. */ + if (transport_type != DNS_TRANSPORT_TCP && + !dns_remote_done(&zone->primaries)) + { + isc_result_t result; + isc_sockaddr_t primaryaddr; + isc_netaddr_t primaryip; + dns_peer_t *peer = NULL; + + primaryaddr = dns_remote_curraddr(&zone->primaries); + isc_netaddr_fromsockaddr(&primaryip, &primaryaddr); + result = dns_peerlist_peerbyaddr(zone->view->peers, + &primaryip, &peer); + if (result == ISC_R_SUCCESS && peer != NULL) { + bool usetcp; + result = dns_peer_getforcetcp(peer, &usetcp); + if (result == ISC_R_SUCCESS && usetcp) { + transport_type = DNS_TRANSPORT_TCP; + } + } + } + } + + return transport_type; +} + +dns_transport_type_t +dns_zone_getrequesttransporttype(dns_zone_t *zone) { + dns_transport_type_t transport_type; + + REQUIRE(DNS_ZONE_VALID(zone)); + + LOCK_ZONE(zone); + transport_type = get_request_transport_type(zone); + UNLOCK_ZONE(zone); + + return transport_type; +} + +dns_keystorelist_t * +dns_zone_getkeystores(dns_zone_t *zone) { + return zone->zmgr->keystores; +} + +isc_stats_t * +dns_zone_getgluecachestats(dns_zone_t *zone) { + REQUIRE(DNS_ZONE_VALID(zone)); + + return zone->gluecachestats; +}