Merge branch 'master' into bug13658-branch
[platform/upstream/glibc.git] / inet / tst-checks.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <netinet/in.h>
4
5
6 static int
7 do_test (void)
8 {
9   int result = 0;
10   char buf[16];
11   memset (buf, '\0', 16);
12
13   if (! IN6_IS_ADDR_UNSPECIFIED (buf))
14     {
15       puts ("positive IN6_IS_ADDR_UNSPECIFIED failed");
16       result = 1;
17     }
18   for (size_t i = 0; i < 16; ++i)
19     {
20       buf[i] = 1;
21       if (IN6_IS_ADDR_UNSPECIFIED (buf))
22         {
23           printf ("negative IN6_IS_ADDR_UNSPECIFIED with byte %zu failed\n",
24                   i);
25           result = 1;
26         }
27       buf[i] = 0;
28     }
29
30   if (IN6_IS_ADDR_LOOPBACK (buf))
31     {
32       puts ("negative IN6_IS_ADDR_UNSPECIFIED failed");
33       result = 1;
34     }
35   buf[15] = 1;
36   if (! IN6_IS_ADDR_LOOPBACK (buf))
37     {
38       puts ("positive IN6_IS_ADDR_UNSPECIFIED failed");
39       result = 1;
40     }
41   buf[15] = 0;
42
43   buf[0] = 0xfe;
44   buf[1] = 0x80;
45   if (! IN6_IS_ADDR_LINKLOCAL (buf))
46     {
47       puts ("positive IN6_IS_ADDR_LINKLOCAL failed");
48       result = 1;
49     }
50   for (size_t i = 1; i < 16; ++i)
51     {
52       buf[i] ^= 1;
53       if (! IN6_IS_ADDR_LINKLOCAL (buf))
54         {
55           printf ("positive IN6_IS_ADDR_LINKLOCAL byte %zu failed\n", i);
56           result = 1;
57         }
58       buf[i] ^= 1;
59     }
60   buf[0] = 0xff;
61   buf[1] = 0x80;
62   if (IN6_IS_ADDR_LINKLOCAL (buf))
63     {
64       puts ("negative IN6_IS_ADDR_LINKLOCAL failed");
65       result = 1;
66     }
67   buf[0] = 0xfe;
68   buf[1] = 0xc0;
69   if (IN6_IS_ADDR_LINKLOCAL (buf))
70     {
71       puts ("negative IN6_IS_ADDR_LINKLOCAL #2 failed");
72       result = 1;
73     }
74
75   buf[0] = 0xfe;
76   buf[1] = 0xc0;
77   if (! IN6_IS_ADDR_SITELOCAL (buf))
78     {
79       puts ("positive IN6_IS_ADDR_SITELOCAL failed");
80       result = 1;
81     }
82   for (size_t i = 1; i < 16; ++i)
83     {
84       buf[i] ^= 1;
85       if (! IN6_IS_ADDR_SITELOCAL (buf))
86         {
87           printf ("positive IN6_IS_ADDR_SITELOCAL byte %zu failed\n", i);
88           result = 1;
89         }
90       buf[i] ^= 1;
91     }
92   buf[0] = 0xff;
93   buf[1] = 0x80;
94   if (IN6_IS_ADDR_SITELOCAL (buf))
95     {
96       puts ("negative IN6_IS_ADDR_SITELOCAL failed");
97       result = 1;
98     }
99   buf[0] = 0xf8;
100   buf[1] = 0xc0;
101   if (IN6_IS_ADDR_SITELOCAL (buf))
102     {
103       puts ("negative IN6_IS_ADDR_SITELOCAL #2 failed");
104       result = 1;
105     }
106
107   memset (buf, '\0', 16);
108   buf[10] = 0xff;
109   buf[11] = 0xff;
110   if (! IN6_IS_ADDR_V4MAPPED (buf))
111     {
112       puts ("positive IN6_IS_ADDR_V4MAPPED failed");
113       result = 1;
114     }
115   for (size_t i = 12; i < 16; ++i)
116     {
117       buf[i] ^= 1;
118       if (! IN6_IS_ADDR_V4MAPPED (buf))
119         {
120           printf ("positive IN6_IS_ADDR_V4MAPPED byte %zu failed\n", i);
121           result = 1;
122         }
123       buf[i] ^= 1;
124     }
125   for (size_t i = 0; i < 12; ++i)
126     {
127       buf[i] ^= 1;
128       if (IN6_IS_ADDR_V4MAPPED (buf))
129         {
130           printf ("negative IN6_IS_ADDR_V4MAPPED byte %zu failed\n", i);
131           result = 1;
132         }
133       buf[i] ^= 1;
134     }
135
136   memset (buf, '\0', 16);
137   for (size_t i = 12; i < 16; ++i)
138     {
139       buf[i] ^= 2;
140       if (! IN6_IS_ADDR_V4COMPAT (buf))
141         {
142           printf ("positive IN6_IS_ADDR_V4COMPAT byte %zu failed\n", i);
143           result = 1;
144         }
145       buf[i] ^= 2;
146     }
147   for (size_t i = 0; i < 12; ++i)
148     {
149       buf[i] ^= 1;
150       if (IN6_IS_ADDR_V4COMPAT (buf))
151         {
152           printf ("negative IN6_IS_ADDR_V4COMPAT byte %zu failed\n", i);
153           result = 1;
154         }
155       buf[i] ^= 1;
156     }
157   if (IN6_IS_ADDR_V4COMPAT (buf))
158     {
159       puts ("negative IN6_IS_ADDR_V4COMPAT #2 failed");
160       result = 1;
161     }
162   buf[15] = 1;
163   if (IN6_IS_ADDR_V4COMPAT (buf))
164     {
165       puts ("negative IN6_IS_ADDR_V4COMPAT #3 failed");
166       result = 1;
167     }
168
169   return result;
170 }
171
172 #define TEST_FUNCTION do_test ()
173 #include "../test-skeleton.c"