From b4abc63dfaa9d0e4066652e6fc7715b60ba9b216 Mon Sep 17 00:00:00 2001 From: Colin Vidal Date: Tue, 20 Jan 2026 15:05:58 +0100 Subject: [PATCH] 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). --- lib/isc/include/isc/netaddr.h | 6 ++++++ lib/isc/include/isc/types.h | 22 ++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) 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 */ -- 2.47.3