From e0af62deac684fd2cd8ca570de0c406c1e34f13a Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Tue, 13 Feb 2024 11:42:44 +1100 Subject: [PATCH] Add helper function isc_sockaddr_disabled (cherry picked from commit 9be1873ef37a4f20e01dc2ad1e64112b7104d942) --- lib/isc/include/isc/sockaddr.h | 7 +++++++ lib/isc/sockaddr.c | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/isc/include/isc/sockaddr.h b/lib/isc/include/isc/sockaddr.h index 9f3986b01f..97349a3343 100644 --- a/lib/isc/include/isc/sockaddr.h +++ b/lib/isc/include/isc/sockaddr.h @@ -245,4 +245,11 @@ isc_sockaddr_fromsockaddr(isc_sockaddr_t *isa, const struct sockaddr *sa); * Minimum size of array to pass to isc_sockaddr_format(). */ +bool +isc_sockaddr_disabled(const isc_sockaddr_t *sockaddr); +/*%< + * Report whether or not the address family of 'sockaddr' + * has been disabled. + */ + ISC_LANG_ENDDECLS diff --git a/lib/isc/sockaddr.c b/lib/isc/sockaddr.c index 038e3ec7c4..cf3e7612a9 100644 --- a/lib/isc/sockaddr.c +++ b/lib/isc/sockaddr.c @@ -497,3 +497,15 @@ isc_sockaddr_fromsockaddr(isc_sockaddr_t *isa, const struct sockaddr *sa) { return (ISC_R_SUCCESS); } + +bool +isc_sockaddr_disabled(const isc_sockaddr_t *sockaddr) { + if ((sockaddr->type.sa.sa_family == AF_INET && + isc_net_probeipv4() == ISC_R_DISABLED) || + (sockaddr->type.sa.sa_family == AF_INET6 && + isc_net_probeipv6() == ISC_R_DISABLED)) + { + return (true); + } + return (false); +}