[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/libc/glibc/glibc-2.22/inet/tst-checks.c b/ap/libc/glibc/glibc-2.22/inet/tst-checks.c
new file mode 100644
index 0000000..5d97564
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/inet/tst-checks.c
@@ -0,0 +1,173 @@
+#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"