diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-06-20 08:32:50 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-06-20 08:32:50 +0000 |
commit | 21a2b4f95b4488645ba5a6254fcb8919c4915f73 (patch) | |
tree | 00c92cb7103cc14fba7e63e8dee99fe711856863 /src/tun | |
parent | 5533b105943b4f6dd688c1758350cd83ebeab3b9 (diff) | |
download | gnunet-21a2b4f95b4488645ba5a6254fcb8919c4915f73.tar.gz gnunet-21a2b4f95b4488645ba5a6254fcb8919c4915f73.zip |
continuing refactoring of regex library structure, disambiguating symbol names between old regex library which is now internal and the public API; moving IP-to-regex conversion functions to tun library, as only vpn is using those to begin with
Diffstat (limited to 'src/tun')
-rw-r--r-- | src/tun/Makefile.am | 16 | ||||
-rw-r--r-- | src/tun/test_regex.c | 103 |
2 files changed, 115 insertions, 4 deletions
diff --git a/src/tun/Makefile.am b/src/tun/Makefile.am index 3b2b573b6..96e79d0d8 100644 --- a/src/tun/Makefile.am +++ b/src/tun/Makefile.am | |||
@@ -12,18 +12,19 @@ endif | |||
12 | lib_LTLIBRARIES = libgnunettun.la | 12 | lib_LTLIBRARIES = libgnunettun.la |
13 | 13 | ||
14 | libgnunettun_la_SOURCES = \ | 14 | libgnunettun_la_SOURCES = \ |
15 | tun.c | 15 | tun.c \ |
16 | regex.c | ||
16 | libgnunettun_la_LIBADD = \ | 17 | libgnunettun_la_LIBADD = \ |
17 | $(top_builddir)/src/util/libgnunetutil.la $(XLIB) \ | 18 | $(top_builddir)/src/util/libgnunetutil.la $(XLIB) \ |
18 | $(LTLIBINTL) | 19 | $(LTLIBINTL) |
19 | libgnunettun_la_LDFLAGS = \ | 20 | libgnunettun_la_LDFLAGS = \ |
20 | $(GN_LIB_LDFLAGS) \ | 21 | $(GN_LIB_LDFLAGS) \ |
21 | -version-info 0:0:0 | 22 | -version-info 1:0:1 |
22 | 23 | ||
23 | 24 | ||
24 | check_PROGRAMS = \ | 25 | check_PROGRAMS = \ |
25 | test_tun | 26 | test_tun \ |
26 | 27 | test_regex | |
27 | 28 | ||
28 | if ENABLE_TEST_RUN | 29 | if ENABLE_TEST_RUN |
29 | TESTS = $(check_PROGRAMS) | 30 | TESTS = $(check_PROGRAMS) |
@@ -34,3 +35,10 @@ test_tun_SOURCES = \ | |||
34 | test_tun_LDADD = \ | 35 | test_tun_LDADD = \ |
35 | $(top_builddir)/src/util/libgnunetutil.la \ | 36 | $(top_builddir)/src/util/libgnunetutil.la \ |
36 | $(top_builddir)/src/tun/libgnunettun.la | 37 | $(top_builddir)/src/tun/libgnunettun.la |
38 | |||
39 | |||
40 | test_regex_SOURCES = \ | ||
41 | test_regex.c | ||
42 | test_regex_LDADD = \ | ||
43 | $(top_builddir)/src/util/libgnunetutil.la \ | ||
44 | $(top_builddir)/src/tun/libgnunettun.la | ||
diff --git a/src/tun/test_regex.c b/src/tun/test_regex.c new file mode 100644 index 000000000..c4c618d85 --- /dev/null +++ b/src/tun/test_regex.c | |||
@@ -0,0 +1,103 @@ | |||
1 | /* | ||
2 | This file is part of GNUnet | ||
3 | (C) 2012, 2013 Christian Grothoff (and other contributing authors) | ||
4 | |||
5 | GNUnet is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published | ||
7 | by the Free Software Foundation; either version 3, or (at your | ||
8 | option) any later version. | ||
9 | |||
10 | GNUnet is distributed in the hope that it will be useful, but | ||
11 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with GNUnet; see the file COPYING. If not, write to the | ||
17 | Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||
18 | Boston, MA 02111-1307, USA. | ||
19 | */ | ||
20 | /** | ||
21 | * @file tun/test_regex.c | ||
22 | * @brief simple test for regex.c iptoregex functions | ||
23 | * @author Maximilian Szengel | ||
24 | */ | ||
25 | #include "platform.h" | ||
26 | #include "gnunet_tun_lib.h" | ||
27 | |||
28 | |||
29 | static int | ||
30 | test_iptoregex (const char *ipv4, const char *netmask, const char *expectedv4, | ||
31 | const char *ipv6, unsigned int prefixlen, | ||
32 | const char *expectedv6) | ||
33 | { | ||
34 | int error = 0; | ||
35 | |||
36 | struct in_addr a; | ||
37 | struct in6_addr b; | ||
38 | char rxv4[GNUNET_REGEX_IPV4_REGEXLEN]; | ||
39 | char rxv6[GNUNET_REGEX_IPV6_REGEXLEN]; | ||
40 | |||
41 | GNUNET_assert (1 == inet_pton (AF_INET, ipv4, &a)); | ||
42 | GNUNET_TUN_ipv4toregex (&a, netmask, rxv4); | ||
43 | |||
44 | |||
45 | if (0 != strcmp (rxv4, expectedv4)) | ||
46 | { | ||
47 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Expected: %s but got: %s\n", | ||
48 | expectedv4, rxv4); | ||
49 | error++; | ||
50 | } | ||
51 | |||
52 | GNUNET_assert (1 == inet_pton (AF_INET6, ipv6, &b)); | ||
53 | GNUNET_TUN_ipv6toregex (&b, prefixlen, rxv6); | ||
54 | |||
55 | if (0 != strcmp (rxv6, expectedv6)) | ||
56 | { | ||
57 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Expected: %s but got: %s\n", | ||
58 | expectedv6, rxv6); | ||
59 | error++; | ||
60 | } | ||
61 | |||
62 | return error; | ||
63 | } | ||
64 | |||
65 | int | ||
66 | main (int argc, char *argv[]) | ||
67 | { | ||
68 | GNUNET_log_setup ("test-regex", "WARNING", NULL); | ||
69 | |||
70 | int error; | ||
71 | |||
72 | error = 0; | ||
73 | |||
74 | error += | ||
75 | test_iptoregex ("192.0.0.0", "255.255.255.0", | ||
76 | "110000000000000000000000(0|1)+", "FFFF::0", 16, | ||
77 | "1111111111111111(0|1)+"); | ||
78 | |||
79 | error += | ||
80 | test_iptoregex ("187.238.225.0", "255.255.255.128", | ||
81 | "1011101111101110111000010(0|1)+", "E1E1:73F9:51BE::0", | ||
82 | 49, | ||
83 | "1110000111100001011100111111100101010001101111100(0|1)+"); | ||
84 | |||
85 | error += | ||
86 | test_iptoregex ("255.255.255.255", "255.255.255.255", | ||
87 | "11111111111111111111111111111111", | ||
88 | "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", 128, | ||
89 | "11111111111111111111111111111111" | ||
90 | "11111111111111111111111111111111" | ||
91 | "11111111111111111111111111111111" | ||
92 | "11111111111111111111111111111111"); | ||
93 | |||
94 | error += | ||
95 | test_iptoregex ("0.0.0.0", "255.255.255.255", | ||
96 | "00000000000000000000000000000000", "0::0", 128, | ||
97 | "00000000000000000000000000000000" | ||
98 | "00000000000000000000000000000000" | ||
99 | "00000000000000000000000000000000" | ||
100 | "00000000000000000000000000000000"); | ||
101 | |||
102 | return error; | ||
103 | } | ||