ip: move address related functions to types 22/43822/3
authorFlorin Coras <[email protected]>
Thu, 2 Oct 2025 06:23:08 +0000 (02:23 -0400)
committerDave Wallace <[email protected]>
Thu, 2 Oct 2025 18:08:23 +0000 (18:08 +0000)
Move functions that do basic operations on ip4/6/46 addresses from ip.h
to ip_types.h, to ease consumption / minimize dependencies, especially
on ip.h which pulls in the whole ip layer.

Type: refactor

Change-Id: I92be1010337c65bdb132b32880633d519cf56fc8
Signed-off-by: Florin Coras <[email protected]>
src/vnet/ip/ip.c
src/vnet/ip/ip.h
src/vnet/ip/ip_types.c
src/vnet/ip/ip_types.h
src/vnet/session/transport_types.h

index 586f7df..fa082e4 100644 (file)
@@ -32,38 +32,6 @@ ip_address_family_to_ether_type (ip_address_family_t af)
   return (ETHERNET_TYPE_IP4);
 }
 
-u8
-ip_is_zero (ip46_address_t * ip46_address, u8 is_ip4)
-{
-  if (is_ip4)
-    return (ip46_address->ip4.as_u32 == 0);
-  else
-    return (ip46_address->as_u64[0] == 0 && ip46_address->as_u64[1] == 0);
-}
-
-u8
-ip_is_local_host (ip46_address_t * ip46_address, u8 is_ip4)
-{
-  if (is_ip4)
-    return (ip46_address->ip4.as_u8[0] == 127);
-  else
-    return (ip46_address->as_u64[0] == 0 &&
-           clib_net_to_host_u64 (ip46_address->as_u64[1]) == 1);
-}
-
-u8
-ip4_is_local_host (ip4_address_t * ip4_address)
-{
-  return (ip4_address->as_u8[0] == 127);
-}
-
-u8
-ip6_is_local_host (ip6_address_t * ip6_address)
-{
-  return (ip6_address->as_u64[0] == 0 &&
-         clib_net_to_host_u64 (ip6_address->as_u64[1]) == 1);
-}
-
 /**
  * Checks that an ip is local to the requested fib
  */
@@ -93,31 +61,6 @@ ip_is_local (u32 fib_index, ip46_address_t * ip46_address, u8 is_ip4)
   return (flags & FIB_ENTRY_FLAG_LOCAL);
 }
 
