From b47fdcdef8e88452914636ce23ee6792f259b5dc Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Fri, 11 May 2012 11:05:41 -0400 Subject: [PATCH] add missing IN6_ARE_ADDR_EQUAL written to avoid multiple conditional jumps and avoid ugly repetitive lines in the header file. --- include/netinet/in.h | 5 +++++ 1 file changed, 5 insertions(+) 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 -- 2.20.1