]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add ISC_LIST support for isc_netaddr_t
authorColin Vidal <colin@isc.org>
Tue, 20 Jan 2026 14:05:58 +0000 (15:05 +0100)
committerColin Vidal <colin@isc.org>
Mon, 30 Mar 2026 18:41:13 +0000 (20:41 +0200)
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
lib/isc/include/isc/types.h

index 2aa229d218fe36d388cbf544c1c1e2137346bd26..22e5dc4765bf31e6de5f2af9e790094475f89353 100644 (file)
@@ -20,6 +20,7 @@
 #include <sys/types.h>
 #include <sys/un.h>
 
+#include <isc/list.h>
 #include <isc/net.h>
 #include <isc/types.h>
 
@@ -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;
index 74ba9ff946d25f65c65d46dc4ea5324c4a5ebb41..1a5b9d86ac25049f88b3cab77db6a0a68281ec7a 100644 (file)
@@ -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 */