From: Rich Felker Date: Fri, 11 May 2012 15:05:41 +0000 (-0400) Subject: add missing IN6_ARE_ADDR_EQUAL X-Git-Tag: v0.9.1~60 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b47fdcdef8e88452914636ce23ee6792f259b5dc;p=oweals%2Fmusl.git add missing IN6_ARE_ADDR_EQUAL written to avoid multiple conditional jumps and avoid ugly repetitive lines in the header file. --- 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