]>
Commit | Line | Data |
---|---|---|
b062f051 | 1 | #include <stdio.h> |
e054f494 | 2 | #include <stdint.h> |
b062f051 UD |
3 | #include <sys/socket.h> |
4 | #include <netinet/in.h> | |
5 | #include <arpa/inet.h> | |
6 | ||
81ca53df UD |
7 | |
8 | static struct tests | |
9 | { | |
10 | const char *input; | |
11 | int valid; | |
12 | uint32_t result; | |
13 | } tests[] = | |
14 | { | |
15 | { "", 0, 0 }, | |
16 | { "-1", 0, 0 }, | |
17 | { "256", 1, 0x00000100 }, | |
18 | { "256.", 0, 0 }, | |
19 | { "256a", 0, 0 }, | |
20 | { "0x100", 1, 0x00000100 }, | |
21 | { "0200.0x123456", 1, 0x80123456 }, | |
22 | { "0300.0x89123456.", 0 ,0 }, | |
23 | { "0100.-0xffff0000", 0, 0 }, | |
24 | { "0.0xffffff", 1, 0x00ffffff }, | |
25 | { "0.0x1000000", 0, 0 }, | |
26 | { "0377.16777215", 1, 0xffffffff }, | |
27 | { "0377.16777216", 0, 0 }, | |
28 | { "0x87.077777777", 1, 0x87ffffff }, | |
29 | { "0x87.0100000000", 0, 0 }, | |
30 | { "0.1.3", 1, 0x00010003 }, | |
31 | { "0.256.3", 0, 0 }, | |
32 | { "256.1.3", 0, 0 }, | |
33 | { "0.1.0x10000", 0, 0 }, | |
34 | { "0.1.0xffff", 1, 0x0001ffff }, | |
35 | { "0.1a.3", 0, 0 }, | |
36 | { "0.1.a3", 0, 0 }, | |
37 | { "1.2.3.4", 1, 0x01020304 }, | |
38 | { "0400.2.3.4", 0, 0 }, | |
39 | { "1.0x100.3.4", 0, 0 }, | |
40 | { "1.2.256.4", 0, 0 }, | |
41 | { "1.2.3.0x100", 0, 0 }, | |
42 | { "323543357756889", 0, 0 }, | |
57b36a0a | 43 | { "10.1.2.3.4", 0, 0}, |
81ca53df UD |
44 | }; |
45 | ||
b062f051 | 46 | |
c1f41083 AS |
47 | static int |
48 | do_test (void) | |
b062f051 | 49 | { |
b062f051 | 50 | int result = 0; |
57b36a0a | 51 | size_t cnt; |
b062f051 | 52 | |
81ca53df | 53 | for (cnt = 0; cnt < sizeof (tests) / sizeof (tests[0]); ++cnt) |
b062f051 | 54 | { |
81ca53df UD |
55 | struct in_addr addr; |
56 | ||
57b36a0a | 57 | if ((int) inet_aton (tests[cnt].input, &addr) != tests[cnt].valid) |
81ca53df UD |
58 | { |
59 | if (tests[cnt].valid) | |
60 | printf ("\"%s\" not seen as valid IP address\n", tests[cnt].input); | |
61 | else | |
62 | printf ("\"%s\" seen as valid IP address\n", tests[cnt].input); | |
63 | result = 1; | |
64 | } | |
65 | else if (tests[cnt].valid && addr.s_addr != ntohl (tests[cnt].result)) | |
66 | { | |
67 | printf ("\"%s\" not converted correctly: is %08x, should be %08x\n", | |
68 | tests[cnt].input, addr.s_addr, tests[cnt].result); | |
69 | result = 1; | |
70 | } | |
b062f051 UD |
71 | } |
72 | ||
73 | return result; | |
74 | } | |
c1f41083 AS |
75 | |
76 | #define TEST_FUNCTION do_test () | |
77 | #include "../test-skeleton.c" |