diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-05-11 11:05:41 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-05-11 11:05:41 -0400 |
commit | b47fdcdef8e88452914636ce23ee6792f259b5dc (patch) | |
tree | 0d0ced584b1c7a262cabe85f347379e4d3f63578 /include/netinet | |
parent | e700e59a90290babdb7e984a7a738f30a8f87dcf (diff) | |
download | musl-b47fdcdef8e88452914636ce23ee6792f259b5dc.tar.gz |
add missing IN6_ARE_ADDR_EQUAL
written to avoid multiple conditional jumps and avoid ugly repetitive
lines in the header file.
Diffstat (limited to 'include/netinet')
-rw-r--r-- | include/netinet/in.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/netinet/in.h b/include/netinet/in.h index 181f890c..509640b8 100644 --- a/include/netinet/in.h +++ b/include/netinet/in.h @@ -138,6 +138,11 @@ uint16_t ntohs(uint16_t); #define IN6_IS_ADDR_MC_GLOBAL(a) \ (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe)) +#define __ARE_4_EQUAL(a,b) \ + (!( 0[a]-0[b] | 1[a]-1[b] | 2[a]-2[b] | 3[a]-3[b] )) +#define IN6_ARE_ADDR_EQUAL(a,b) \ + __ARE_4_EQUAL((const uint32_t *)(a), (const uint32_t *)(b)) + #define IN_CLASSA(a) ((((in_addr_t)(a)) & 0x80000000) == 0) #define IN_CLASSA_NET 0xff000000 #define IN_CLASSA_NSHIFT 24 |