-void
-ip_copy (ip46_address_t * dst, ip46_address_t * src, u8 is_ip4)
-{
-  if (is_ip4)
-    {
-      ip46_address_mask_ip4 (dst);
-      dst->ip4.as_u32 = src->ip4.as_u32;
-    }
-  else
-    clib_memcpy_fast (&dst->ip6, &src->ip6, sizeof (ip6_address_t));
-}
-
-void
-ip_set (ip46_address_t * dst, void *src, u8 is_ip4)
-{
-  if (is_ip4)
-    {
-      ip46_address_mask_ip4 (dst);
-      dst->ip4.as_u32 = ((ip4_address_t *) src)->as_u32;
-    }
-  else
-    clib_memcpy_fast (&dst->ip6, (ip6_address_t *) src,
-                     sizeof (ip6_address_t));
-}
-
 static const char *ip_arc_names[N_IP_FEATURE_LOCATIONS][N_AF][N_SAFI] = {
   [IP_FEATURE_INPUT] = {
     [AF_IP4] = {
index 084243d..a17f5da 100644 (file)
@@ -272,13 +272,7 @@ int ip_table_bind (fib_protocol_t fproto, u32 sw_if_index, u32 table_id);
 
 u32 ip_table_get_unused_id (fib_protocol_t fproto);
 
-u8 ip_is_zero (ip46_address_t * ip46_address, u8 is_ip4);
-u8 ip_is_local_host (ip46_address_t * ip46_address, u8 is_ip4);
-u8 ip4_is_local_host (ip4_address_t * ip4_address);
-u8 ip6_is_local_host (ip6_address_t * ip6_address);
-u8 ip_is_local (u32 fib_index, ip46_address_t * ip46_address, u8 is_ip4);
-void ip_copy (ip46_address_t * dst, ip46_address_t * src, u8 is_ip4);
-void ip_set (ip46_address_t * dst, void *src, u8 is_ip4);
+u8 ip_is_local (u32 fib_index, ip46_address_t *ip46_address, u8 is_ip4);
 
 void ip_feature_enable_disable (ip_address_family_t af,
                                ip_sub_address_family_t safi,
index ec80a96..d0e62d3 100644 (file)
@@ -578,6 +578,63 @@ ip6_mask_to_preflen (ip6_address_t * mask)
   return 0;
 }
 
+u8
+ip_is_zero (ip46_address_t *ip46_address, u8 is_ip4)
+{
+  if (is_ip4)
+    return (ip46_address->ip4.as_u32 == 0);
+  else
+    return (ip46_address->as_u64[0] == 0 && ip46_address->as_u64[1] == 0);
+}
+
+u8
+ip_is_local_host (ip46_address_t *ip46_address, u8 is_ip4)
+{
+  if (is_ip4)
+    return (ip46_address->ip4.as_u8[0] == 127);
+  else
+    return (ip46_address->as_u64[0] == 0 &&
+           clib_net_to_host_u64 (ip46_address->as_u64[1]) == 1);
+}
+
+u8
+ip4_is_local_host (ip4_address_t *ip4_address)
+{
+  return (ip4_address->as_u8[0] == 127);
+}
+
+u8
+ip6_is_local_host (ip6_address_t *ip6_address)
+{
+  return (ip6_address->as_u64[0] == 0 &&
+         clib_net_to_host_u64 (ip6_address->as_u64[1]) == 1);
+}
+
+void
+ip_copy (ip46_address_t *dst, ip46_address_t *src, u8 is_ip4)
+{
+  if (is_ip4)
+    {
+      ip46_address_mask_ip4 (dst);
+      dst->ip4.as_u32 = src->ip4.as_u32;
+    }
+  else
+    clib_memcpy_fast (&dst->ip6, &src->ip6, sizeof (ip6_address_t));
+}
+
+void
+ip_set (ip46_address_t *dst, void *src, u8 is_ip4)
+{
+  if (is_ip4)
+    {
+      ip46_address_mask_ip4 (dst);
+      dst->ip4.as_u32 = ((ip4_address_t *) src)->as_u32;
+    }
+  else
+    clib_memcpy_fast (&dst->ip6, (ip6_address_t *) src,
+                     sizeof (ip6_address_t));
+}
+
 /*
  * fd.io coding-style-patch-verification: ON
  *
index f1b387d..3846b25 100644 (file)
@@ -146,6 +146,13 @@ extern void ip6_prefix_max_address_host_order (ip6_address_t * ip, u8 plen,
 extern void ip6_preflen_to_mask (u8 pref_len, ip6_address_t * mask);
 extern u32 ip6_mask_to_preflen (ip6_address_t * mask);
 
+extern u8 ip4_is_local_host (ip4_address_t *ip4_address);
+extern u8 ip6_is_local_host (ip6_address_t *ip6_address);
+extern u8 ip_is_zero (ip46_address_t *ip46_address, u8 is_ip4);
+extern u8 ip_is_local_host (ip46_address_t *ip46_address, u8 is_ip4);
+extern void ip_copy (ip46_address_t *dst, ip46_address_t *src, u8 is_ip4);
+extern void ip_set (ip46_address_t *dst, void *src, u8 is_ip4);
+
 #endif /* __IP_TYPES_H__ */
 
 /*
index a2b4bba..6649d37 100644 (file)
@@ -17,7 +17,7 @@
 #define VNET_VNET_URI_TRANSPORT_TYPES_H_
 
 #include <vnet/vnet.h>
-#include <vnet/ip/ip.h>
+#include <vnet/ip/ip_types.h>
 #include <vnet/tcp/tcp_debug.h>
 #include <vppinfra/bihash_24_8.h>