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>
This commit is contained in:
parent
f6e6e8ad40
commit
e196eada6f
1 changed files with 4 additions and 4 deletions
8
util.h
8
util.h
|
@ -111,13 +111,13 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define IN4_IS_ADDR_UNSPECIFIED(a) \
|
#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) \
|
#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) \
|
#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) \
|
#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) \
|
#define IN4_ARE_ADDR_EQUAL(a, b) \
|
||||||
(((struct in_addr *)(a))->s_addr == ((struct in_addr *)b)->s_addr)
|
(((struct in_addr *)(a))->s_addr == ((struct in_addr *)b)->s_addr)
|
||||||
#define IN4ADDR_LOOPBACK_INIT \
|
#define IN4ADDR_LOOPBACK_INIT \
|
||||||
|
|
Loading…
Reference in a new issue