aboutgitcodebugslistschat
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-02-28 22:25:05 +1100
committerStefano Brivio <sbrivio@redhat.com>2024-02-29 09:47:35 +0100
commite196eada6f51a8e36156a71dbccd746cf89a47fa (patch)
tree77cb14f37cdf87fe434e13e7197bd938b356c01c
parentf6e6e8ad40eed1cbd48122c67a2ca8fd3a293992 (diff)
downloadpasst-e196eada6f51a8e36156a71dbccd746cf89a47fa.tar
passt-e196eada6f51a8e36156a71dbccd746cf89a47fa.tar.gz
passt-e196eada6f51a8e36156a71dbccd746cf89a47fa.tar.bz2
passt-e196eada6f51a8e36156a71dbccd746cf89a47fa.tar.lz
passt-e196eada6f51a8e36156a71dbccd746cf89a47fa.tar.xz
passt-e196eada6f51a8e36156a71dbccd746cf89a47fa.tar.zst
passt-e196eada6f51a8e36156a71dbccd746cf89a47fa.zip
util: Allow IN4_IS_* macros to operate on untyped addresses
The IN4_IS_*() macros expect a pointer to a struct in_addr. That makes sense, but sometimes we have an IPv4 address as a void * pointer or union type which makes these less convenient. Additionally, this doesn't match the behaviour of the standard library's IN6_IS_*() macros on which they're modelled, nor our own IN4_ARE_ADDR_EQUAL(). Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r--util.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/util.h b/util.h
index de6816a..5551349 100644
--- a/util.h
+++ b/util.h
@@ -111,13 +111,13 @@
#endif
#define IN4_IS_ADDR_UNSPECIFIED(a) \
- ((a)->s_addr == htonl_constant(INADDR_ANY))
+ (((struct in_addr *)(a))->s_addr == htonl_constant(INADDR_ANY))
#define IN4_IS_ADDR_BROADCAST(a) \
- ((a)->s_addr == htonl_constant(INADDR_BROADCAST))
+ (((struct in_addr *)(a))->s_addr == htonl_constant(INADDR_BROADCAST))
#define IN4_IS_ADDR_LOOPBACK(a) \
- (ntohl((a)->s_addr) >> IN_CLASSA_NSHIFT == IN_LOOPBACKNET)
+ (ntohl(((struct in_addr *)(a))->s_addr) >> IN_CLASSA_NSHIFT == IN_LOOPBACKNET)
#define IN4_IS_ADDR_MULTICAST(a) \
- (IN_MULTICAST(ntohl((a)->s_addr)))
+ (IN_MULTICAST(ntohl(((struct in_addr *)(a))->s_addr)))
#define IN4_ARE_ADDR_EQUAL(a, b) \
(((struct in_addr *)(a))->s_addr == ((struct in_addr *)b)->s_addr)
#define IN4ADDR_LOOPBACK_INIT \