From: Colin Vidal Date: Tue, 20 Jan 2026 14:05:58 +0000 (+0100) Subject: Add ISC_LIST support for isc_netaddr_t X-Git-Tag: v9.21.21~4^2~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b4abc63dfaa9d0e4066652e6fc7715b60ba9b216;p=thirdparty%2Fbind9.git Add ISC_LIST support for isc_netaddr_t Add an `isc_netaddrlink_t` type wrapping an `isc_netaddr_t` and an `ISC_LINK`. This enable to build list of `isc_netaddr_t` without increasing the memory footprint of existing usages of `isc_netaddr_t` (which doesn't require to be linked). --- diff --git a/lib/isc/include/isc/netaddr.h b/lib/isc/include/isc/netaddr.h index 2aa229d218f..22e5dc4765b 100644 --- a/lib/isc/include/isc/netaddr.h +++ b/lib/isc/include/isc/netaddr.h @@ -20,6 +20,7 @@ #include #include +#include #include #include @@ -36,6 +37,11 @@ struct isc_netaddr { uint32_t zone; }; +struct isc_netaddrlink { + isc_netaddr_t addr; + ISC_LINK(isc_netaddrlink_t) link; +}; + struct isc_netprefix { isc_netaddr_t addr; unsigned int prefixlen; diff --git a/lib/isc/include/isc/types.h b/lib/isc/include/isc/types.h index 74ba9ff946d..1a5b9d86ac2 100644 --- a/lib/isc/include/isc/types.h +++ b/lib/isc/include/isc/types.h @@ -53,16 +53,18 @@ typedef struct isc_loop isc_loop_t; /*%< Event loop */ typedef struct isc_mem isc_mem_t; /*%< Memory */ typedef struct isc_mempool isc_mempool_t; /*%< Memory Pool */ typedef struct isc_netaddr isc_netaddr_t; /*%< Net Address */ -typedef struct isc_netprefix isc_netprefix_t; /*%< Net Prefix */ -typedef struct isc_nmsocket isc_nmsocket_t; /*%< Network manager socket */ -typedef struct isc_nmhandle isc_nmhandle_t; /*%< Network manager handle */ -typedef struct isc_portset isc_portset_t; /*%< Port Set */ -typedef struct isc_quota isc_quota_t; /*%< Quota */ -typedef struct isc_ratelimiter isc_ratelimiter_t; /*%< Rate Limiter */ -typedef struct isc_region isc_region_t; /*%< Region */ -typedef struct isc_rlevent isc_rlevent_t; /*%< Rate Limiter Event */ -typedef struct isc_signal isc_signal_t; /*%< Signal handler */ -typedef struct isc_sockaddr isc_sockaddr_t; /*%< Socket Address */ +typedef struct isc_netaddrlink isc_netaddrlink_t; /*%< Linkable Net Address */ +typedef ISC_LIST(isc_netaddrlink_t) isc_netaddrlist_t; /*%< Net Address List */ +typedef struct isc_netprefix isc_netprefix_t; /*%< Net Prefix */ +typedef struct isc_nmsocket isc_nmsocket_t; /*%< Network manager socket */ +typedef struct isc_nmhandle isc_nmhandle_t; /*%< Network manager handle */ +typedef struct isc_portset isc_portset_t; /*%< Port Set */ +typedef struct isc_quota isc_quota_t; /*%< Quota */ +typedef struct isc_ratelimiter isc_ratelimiter_t; /*%< Rate Limiter */ +typedef struct isc_region isc_region_t; /*%< Region */ +typedef struct isc_rlevent isc_rlevent_t; /*%< Rate Limiter Event */ +typedef struct isc_signal isc_signal_t; /*%< Signal handler */ +typedef struct isc_sockaddr isc_sockaddr_t; /*%< Socket Address */ typedef ISC_LIST(isc_sockaddr_t) isc_sockaddrlist_t; /*%< Socket Address List * */ typedef struct isc_stats isc_stats_t; /*%< Statistics */