| #include <stdio.h> | 
 | #include <string.h> | 
 | #include <netinet/in.h> | 
 |  | 
 |  | 
 | static int | 
 | do_test (void) | 
 | { | 
 |   int result = 0; | 
 |   char buf[16]; | 
 |   memset (buf, '\0', 16); | 
 |  | 
 |   if (! IN6_IS_ADDR_UNSPECIFIED (buf)) | 
 |     { | 
 |       puts ("positive IN6_IS_ADDR_UNSPECIFIED failed"); | 
 |       result = 1; | 
 |     } | 
 |   for (size_t i = 0; i < 16; ++i) | 
 |     { | 
 |       buf[i] = 1; | 
 |       if (IN6_IS_ADDR_UNSPECIFIED (buf)) | 
 | 	{ | 
 | 	  printf ("negative IN6_IS_ADDR_UNSPECIFIED with byte %zu failed\n", | 
 | 		  i); | 
 | 	  result = 1; | 
 | 	} | 
 |       buf[i] = 0; | 
 |     } | 
 |  | 
 |   if (IN6_IS_ADDR_LOOPBACK (buf)) | 
 |     { | 
 |       puts ("negative IN6_IS_ADDR_UNSPECIFIED failed"); | 
 |       result = 1; | 
 |     } | 
 |   buf[15] = 1; | 
 |   if (! IN6_IS_ADDR_LOOPBACK (buf)) | 
 |     { | 
 |       puts ("positive IN6_IS_ADDR_UNSPECIFIED failed"); | 
 |       result = 1; | 
 |     } | 
 |   buf[15] = 0; | 
 |  | 
 |   buf[0] = 0xfe; | 
 |   buf[1] = 0x80; | 
 |   if (! IN6_IS_ADDR_LINKLOCAL (buf)) | 
 |     { | 
 |       puts ("positive IN6_IS_ADDR_LINKLOCAL failed"); | 
 |       result = 1; | 
 |     } | 
 |   for (size_t i = 1; i < 16; ++i) | 
 |     { | 
 |       buf[i] ^= 1; | 
 |       if (! IN6_IS_ADDR_LINKLOCAL (buf)) | 
 | 	{ | 
 | 	  printf ("positive IN6_IS_ADDR_LINKLOCAL byte %zu failed\n", i); | 
 | 	  result = 1; | 
 | 	} | 
 |       buf[i] ^= 1; | 
 |     } | 
 |   buf[0] = 0xff; | 
 |   buf[1] = 0x80; | 
 |   if (IN6_IS_ADDR_LINKLOCAL (buf)) | 
 |     { | 
 |       puts ("negative IN6_IS_ADDR_LINKLOCAL failed"); | 
 |       result = 1; | 
 |     } | 
 |   buf[0] = 0xfe; | 
 |   buf[1] = 0xc0; | 
 |   if (IN6_IS_ADDR_LINKLOCAL (buf)) | 
 |     { | 
 |       puts ("negative IN6_IS_ADDR_LINKLOCAL #2 failed"); | 
 |       result = 1; | 
 |     } | 
 |  | 
 |   buf[0] = 0xfe; | 
 |   buf[1] = 0xc0; | 
 |   if (! IN6_IS_ADDR_SITELOCAL (buf)) | 
 |     { | 
 |       puts ("positive IN6_IS_ADDR_SITELOCAL failed"); | 
 |       result = 1; | 
 |     } | 
 |   for (size_t i = 1; i < 16; ++i) | 
 |     { | 
 |       buf[i] ^= 1; | 
 |       if (! IN6_IS_ADDR_SITELOCAL (buf)) | 
 | 	{ | 
 | 	  printf ("positive IN6_IS_ADDR_SITELOCAL byte %zu failed\n", i); | 
 | 	  result = 1; | 
 | 	} | 
 |       buf[i] ^= 1; | 
 |     } | 
 |   buf[0] = 0xff; | 
 |   buf[1] = 0x80; | 
 |   if (IN6_IS_ADDR_SITELOCAL (buf)) | 
 |     { | 
 |       puts ("negative IN6_IS_ADDR_SITELOCAL failed"); | 
 |       result = 1; | 
 |     } | 
 |   buf[0] = 0xf8; | 
 |   buf[1] = 0xc0; | 
 |   if (IN6_IS_ADDR_SITELOCAL (buf)) | 
 |     { | 
 |       puts ("negative IN6_IS_ADDR_SITELOCAL #2 failed"); | 
 |       result = 1; | 
 |     } | 
 |  | 
 |   memset (buf, '\0', 16); | 
 |   buf[10] = 0xff; | 
 |   buf[11] = 0xff; | 
 |   if (! IN6_IS_ADDR_V4MAPPED (buf)) | 
 |     { | 
 |       puts ("positive IN6_IS_ADDR_V4MAPPED failed"); | 
 |       result = 1; | 
 |     } | 
 |   for (size_t i = 12; i < 16; ++i) | 
 |     { | 
 |       buf[i] ^= 1; | 
 |       if (! IN6_IS_ADDR_V4MAPPED (buf)) | 
 | 	{ | 
 | 	  printf ("positive IN6_IS_ADDR_V4MAPPED byte %zu failed\n", i); | 
 | 	  result = 1; | 
 | 	} | 
 |       buf[i] ^= 1; | 
 |     } | 
 |   for (size_t i = 0; i < 12; ++i) | 
 |     { | 
 |       buf[i] ^= 1; | 
 |       if (IN6_IS_ADDR_V4MAPPED (buf)) | 
 | 	{ | 
 | 	  printf ("negative IN6_IS_ADDR_V4MAPPED byte %zu failed\n", i); | 
 | 	  result = 1; | 
 | 	} | 
 |       buf[i] ^= 1; | 
 |     } | 
 |  | 
 |   memset (buf, '\0', 16); | 
 |   for (size_t i = 12; i < 16; ++i) | 
 |     { | 
 |       buf[i] ^= 2; | 
 |       if (! IN6_IS_ADDR_V4COMPAT (buf)) | 
 | 	{ | 
 | 	  printf ("positive IN6_IS_ADDR_V4COMPAT byte %zu failed\n", i); | 
 | 	  result = 1; | 
 | 	} | 
 |       buf[i] ^= 2; | 
 |     } | 
 |   for (size_t i = 0; i < 12; ++i) | 
 |     { | 
 |       buf[i] ^= 1; | 
 |       if (IN6_IS_ADDR_V4COMPAT (buf)) | 
 | 	{ | 
 | 	  printf ("negative IN6_IS_ADDR_V4COMPAT byte %zu failed\n", i); | 
 | 	  result = 1; | 
 | 	} | 
 |       buf[i] ^= 1; | 
 |     } | 
 |   if (IN6_IS_ADDR_V4COMPAT (buf)) | 
 |     { | 
 |       puts ("negative IN6_IS_ADDR_V4COMPAT #2 failed"); | 
 |       result = 1; | 
 |     } | 
 |   buf[15] = 1; | 
 |   if (IN6_IS_ADDR_V4COMPAT (buf)) | 
 |     { | 
 |       puts ("negative IN6_IS_ADDR_V4COMPAT #3 failed"); | 
 |       result = 1; | 
 |     } | 
 |  | 
 |   return result; | 
 | } | 
 |  | 
 | #define TEST_FUNCTION do_test () | 
 | #include "../test-skeleton.c" |