From: Mark Andrews Date: Wed, 29 Nov 2023 01:35:20 +0000 (+1100) Subject: Report non-effective primaries X-Git-Tag: v9.20.0~16^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2cd43032498752d2ab4527475ba21beee133b30b;p=thirdparty%2Fbind9.git Report non-effective primaries When named is started with -4 or -6 and the primaries for a zone do not have an IPv4 or IPv6 address respectively issue a log message. --- diff --git a/lib/dns/zone.c b/lib/dns/zone.c index a28cd78a432..8aaeec0cc6d 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -5910,6 +5910,32 @@ unlock: UNLOCK_ZONE(zone); } +static bool +has_pf(isc_sockaddr_t *addresses, size_t count, int pf) { + for (size_t i = 0; i < count; i++) { + if (isc_sockaddr_pf(&addresses[i]) == pf) { + return (true); + } + } + return (false); +} + +static void +report_no_active_addresses(dns_zone_t *zone, isc_sockaddr_t *addresses, + size_t count, const char *what) { + if (isc_net_probeipv4() == ISC_R_DISABLED) { + if (!has_pf(addresses, count, AF_INET6)) { + dns_zone_log(zone, ISC_LOG_NOTICE, + "IPv4 disabled and no IPv6 %s", what); + } + } else if (isc_net_probeipv6() == ISC_R_DISABLED) { + if (!has_pf(addresses, count, AF_INET)) { + dns_zone_log(zone, ISC_LOG_NOTICE, + "IPv6 disabled and no IPv4 %s", what); + } + } +} + void dns_zone_setprimaries(dns_zone_t *zone, isc_sockaddr_t *addresses, isc_sockaddr_t *sources, dns_name_t **keynames, @@ -5950,6 +5976,8 @@ dns_zone_setprimaries(dns_zone_t *zone, isc_sockaddr_t *addresses, goto unlock; } + report_no_active_addresses(zone, addresses, count, "primaries"); + /* * Now set up the primaries and primary key lists. */