aboutsummaryrefslogtreecommitdiff
path: root/src/tun
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-06-20 08:32:50 +0000
committerChristian Grothoff <christian@grothoff.org>2013-06-20 08:32:50 +0000
commit21a2b4f95b4488645ba5a6254fcb8919c4915f73 (patch)
tree00c92cb7103cc14fba7e63e8dee99fe711856863 /src/tun
parent5533b105943b4f6dd688c1758350cd83ebeab3b9 (diff)
downloadgnunet-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.am16
-rw-r--r--src/tun/test_regex.c103
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
12lib_LTLIBRARIES = libgnunettun.la 12lib_LTLIBRARIES = libgnunettun.la
13 13
14libgnunettun_la_SOURCES = \ 14libgnunettun_la_SOURCES = \
15 tun.c 15 tun.c \
16 regex.c
16libgnunettun_la_LIBADD = \ 17libgnunettun_la_LIBADD = \
17 $(top_builddir)/src/util/libgnunetutil.la $(XLIB) \ 18 $(top_builddir)/src/util/libgnunetutil.la $(XLIB) \
18 $(LTLIBINTL) 19 $(LTLIBINTL)
19libgnunettun_la_LDFLAGS = \ 20libgnunettun_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
24check_PROGRAMS = \ 25check_PROGRAMS = \
25 test_tun 26 test_tun \
26 27 test_regex
27 28
28if ENABLE_TEST_RUN 29if ENABLE_TEST_RUN
29TESTS = $(check_PROGRAMS) 30TESTS = $(check_PROGRAMS)
@@ -34,3 +35,10 @@ test_tun_SOURCES = \
34test_tun_LDADD = \ 35test_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
40test_regex_SOURCES = \
41 test_regex.c
42test_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
29static int
30test_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
65int
66main (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}