summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-11-20 22:33:15 +0100
committerThomas Haller <thaller@redhat.com>2020-11-24 08:52:59 +0100
commit757443d0c5ee9ca878f7c68280dff38652d79f53 (patch)
treef17fd26de58c74ae4aba17ccb3ab57ab5d29ef51
parenta6456fe1f4b3dbeda0043bead5c8da4c1114015f (diff)
downloadNetworkManager-757443d0c5ee9ca878f7c68280dff38652d79f53.tar.gz
core: add nm_ip_config_iter_ip_address_for_each() macro
-rw-r--r--.clang-format2
-rw-r--r--src/nm-ip4-config.h30
2 files changed, 32 insertions, 0 deletions
diff --git a/.clang-format b/.clang-format
index 33a0c63993..13c9899c60 100644
--- a/.clang-format
+++ b/.clang-format
@@ -101,6 +101,8 @@ ForEachMacros: ['c_list_for_each',
'nm_ip_config_iter_ip4_route_for_each',
'nm_ip_config_iter_ip6_address_for_each',
'nm_ip_config_iter_ip6_route_for_each',
+ 'nm_ip_config_iter_ip_address_for_each',
+ 'nm_ip_config_iter_ip_route_for_each',
'nm_json_array_foreach',
'nm_json_object_foreach',
'nm_l3_config_data_iter_ip4_address_for_each',
diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h
index e1f231e527..36f8b5dd8d 100644
--- a/src/nm-ip4-config.h
+++ b/src/nm-ip4-config.h
@@ -376,6 +376,36 @@ nm_ip_config_get_first_address(NMIPConfig *self)
}
static inline void
+nm_ip_config_iter_ip_address_init(NMDedupMultiIter *iter, const NMIPConfig *self)
+{
+ if (NM_IS_IP4_CONFIG(self))
+ nm_ip_config_iter_ip4_address_init(iter, (const NMIP4Config *) self);
+ else {
+ nm_assert(NM_IS_IP6_CONFIG(self));
+ nm_ip_config_iter_ip6_address_init(iter, (const NMIP6Config *) self);
+ }
+}
+
+#define nm_ip_config_iter_ip_address_for_each(iter, self, address) \
+ for (nm_ip_config_iter_ip_address_init((iter), (self)); \
+ nm_platform_dedup_multi_iter_next_ip_address((iter), (address));)
+
+static inline void
+nm_ip_config_iter_ip_route_init(NMDedupMultiIter *iter, const NMIPConfig *self)
+{
+ if (NM_IS_IP4_CONFIG(self))
+ nm_ip_config_iter_ip4_route_init(iter, (const NMIP4Config *) self);
+ else {
+ nm_assert(NM_IS_IP6_CONFIG(self));
+ nm_ip_config_iter_ip6_route_init(iter, (const NMIP6Config *) self);
+ }
+}
+
+#define nm_ip_config_iter_ip_route_for_each(iter, self, route) \
+ for (nm_ip_config_iter_ip_route_init((iter), (self)); \
+ nm_platform_dedup_multi_iter_next_ip_route((iter), (route));)
+
+static inline void
nm_ip_config_add_address(NMIPConfig *self, const NMPlatformIPAddress *address)
{
_NM_IP_CONFIG_DISPATCH_VOID(self,