aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/Makefile.am4
-rw-r--r--src/transport/Makefile.in88
-rw-r--r--src/transport/gnunet-helper-transport-wlan-dummy.c302
-rw-r--r--src/transport/gnunet-helper-transport-wlan.c1453
-rw-r--r--src/transport/gnunet-service-transport.c61
-rw-r--r--src/transport/gnunet-service-transport_blacklist.c55
-rw-r--r--src/transport/gnunet-service-transport_blacklist.h2
-rw-r--r--src/transport/gnunet-service-transport_clients.c36
-rw-r--r--src/transport/gnunet-service-transport_hello.c17
-rw-r--r--src/transport/gnunet-service-transport_neighbours.c4102
-rw-r--r--src/transport/gnunet-service-transport_neighbours.h30
-rw-r--r--src/transport/gnunet-service-transport_validation.c53
-rw-r--r--src/transport/gnunet-service-transport_validation.h7
-rwxr-xr-xsrc/transport/gnunet-transport-certificate-creation2
-rw-r--r--src/transport/gnunet-transport-certificate-creation.c4
-rw-r--r--src/transport/gnunet-transport-wlan-sender.c80
-rw-r--r--src/transport/gnunet-transport.c51
-rw-r--r--src/transport/plugin_transport_http.c452
-rw-r--r--src/transport/plugin_transport_http.h63
-rw-r--r--src/transport/plugin_transport_http_client.c199
-rw-r--r--src/transport/plugin_transport_http_server.c269
-rw-r--r--src/transport/plugin_transport_tcp.c876
-rw-r--r--src/transport/plugin_transport_udp.c783
-rw-r--r--src/transport/plugin_transport_udp_broadcasting.c106
-rw-r--r--src/transport/plugin_transport_unix.c572
-rw-r--r--src/transport/plugin_transport_wlan.c3727
-rw-r--r--src/transport/plugin_transport_wlan.h167
-rw-r--r--src/transport/template_cfg_peer1.conf3
-rw-r--r--src/transport/template_cfg_peer2.conf3
-rw-r--r--src/transport/test_quota_compliance_tcp_asymmetric_peer1.conf1
-rw-r--r--src/transport/test_quota_compliance_tcp_asymmetric_peer2.conf1
-rw-r--r--src/transport/test_quota_compliance_tcp_peer1.conf1
-rw-r--r--src/transport/test_quota_compliance_tcp_peer2.conf1
-rw-r--r--src/transport/test_transport_api.c58
-rw-r--r--src/transport/test_transport_api_bidirectional_connect.c58
-rw-r--r--src/transport/test_transport_api_bidirectional_connect_peer1.conf33
-rw-r--r--src/transport/test_transport_api_bidirectional_connect_peer2.conf31
-rw-r--r--src/transport/test_transport_api_blacklisting.c18
-rw-r--r--src/transport/test_transport_api_disconnect_tcp_peer1.conf1
-rw-r--r--src/transport/test_transport_api_disconnect_tcp_peer2.conf1
-rw-r--r--src/transport/test_transport_api_limited_sockets.c26
-rw-r--r--src/transport/test_transport_api_limited_sockets_tcp_peer1.conf1
-rw-r--r--src/transport/test_transport_api_limited_sockets_tcp_peer2.conf1
-rw-r--r--src/transport/test_transport_api_reliability.c2
-rw-r--r--src/transport/test_transport_api_reliability_tcp_nat_peer1.conf1
-rw-r--r--src/transport/test_transport_api_reliability_tcp_nat_peer2.conf1
-rw-r--r--src/transport/test_transport_api_reliability_tcp_peer1.conf1
-rw-r--r--src/transport/test_transport_api_reliability_tcp_peer2.conf1
-rw-r--r--src/transport/test_transport_api_restart_1peer.c55
-rw-r--r--src/transport/test_transport_api_restart_2peers.c70
-rw-r--r--src/transport/test_transport_api_tcp_nat_peer1.conf1
-rw-r--r--src/transport/test_transport_api_tcp_nat_peer2.conf1
-rw-r--r--src/transport/test_transport_api_tcp_peer1.conf1
-rw-r--r--src/transport/test_transport_api_tcp_peer2.conf1
-rw-r--r--src/transport/test_transport_api_timeout.c27
-rw-r--r--src/transport/test_transport_api_timeout_tcp_peer1.conf1
-rw-r--r--src/transport/test_transport_api_timeout_tcp_peer2.conf1
-rw-r--r--src/transport/test_transport_defaults.conf6
-rw-r--r--src/transport/transport-testing.c103
-rw-r--r--src/transport/transport.conf.in4
-rw-r--r--src/transport/transport.h7
-rw-r--r--src/transport/transport_api.c54
-rw-r--r--src/transport/transport_api_address_lookup.c10
-rw-r--r--src/transport/transport_api_address_to_string.c14
-rw-r--r--src/transport/transport_api_blacklist.c4
65 files changed, 7348 insertions, 6817 deletions
diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am
index 0692450..b040874 100644
--- a/src/transport/Makefile.am
+++ b/src/transport/Makefile.am
@@ -61,7 +61,6 @@ UNIX_QUOTA_TEST = test_quota_compliance_unix \
endif
noinst_PROGRAMS = \
- $(WLAN_BIN_DUMMY) \
$(WLAN_BIN_SENDER)
# gnunet-transport-connect-running-peers
@@ -92,11 +91,12 @@ libgnunettransport_la_LIBADD = \
$(GN_LIBINTL)
libgnunettransport_la_LDFLAGS = \
$(GN_LIB_LDFLAGS) $(WINFLAGS) \
- -version-info 0:0:0
+ -version-info 1:0:0
bin_PROGRAMS = \
gnunet-transport \
$(WLAN_BIN) \
+ $(WLAN_BIN_DUMMY) \
gnunet-service-transport \
gnunet-transport-certificate-creation
diff --git a/src/transport/Makefile.in b/src/transport/Makefile.in
index 36df686..b5f2c64 100644
--- a/src/transport/Makefile.in
+++ b/src/transport/Makefile.in
@@ -37,9 +37,9 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
-noinst_PROGRAMS = $(am__EXEEXT_21) $(am__EXEEXT_22)
+noinst_PROGRAMS = $(am__EXEEXT_22)
bin_PROGRAMS = gnunet-transport$(EXEEXT) $(am__EXEEXT_1) \
- gnunet-service-transport$(EXEEXT) \
+ $(am__EXEEXT_2) gnunet-service-transport$(EXEEXT) \
gnunet-transport-certificate-creation$(EXEEXT)
check_PROGRAMS = test_transport_testing$(EXEEXT) \
test_transport_startonly$(EXEEXT) \
@@ -53,22 +53,22 @@ check_PROGRAMS = test_transport_testing$(EXEEXT) \
test_transport_api_limited_sockets_tcp$(EXEEXT) \
test_transport_api_tcp_nat$(EXEEXT) \
test_transport_api_udp$(EXEEXT) \
- test_transport_api_timeout_udp$(EXEEXT) $(am__EXEEXT_2) \
- $(am__EXEEXT_3) test_transport_api_udp_nat$(EXEEXT) \
- $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
- $(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \
+ test_transport_api_timeout_udp$(EXEEXT) $(am__EXEEXT_3) \
+ $(am__EXEEXT_4) test_transport_api_udp_nat$(EXEEXT) \
+ $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \
+ $(am__EXEEXT_8) $(am__EXEEXT_9) $(am__EXEEXT_10) \
test_transport_api_multi$(EXEEXT) \
test_transport_api_reliability_tcp$(EXEEXT) \
test_transport_api_reliability_tcp_nat$(EXEEXT) \
test_transport_api_unreliability_udp$(EXEEXT) \
test_transport_api_unreliability_constant_udp$(EXEEXT) \
- $(am__EXEEXT_10) $(am__EXEEXT_11) $(am__EXEEXT_12) \
- $(am__EXEEXT_13) $(am__EXEEXT_14) \
+ $(am__EXEEXT_11) $(am__EXEEXT_12) $(am__EXEEXT_13) \
+ $(am__EXEEXT_14) $(am__EXEEXT_15) \
test_quota_compliance_tcp$(EXEEXT) \
test_quota_compliance_tcp_asymmetric$(EXEEXT) \
- test_quota_compliance_udp$(EXEEXT) $(am__EXEEXT_15) \
- $(am__EXEEXT_16) $(am__EXEEXT_17) $(am__EXEEXT_18) \
- $(am__EXEEXT_19) $(am__EXEEXT_20)
+ test_quota_compliance_udp$(EXEEXT) $(am__EXEEXT_16) \
+ $(am__EXEEXT_17) $(am__EXEEXT_18) $(am__EXEEXT_19) \
+ $(am__EXEEXT_20) $(am__EXEEXT_21)
@ENABLE_TEST_RUN_TRUE@TESTS = test_transport_testing$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_transport_startonly$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_transport_api_blacklisting$(EXEEXT) \
@@ -82,25 +82,25 @@ check_PROGRAMS = test_transport_testing$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_transport_api_tcp_nat$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_transport_api_udp$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_transport_api_timeout_udp$(EXEEXT) \
-@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_2) $(am__EXEEXT_3) \
+@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_3) $(am__EXEEXT_4) \
@ENABLE_TEST_RUN_TRUE@ test_transport_api_udp_nat$(EXEEXT) \
-@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_4) $(am__EXEEXT_5) \
-@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_6) $(am__EXEEXT_7) \
-@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_8) $(am__EXEEXT_9) \
+@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_5) $(am__EXEEXT_6) \
+@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_7) $(am__EXEEXT_8) \
+@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_9) $(am__EXEEXT_10) \
@ENABLE_TEST_RUN_TRUE@ test_transport_api_multi$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_transport_api_reliability_tcp$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_transport_api_reliability_tcp_nat$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_transport_api_unreliability_udp$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_transport_api_unreliability_constant_udp$(EXEEXT) \
-@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_10) $(am__EXEEXT_11) \
-@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_12) $(am__EXEEXT_13) \
-@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_14) \
+@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_11) $(am__EXEEXT_12) \
+@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_13) $(am__EXEEXT_14) \
+@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_15) \
@ENABLE_TEST_RUN_TRUE@ test_quota_compliance_tcp$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_quota_compliance_tcp_asymmetric$(EXEEXT) \
@ENABLE_TEST_RUN_TRUE@ test_quota_compliance_udp$(EXEEXT) \
-@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_15) $(am__EXEEXT_16) \
-@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_17) $(am__EXEEXT_18) \
-@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_19) $(am__EXEEXT_20)
+@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_16) $(am__EXEEXT_17) \
+@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_18) $(am__EXEEXT_19) \
+@ENABLE_TEST_RUN_TRUE@ $(am__EXEEXT_20) $(am__EXEEXT_21)
subdir = src/transport
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/transport.conf.in
@@ -279,37 +279,37 @@ libgnunettransporttesting_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_CFLAGS) $(CFLAGS) $(libgnunettransporttesting_la_LDFLAGS) \
$(LDFLAGS) -o $@
@LINUX_TRUE@am__EXEEXT_1 = gnunet-helper-transport-wlan$(EXEEXT)
-@MINGW_FALSE@am__EXEEXT_2 = test_transport_api_unix$(EXEEXT)
-@MINGW_FALSE@am__EXEEXT_3 = test_transport_api_timeout_unix$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_4 = test_transport_api_http$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_5 = test_transport_api_http_nat$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_6 = \
+@LINUX_TRUE@am__EXEEXT_2 = \
+@LINUX_TRUE@ gnunet-helper-transport-wlan-dummy$(EXEEXT)
+@MINGW_FALSE@am__EXEEXT_3 = test_transport_api_unix$(EXEEXT)
+@MINGW_FALSE@am__EXEEXT_4 = test_transport_api_timeout_unix$(EXEEXT)
+@HAVE_MHD_TRUE@am__EXEEXT_5 = test_transport_api_http$(EXEEXT)
+@HAVE_MHD_TRUE@am__EXEEXT_6 = test_transport_api_http_nat$(EXEEXT)
+@HAVE_MHD_TRUE@am__EXEEXT_7 = \
@HAVE_MHD_TRUE@ test_transport_api_timeout_http$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_7 = test_transport_api_https$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_8 = test_transport_api_https_nat$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_9 = \
+@HAVE_MHD_TRUE@am__EXEEXT_8 = test_transport_api_https$(EXEEXT)
+@HAVE_MHD_TRUE@am__EXEEXT_9 = test_transport_api_https_nat$(EXEEXT)
+@HAVE_MHD_TRUE@am__EXEEXT_10 = \
@HAVE_MHD_TRUE@ test_transport_api_timeout_https$(EXEEXT)
-@MINGW_FALSE@am__EXEEXT_10 = \
+@MINGW_FALSE@am__EXEEXT_11 = \
@MINGW_FALSE@ test_transport_api_unreliability_unix$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_11 = \
+@HAVE_MHD_TRUE@am__EXEEXT_12 = \
@HAVE_MHD_TRUE@ test_transport_api_reliability_http$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_12 = test_transport_api_reliability_http_nat$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_13 = \
+@HAVE_MHD_TRUE@am__EXEEXT_13 = test_transport_api_reliability_http_nat$(EXEEXT)
+@HAVE_MHD_TRUE@am__EXEEXT_14 = \
@HAVE_MHD_TRUE@ test_transport_api_reliability_https$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_14 = test_transport_api_reliability_https_nat$(EXEEXT)
-@MINGW_FALSE@am__EXEEXT_15 = test_quota_compliance_unix$(EXEEXT) \
+@HAVE_MHD_TRUE@am__EXEEXT_15 = test_transport_api_reliability_https_nat$(EXEEXT)
+@MINGW_FALSE@am__EXEEXT_16 = test_quota_compliance_unix$(EXEEXT) \
@MINGW_FALSE@ test_quota_compliance_unix_asymmetric$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_16 = test_quota_compliance_http$(EXEEXT) \
+@HAVE_MHD_TRUE@am__EXEEXT_17 = test_quota_compliance_http$(EXEEXT) \
@HAVE_MHD_TRUE@ test_quota_compliance_http_asymmetric$(EXEEXT)
-@HAVE_MHD_TRUE@am__EXEEXT_17 = test_quota_compliance_https$(EXEEXT) \
+@HAVE_MHD_TRUE@am__EXEEXT_18 = test_quota_compliance_https$(EXEEXT) \
@HAVE_MHD_TRUE@ test_quota_compliance_https_asymmetric$(EXEEXT)
-@LINUX_TRUE@am__EXEEXT_18 = test_transport_api_wlan$(EXEEXT)
-@LINUX_TRUE@am__EXEEXT_19 = \
-@LINUX_TRUE@ test_transport_api_reliability_wlan$(EXEEXT)
+@LINUX_TRUE@am__EXEEXT_19 = test_transport_api_wlan$(EXEEXT)
@LINUX_TRUE@am__EXEEXT_20 = \
-@LINUX_TRUE@ test_transport_api_unreliability_wlan$(EXEEXT)
+@LINUX_TRUE@ test_transport_api_reliability_wlan$(EXEEXT)
@LINUX_TRUE@am__EXEEXT_21 = \
-@LINUX_TRUE@ gnunet-helper-transport-wlan-dummy$(EXEEXT)
+@LINUX_TRUE@ test_transport_api_unreliability_wlan$(EXEEXT)
@LINUX_TRUE@am__EXEEXT_22 = gnunet-transport-wlan-sender$(EXEEXT)
PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
am_gnunet_helper_transport_wlan_OBJECTS = \
@@ -947,6 +947,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INTLLIBS = @INTLLIBS@
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAVAPORT = @JAVAPORT@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBADD_DL = @LIBADD_DL@
@@ -980,6 +981,7 @@ LT_DLLOADERS = @LT_DLLOADERS@
LT_DLPREOPEN = @LT_DLPREOPEN@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
+MONKEYPREFIX = @MONKEYPREFIX@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
@@ -1169,7 +1171,7 @@ libgnunettransport_la_LIBADD = \
libgnunettransport_la_LDFLAGS = \
$(GN_LIB_LDFLAGS) $(WINFLAGS) \
- -version-info 0:0:0
+ -version-info 1:0:0
#bin_SCRIPTS = \
diff --git a/src/transport/gnunet-helper-transport-wlan-dummy.c b/src/transport/gnunet-helper-transport-wlan-dummy.c
index 6fff758..a7015ac 100644
--- a/src/transport/gnunet-helper-transport-wlan-dummy.c
+++ b/src/transport/gnunet-helper-transport-wlan-dummy.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- (C) 2010 Christian Grothoff (and other contributing authors)
+ (C) 2010, 2012 Christian Grothoff (and other contributing authors)
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -27,22 +27,60 @@
#include "gnunet_util_lib.h"
#include "plugin_transport_wlan.h"
-#define FIFO_FILE1 "/tmp/test-transport/api-wlan-p1/WLAN_FIFO_in"
-#define FIFO_FILE2 "/tmp/test-transport/api-wlan-p1/WLAN_FIFO_out"
+/**
+ * Name of the fifo to use for IPC with the other dummy process.
+ */
+#define FIFO_FILE1 "/tmp/test-transport/api-wlan-p1/WLAN_FIFO_in"
+
+/**
+ * Name of the fifo to use for IPC with the other dummy process.
+ */
+#define FIFO_FILE2 "/tmp/test-transport/api-wlan-p1/WLAN_FIFO_out"
+/**
+ * Maximum size of a message allowed in either direction
+ * (used for our receive and sent buffers).
+ */
#define MAXLINE 4096
-struct sendbuf
+
+/**
+ * IO buffer used for buffering data in transit.
+ */
+struct SendBuffer
{
- unsigned int pos;
- unsigned int size;
+
+ /**
+ * How many bytes that were stored in 'buf' did we already write to the
+ * destination? Always smaller than 'size'.
+ */
+ size_t pos;
+
+ /**
+ * How many bytes of data are stored in 'buf' for transmission right now?
+ * Data always starts at offset 0 and extends to 'size'.
+ */
+ size_t size;
+
+ /**
+ * Buffered data; twice the maximum allowed message size as we add some
+ * headers.
+ */
char buf[MAXLINE * 2];
};
-static int first;
+/**
+ * Flag set to 1 if we are to terminate, otherwise 0.
+ */
static int closeprog;
+
+/**
+ * We're being killed, clean up.
+ *
+ * @param sig killing signal
+ */
static void
sigfunc (int sig)
{
@@ -53,7 +91,8 @@ sigfunc (int sig)
/**
- * function to create GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL message for plugin
+ * Create control message for plugin
+ *
* @param buffer pointer to buffer for the message
* @param mac pointer to the mac address
* @return number of bytes written
@@ -67,83 +106,90 @@ send_mac_to_plugin (char *buffer, struct GNUNET_TRANSPORT_WLAN_MacAddress *mac)
memcpy (&macmsg.mac, (char *) mac, sizeof (struct GNUNET_TRANSPORT_WLAN_MacAddress));
macmsg.hdr.size = htons (sizeof (struct GNUNET_TRANSPORT_WLAN_HelperControlMessage));
macmsg.hdr.type = htons (GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL);
-
memcpy (buffer, &macmsg, sizeof (struct GNUNET_TRANSPORT_WLAN_HelperControlMessage));
return sizeof (struct GNUNET_TRANSPORT_WLAN_HelperControlMessage);
}
-static void
+
+/**
+ * We got a message from the FIFO, check it, convert the message
+ * type to the output forward and copy it to the buffer for stdout.
+ *
+ * @param cls the 'struct SendBuffer' to copy the converted message to
+ * @param client unused
+ * @param hdr inbound message from the FIFO
+ */
+static int
stdin_send (void *cls, void *client, const struct GNUNET_MessageHeader *hdr)
{
- struct sendbuf *write_pout = cls;
- int sendsize;
- struct GNUNET_MessageHeader newheader;
- char *to_data;
- char *to_radiotap;
- char *to_start;
-
- sendsize =
- ntohs (hdr->size) - sizeof (struct Radiotap_Send) +
- sizeof (struct Radiotap_rx);
-
- if (GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA != ntohs (hdr->type))
+ struct SendBuffer *write_pout = cls;
+ const struct GNUNET_TRANSPORT_WLAN_RadiotapSendMessage *in;
+ size_t payload_size;
+ struct GNUNET_TRANSPORT_WLAN_RadiotapReceiveMessage newheader;
+ uint16_t sendsize;
+
+ sendsize = ntohs (hdr->size);
+ in = (const struct GNUNET_TRANSPORT_WLAN_RadiotapSendMessage *) hdr;
+ if ( (GNUNET_MESSAGE_TYPE_WLAN_DATA_TO_HELPER != ntohs (hdr->type)) ||
+ (sizeof (struct GNUNET_TRANSPORT_WLAN_RadiotapSendMessage) > sendsize) )
{
- fprintf (stderr, "Function stdin_send: wrong packet type\n");
+ FPRINTF (stderr, "%s", "Received malformed message\n");
exit (1);
}
- if ((sendsize + write_pout->size) > MAXLINE * 2)
+ payload_size = sendsize - sizeof (struct GNUNET_TRANSPORT_WLAN_RadiotapSendMessage);
+ if ((payload_size + sizeof (struct GNUNET_TRANSPORT_WLAN_RadiotapReceiveMessage) + write_pout->size) > MAXLINE * 2)
{
- fprintf (stderr, "Function stdin_send: Packet too big for buffer\n");
+ FPRINTF (stderr, "%s", "Packet too big for buffer\n");
exit (1);
}
-
- newheader.size = htons (sendsize);
- newheader.type = htons (GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA);
-
- to_start = write_pout->buf + write_pout->size;
- memcpy (to_start, &newheader, sizeof (struct GNUNET_MessageHeader));
- write_pout->size += sizeof (struct GNUNET_MessageHeader);
-
- to_radiotap = to_start + sizeof (struct GNUNET_MessageHeader);
- memset (to_radiotap, 0, sizeof (struct Radiotap_rx));
- write_pout->size += sizeof (struct Radiotap_rx);
-
- to_data = to_radiotap + sizeof (struct Radiotap_rx);
- memcpy (to_data,
- ((char *) hdr) + sizeof (struct Radiotap_Send) +
- sizeof (struct GNUNET_MessageHeader),
- ntohs (hdr->size) - sizeof (struct Radiotap_Send) -
- sizeof (struct GNUNET_MessageHeader));
- write_pout->size +=
- ntohs (hdr->size) - sizeof (struct Radiotap_Send) -
- sizeof (struct GNUNET_MessageHeader);
+ memset (&newheader, 0, sizeof (newheader));
+ newheader.header.size = htons (payload_size + sizeof (newheader));
+ newheader.header.type = htons (GNUNET_MESSAGE_TYPE_WLAN_DATA_FROM_HELPER);
+ newheader.frame = in->frame;
+ memcpy (write_pout->buf + write_pout->size,
+ &newheader,
+ sizeof (newheader));
+ write_pout->size += sizeof (newheader);
+ memcpy (write_pout->buf + write_pout->size,
+ &in[1],
+ payload_size);
+ write_pout->size += payload_size;
+ return GNUNET_OK;
}
-static void
+/**
+ * We read a full message from stdin. Copy it to our send buffer.
+ *
+ * @param cls the 'struct SendBuffer' to copy to
+ * @param client unused
+ * @param hdr the message we received to copy to the buffer
+ */
+static int
file_in_send (void *cls, void *client, const struct GNUNET_MessageHeader *hdr)
{
- struct sendbuf *write_std = cls;
+ struct SendBuffer *write_std = cls;
uint16_t sendsize;
sendsize = ntohs (hdr->size);
-
- if (GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA != ntohs (hdr->type))
- {
- fprintf (stderr, "Function file_in_send: wrong packet type\n");
- exit (1);
- }
if ((sendsize + write_std->size) > MAXLINE * 2)
{
- fprintf (stderr, "Function file_in_send: Packet too big for buffer\n");
+ FPRINTF (stderr, "%s", "Packet too big for buffer\n");
exit (1);
}
-
memcpy (write_std->buf + write_std->size, hdr, sendsize);
write_std->size += sendsize;
+ return GNUNET_OK;
}
+/**
+ * Main function of a program that pretends to be a WLAN card.
+ *
+ * @param argc should be 2
+ * @param argv either '1' or '2', depending on which of the two cards this dummy is to emulate
+ * @return 1 on error, 0 if terminated normally via signal
+ */
int
main (int argc, char *argv[])
{
@@ -154,105 +200,104 @@ main (int argc, char *argv[])
int fdpin;
int fdpout;
char readbuf[MAXLINE];
- int readsize = 0;
- struct sendbuf write_std;
- struct sendbuf write_pout;
- int ret = 0;
- int maxfd = 0;
+ int readsize;
+ struct SendBuffer write_std;
+ struct SendBuffer write_pout;
+ int ret;
+ int maxfd;
fd_set rfds;
fd_set wfds;
struct timeval tv;
int retval;
- struct GNUNET_SERVER_MessageStreamTokenizer *stdin_mst;
- struct GNUNET_SERVER_MessageStreamTokenizer *file_in_mst;
+ struct GNUNET_SERVER_MessageStreamTokenizer *stdin_mst = NULL;
+ struct GNUNET_SERVER_MessageStreamTokenizer *file_in_mst = NULL;
struct GNUNET_TRANSPORT_WLAN_MacAddress macaddr;
+ int first;
- if (2 != argc)
+ if ( (2 != argc) ||
+ ((0 != strcmp (argv[1], "1")) && (0 != strcmp (argv[1], "2"))) )
{
- fprintf (stderr,
- "This program must be started with the operating mode (1 or 2) as the only argument.\n");
+ FPRINTF (stderr,
+ "%s",
+ "This program must be started with the operating mode (1 or 2) as the only argument.\n");
return 1;
}
- if ((0 != strstr (argv[1], "1")) && (0 != strstr (argv[1], "2")))
- return 1;
- //make the fifos if needed
- if (0 != stat (FIFO_FILE1, &st))
+ /* make the fifos if needed */
+ umask (0);
+ if ( (GNUNET_OK != GNUNET_DISK_directory_create_for_file (FIFO_FILE1)) ||
+ (GNUNET_OK != GNUNET_DISK_directory_create_for_file (FIFO_FILE2)) )
{
- if (0 == stat (FIFO_FILE2, &st))
- {
- fprintf (stderr, "FIFO_FILE2 exists, but FIFO_FILE1 not\n");
- exit (1);
- }
- umask (0);
- erg = mkfifo (FIFO_FILE1, 0666);
- if (0 != erg)