aboutsummaryrefslogtreecommitdiff
path: root/src/lib/util/test_tun.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/util/test_tun.c')
-rw-r--r--src/lib/util/test_tun.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/lib/util/test_tun.c b/src/lib/util/test_tun.c
new file mode 100644
index 000000000..1086ef3ca
--- /dev/null
+++ b/src/lib/util/test_tun.c
@@ -0,0 +1,77 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2010, 2011, 2012 Christian Grothoff
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your 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 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file tun/test_tun.c
23 * @brief test for tun.c
24 * @author Christian Grothoff
25 */
26
27#include "platform.h"
28#include "gnunet_util_lib.h"
29
30static int ret;
31
32static void
33test_udp (size_t pll,
34 int pl_fill,
35 uint16_t crc)
36{
37 struct GNUNET_TUN_IPv4Header ip;
38 struct GNUNET_TUN_UdpHeader udp;
39 char payload[pll];
40 struct in_addr src;
41 struct in_addr dst;
42
43 GNUNET_assert (1 == inet_pton (AF_INET, "1.2.3.4", &src));
44 GNUNET_assert (1 == inet_pton (AF_INET, "122.2.3.5", &dst));
45 memset (payload, pl_fill, sizeof(payload));
46 GNUNET_TUN_initialize_ipv4_header (&ip,
47 IPPROTO_UDP,
48 pll + sizeof(udp),
49 &src,
50 &dst);
51 udp.source_port = htons (4242);
52 udp.destination_port = htons (4242);
53 udp.len = htons (pll);
54 GNUNET_TUN_calculate_udp4_checksum (&ip,
55 &udp,
56 payload,
57 pll);
58 if (crc != ntohs (udp.crc))
59 {
60 fprintf (stderr, "Got CRC: %u, wanted: %u\n",
61 ntohs (udp.crc),
62 crc);
63 ret = 1;
64 }
65}
66
67
68int
69main (int argc,
70 char **argv)
71{
72 test_udp (4, 3, 22439);
73 test_udp (4, 1, 23467);
74 test_udp (7, 17, 6516);
75 test_udp (12451, 251, 42771);
76 return ret;
77}