From 8ca922e1d6d0fe8af28e539505d3c3a211642a91 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Thu, 2 Oct 2025 02:23:08 -0400 Subject: [PATCH] ip: move address related functions to types 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 --- src/vnet/ip/ip.c | 57 -------------------------------------- src/vnet/ip/ip.h | 8 +----- src/vnet/ip/ip_types.c | 57 ++++++++++++++++++++++++++++++++++++++ src/vnet/ip/ip_types.h | 7 +++++ src/vnet/session/transport_types.h | 2 +- 5 files changed, 66 insertions(+), 65 deletions(-) diff --git a/src/vnet/ip/ip.c b/src/vnet/ip/ip.c index 586f7dfbc85..fa082e47bab 100644 --- a/src/vnet/ip/ip.c +++ b/src/vnet/ip/ip.c @@ -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] = { diff --git a/src/vnet/ip/ip.h b/src/vnet/ip/ip.h index 084243dccfa..a17f5da9618 100644 --- a/src/vnet/ip/ip.h +++ b/src/vnet/ip/ip.h @@ -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, diff --git a/src/vnet/ip/ip_types.c b/src/vnet/ip/ip_types.c index ec80a96f15c..d0e62d34456 100644 --- a/src/vnet/ip/ip_types.c +++ b/src/vnet/ip/ip_types.c @@ -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 * diff --git a/src/vnet/ip/ip_types.h b/src/vnet/ip/ip_types.h index f1b387df194..3846b2534ed 100644 --- a/src/vnet/ip/ip_types.h +++ b/src/vnet/ip/ip_types.h @@ -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__ */ /* diff --git a/src/vnet/session/transport_types.h b/src/vnet/session/transport_types.h index a2b4bba79d9..6649d3727a8 100644 --- a/src/vnet/session/transport_types.h +++ b/src/vnet/session/transport_types.h @@ -17,7 +17,7 @@ #define VNET_VNET_URI_TRANSPORT_TYPES_H_ #include -#include +#include #include #include -- 2.16.6