aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-12-11 15:31:47 +0000
committerChristian Grothoff <christian@grothoff.org>2011-12-11 15:31:47 +0000
commit2a80e31499ae4b7d2dcdbdcac7a3604c42b357f7 (patch)
tree4712323ff418b56ab05b714d6752322c9d7a9b36
parentf8ae79bdfd193320a1db1ff3ead82c5e19d5d4e6 (diff)
downloadgnunet-2a80e31499ae4b7d2dcdbdcac7a3604c42b357f7.tar.gz
gnunet-2a80e31499ae4b7d2dcdbdcac7a3604c42b357f7.zip
-more minor cleanup
-rw-r--r--src/transport/Makefile.am8
-rw-r--r--src/transport/gnunet-transport-wlan-helper-dummy.c8
-rw-r--r--src/transport/gnunet-transport-wlan-helper.c25
-rw-r--r--src/transport/gnunet-transport-wlan-sender.c (renamed from src/transport/gnunet_wlan_sender.c)37
-rw-r--r--src/transport/plugin_transport_wlan.c75
-rw-r--r--src/transport/plugin_transport_wlan.h4
6 files changed, 38 insertions, 119 deletions
diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am
index 6901f6b4d..f1f70acfe 100644
--- a/src/transport/Makefile.am
+++ b/src/transport/Makefile.am
@@ -35,7 +35,7 @@ endif
35if LINUX 35if LINUX
36 WLAN_BIN = gnunet-transport-wlan-helper 36 WLAN_BIN = gnunet-transport-wlan-helper
37 WLAN_BIN_DUMMY = gnunet-transport-wlan-helper-dummy 37 WLAN_BIN_DUMMY = gnunet-transport-wlan-helper-dummy
38 WLAN_BIN_SENDER = gnunet_wlan_sender 38 WLAN_BIN_SENDER = gnunet-transport-wlan-sender
39 WLAN_PLUGIN_LA = libgnunet_plugin_transport_wlan.la 39 WLAN_PLUGIN_LA = libgnunet_plugin_transport_wlan.la
40 WLAN_API_TEST = test_transport_api_wlan 40 WLAN_API_TEST = test_transport_api_wlan
41 WLAN_REL_TEST = test_transport_api_reliability_wlan 41 WLAN_REL_TEST = test_transport_api_reliability_wlan
@@ -115,9 +115,9 @@ gnunet_transport_wlan_helper_dummy_SOURCES = \
115gnunet_transport_wlan_helper_dummy_LDADD = \ 115gnunet_transport_wlan_helper_dummy_LDADD = \
116 $(top_builddir)/src/util/libgnunetutil.la 116 $(top_builddir)/src/util/libgnunetutil.la
117 117
118gnunet_wlan_sender_SOURCES = \ 118gnunet_transport_wlan_sender_SOURCES = \
119 gnunet_wlan_sender.c 119 gnunet-transport-wlan-sender.c
120gnunet_wlan_sender_LDADD = \ 120gnunet_transport_wlan_sender_LDADD = \
121 $(top_builddir)/src/util/libgnunetutil.la 121 $(top_builddir)/src/util/libgnunetutil.la
122 122
123gnunet_transport_SOURCES = \ 123gnunet_transport_SOURCES = \
diff --git a/src/transport/gnunet-transport-wlan-helper-dummy.c b/src/transport/gnunet-transport-wlan-helper-dummy.c
index 32d58426c..f456c3f60 100644
--- a/src/transport/gnunet-transport-wlan-helper-dummy.c
+++ b/src/transport/gnunet-transport-wlan-helper-dummy.c
@@ -62,14 +62,14 @@ static int
62send_mac_to_plugin (char *buffer, struct MacAddress *mac) 62send_mac_to_plugin (char *buffer, struct MacAddress *mac)
63{ 63{
64 64
65 struct Wlan_Helper_Control_Message macmsg; 65 struct GNUNET_TRANSPORT_WLAN_HelperControlMessage macmsg;
66 66
67 memcpy (&macmsg.mac, (char *) mac, sizeof (struct MacAddress)); 67 memcpy (&macmsg.mac, (char *) mac, sizeof (struct MacAddress));
68 macmsg.hdr.size = htons (sizeof (struct Wlan_Helper_Control_Message)); 68 macmsg.hdr.size = htons (sizeof (struct GNUNET_TRANSPORT_WLAN_HelperControlMessage));
69 macmsg.hdr.type = htons (GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL); 69 macmsg.hdr.type = htons (GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL);
70 70
71 memcpy (buffer, &macmsg, sizeof (struct Wlan_Helper_Control_Message)); 71 memcpy (buffer, &macmsg, sizeof (struct GNUNET_TRANSPORT_WLAN_HelperControlMessage));
72 return sizeof (struct Wlan_Helper_Control_Message); 72 return sizeof (struct GNUNET_TRANSPORT_WLAN_HelperControlMessage);
73} 73}
74 74
75static void 75static void
diff --git a/src/transport/gnunet-transport-wlan-helper.c b/src/transport/gnunet-transport-wlan-helper.c
index 1f56830bc..5cfbef8e8 100644
--- a/src/transport/gnunet-transport-wlan-helper.c
+++ b/src/transport/gnunet-transport-wlan-helper.c
@@ -352,9 +352,10 @@ struct HardwareInfos
352{ 352{
353 353
354 /** 354 /**
355 * send buffer 355 * send buffer
356 */ 356 */
357 struct SendBuffer write_pout; 357 struct SendBuffer write_pout;
358
358 /** 359 /**
359 * file descriptor for the raw socket 360 * file descriptor for the raw socket
360 */ 361 */
@@ -928,13 +929,13 @@ next_entry:
928static int 929static int
929send_mac_to_plugin (char *buffer, struct MacAddress *mac) 930send_mac_to_plugin (char *buffer, struct MacAddress *mac)
930{ 931{
931 struct Wlan_Helper_Control_Message macmsg; 932 struct GNUNET_TRANSPORT_WLAN_HelperControlMessage macmsg;
932 933
933 memcpy (&macmsg.mac, (char *) mac, sizeof (struct MacAddress)); 934 memcpy (&macmsg.mac, (char *) mac, sizeof (struct MacAddress));
934 macmsg.hdr.size = htons (sizeof (struct Wlan_Helper_Control_Message)); 935 macmsg.hdr.size = htons (sizeof (struct GNUNET_TRANSPORT_WLAN_HelperControlMessage));
935 macmsg.hdr.type = htons (GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL); 936 macmsg.hdr.type = htons (GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL);
936 memcpy (buffer, &macmsg, sizeof (struct Wlan_Helper_Control_Message)); 937 memcpy (buffer, &macmsg, sizeof (struct GNUNET_TRANSPORT_WLAN_HelperControlMessage));
937 return sizeof (struct Wlan_Helper_Control_Message); 938 return sizeof (struct GNUNET_TRANSPORT_WLAN_HelperControlMessage);
938} 939}
939 940
940 941
@@ -1078,7 +1079,7 @@ linux_get_channel (const struct HardwareInfos *dev)
1078 strncpy (wrq.ifr_name, dev->iface, IFNAMSIZ); 1079 strncpy (wrq.ifr_name, dev->iface, IFNAMSIZ);
1079 fd = dev->fd_raw; 1080 fd = dev->fd_raw;
1080 if (0 > ioctl (fd, SIOCGIWFREQ, &wrq)) 1081 if (0 > ioctl (fd, SIOCGIWFREQ, &wrq))
1081 return (-1); 1082 return -1;
1082 1083
1083 frequency = wrq.u.freq.m; 1084 frequency = wrq.u.freq.m;
1084 if (100000000 < frequency) 1085 if (100000000 < frequency)
@@ -1151,8 +1152,8 @@ linux_read (struct HardwareInfos *dev, unsigned char *buf, size_t buf_size,
1151 n = *(int *) (tmpbuf + 4); 1152 n = *(int *) (tmpbuf + 4);
1152 } 1153 }
1153 1154
1154 if (n < 8 || n >= caplen) 1155 if ( (n < 8) || (n >= caplen) )
1155 return (0); 1156 return 0;
1156 } 1157 }
1157 break; 1158 break;
1158 1159
@@ -1164,7 +1165,7 @@ linux_read (struct HardwareInfos *dev, unsigned char *buf, size_t buf_size,
1164 rthdr = (struct ieee80211_radiotap_header *) tmpbuf; 1165 rthdr = (struct ieee80211_radiotap_header *) tmpbuf;
1165 1166
1166 if (ieee80211_radiotap_iterator_init (&iterator, rthdr, caplen) < 0) 1167 if (ieee80211_radiotap_iterator_init (&iterator, rthdr, caplen) < 0)
1167 return (0); 1168 return 0;
1168 1169
1169 /* go through the radiotap arguments we have been given 1170 /* go through the radiotap arguments we have been given
1170 * by the driver 1171 * by the driver
@@ -1456,7 +1457,7 @@ static int
1456mac_test (const struct ieee80211_frame *uint8_taIeeeHeader, 1457mac_test (const struct ieee80211_frame *uint8_taIeeeHeader,
1457 const struct HardwareInfos *dev) 1458 const struct HardwareInfos *dev)
1458{ 1459{
1459 if (0 != memcmp (uint8_taIeeeHeader->i_addr3, &mac_bssid, MAC_ADDR_SIZE)) 1460 if (0 != memcmp (uint8_taIeeeHeader->i_addr3, &mac_bssid_gnunet, MAC_ADDR_SIZE))
1460 return 1; 1461 return 1;
1461 if (0 == memcmp (uint8_taIeeeHeader->i_addr1, &dev->pl_mac, MAC_ADDR_SIZE)) 1462 if (0 == memcmp (uint8_taIeeeHeader->i_addr1, &dev->pl_mac, MAC_ADDR_SIZE))
1462 return 0; 1463 return 0;
@@ -1478,7 +1479,7 @@ mac_set (struct ieee80211_frame *uint8_taIeeeHeader,
1478 uint8_taIeeeHeader->i_fc[0] = 0x08; 1479 uint8_taIeeeHeader->i_fc[0] = 0x08;
1479 uint8_taIeeeHeader->i_fc[1] = 0x00; 1480 uint8_taIeeeHeader->i_fc[1] = 0x00;
1480 memcpy (uint8_taIeeeHeader->i_addr2, &dev->pl_mac, MAC_ADDR_SIZE); 1481 memcpy (uint8_taIeeeHeader->i_addr2, &dev->pl_mac, MAC_ADDR_SIZE);
1481 memcpy (uint8_taIeeeHeader->i_addr3, &mac_bssid, MAC_ADDR_SIZE); 1482 memcpy (uint8_taIeeeHeader->i_addr3, &mac_bssid_gnunet, MAC_ADDR_SIZE);
1482} 1483}
1483 1484
1484 1485
diff --git a/src/transport/gnunet_wlan_sender.c b/src/transport/gnunet-transport-wlan-sender.c
index db9d74483..69c4963ed 100644
--- a/src/transport/gnunet_wlan_sender.c
+++ b/src/transport/gnunet-transport-wlan-sender.c
@@ -19,18 +19,11 @@
19 */ 19 */
20 20
21/** 21/**
22 * @file transport/gnunet_wlan_sender.c 22 * @file transport/gnunet-transport-wlan-sender.c
23 * @brief program to send via WLAN as much as possible (to test physical/theoretical throughput) 23 * @brief program to send via WLAN as much as possible (to test physical/theoretical throughput)
24 * @author David Brodski 24 * @author David Brodski
25 */ 25 */
26 26#include "platform.h"
27#include <unistd.h>
28#include <stdio.h>
29#include <stdlib.h>
30#include <netinet/in.h>
31#include <string.h>
32#include <time.h>
33#include <errno.h>
34#include "gnunet_protocols.h" 27#include "gnunet_protocols.h"
35#include "plugin_transport_wlan.h" 28#include "plugin_transport_wlan.h"
36 29
@@ -66,12 +59,9 @@ struct ieee80211_frame
66 u_int8_t i_addr3[IEEE80211_ADDR_LEN]; 59 u_int8_t i_addr3[IEEE80211_ADDR_LEN];
67 u_int8_t i_seq[2]; 60 u_int8_t i_seq[2];
68 u_int8_t llc[4]; 61 u_int8_t llc[4];
69#if DEBUG_wlan_ip_udp_packets_on_air > 1
70 struct iph ip;
71 struct udphdr udp;
72#endif
73} GNUNET_PACKED; 62} GNUNET_PACKED;
74 63
64
75/** 65/**
76 * function to fill the radiotap header 66 * function to fill the radiotap header
77 * @param header pointer to the radiotap header 67 * @param header pointer to the radiotap header
@@ -80,8 +70,6 @@ struct ieee80211_frame
80static int 70static int
81getRadiotapHeader (struct Radiotap_Send *header) 71getRadiotapHeader (struct Radiotap_Send *header)
82{ 72{
83
84
85 header->rate = 255; 73 header->rate = 255;
86 header->tx_power = 0; 74 header->tx_power = 0;
87 header->antenna = 0; 75 header->antenna = 0;
@@ -106,9 +94,9 @@ getWlanHeader (struct ieee80211_frame *Header, const char *to_mac_addr,
106 94
107 Header->i_fc[0] = IEEE80211_FC0_TYPE_DATA; 95 Header->i_fc[0] = IEEE80211_FC0_TYPE_DATA;
108 Header->i_fc[1] = 0x00; 96 Header->i_fc[1] = 0x00;
109 memcpy (&Header->i_addr3, &mac_bssid, sizeof (mac_bssid)); 97 memcpy (&Header->i_addr3, &mac_bssid_gnunet, sizeof (mac_bssid_gnunet));
110 memcpy (&Header->i_addr2, mac, sizeof (mac_bssid)); 98 memcpy (&Header->i_addr2, mac, sizeof (mac_bssid_gnunet));
111 memcpy (&Header->i_addr1, to_mac_addr, sizeof (mac_bssid)); 99 memcpy (&Header->i_addr1, to_mac_addr, sizeof (mac_bssid_gnunet));
112 100
113 tmp16 = (uint16_t *) Header->i_dur; 101 tmp16 = (uint16_t *) Header->i_dur;
114 *tmp16 = (uint16_t) GNUNET_htole16 ((size * 1000000) / rate + 290); 102 *tmp16 = (uint16_t) GNUNET_htole16 ((size * 1000000) / rate + 290);
@@ -118,6 +106,7 @@ getWlanHeader (struct ieee80211_frame *Header, const char *to_mac_addr,
118 return GNUNET_YES; 106 return GNUNET_YES;
119} 107}
120 108
109
121int 110int
122main (int argc, char *argv[]) 111main (int argc, char *argv[])
123{ 112{
@@ -164,14 +153,9 @@ main (int argc, char *argv[])
164 return 1; 153 return 1;
165 } 154 }
166 for (i = 0; i < 6; i++) 155 for (i = 0; i < 6; i++)
167 {
168 inmac[i] = temp[i]; 156 inmac[i] = temp[i];
169 }
170 for (i = 0; i < 6; i++) 157 for (i = 0; i < 6; i++)
171 {
172 outmac[i] = temp[i]; 158 outmac[i] = temp[i];
173 }
174
175 159
176 pid_t pid; 160 pid_t pid;
177 int commpipe[2]; /* This holds the fd for the input & output of the pipe */ 161 int commpipe[2]; /* This holds the fd for the input & output of the pipe */
@@ -179,14 +163,17 @@ main (int argc, char *argv[])
179 /* Setup communication pipeline first */ 163 /* Setup communication pipeline first */
180 if (pipe (commpipe)) 164 if (pipe (commpipe))
181 { 165 {
182 fprintf (stderr, "Pipe error!\n"); 166 fprintf (stderr,
167 "Failed to create pipe: %s\n",
168 STRERROR (errno));
183 exit (1); 169 exit (1);
184 } 170 }
185 171
186 /* Attempt to fork and check for errors */ 172 /* Attempt to fork and check for errors */
187 if ((pid = fork ()) == -1) 173 if ((pid = fork ()) == -1)
188 { 174 {
189 fprintf (stderr, "Fork error. Exiting.\n"); /* something went wrong */ 175 fprintf (stderr, "Failed to fork: %s\n",
176 STRERROR (errno));
190 exit (1); 177 exit (1);
191 } 178 }
192 179
diff --git a/src/transport/plugin_transport_wlan.c b/src/transport/plugin_transport_wlan.c
index e2af0da36..d7b061d70 100644
--- a/src/transport/plugin_transport_wlan.c
+++ b/src/transport/plugin_transport_wlan.c
@@ -121,41 +121,6 @@
121#define IEEE80211_FC0_TYPE_DATA 0x08 121#define IEEE80211_FC0_TYPE_DATA 0x08
122 122
123/* 123/*
124 * Structure of an internet header, naked of options.
125 */
126struct iph
127{
128#if __BYTE_ORDER == __LITTLE_ENDIAN
129 unsigned int ip_hl:4; /* header length */
130 unsigned int ip_v:4; /* version */
131#endif
132#if __BYTE_ORDER == __BIG_ENDIAN
133 unsigned int ip_v:4; /* version */
134 unsigned int ip_hl:4; /* header length */
135#endif
136 u_int8_t ip_tos; /* type of service */
137 u_short ip_len; /* total length */
138 u_short ip_id; /* identification */
139 u_short ip_off; /* fragment offset field */
140#define IP_RF 0x8000 /* reserved fragment flag */
141#define IP_DF 0x4000 /* dont fragment flag */
142#define IP_MF 0x2000 /* more fragments flag */
143#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
144 u_int8_t ip_ttl; /* time to live */
145 u_int8_t ip_p; /* protocol */
146 u_short ip_sum; /* checksum */
147 struct in_addr ip_src, ip_dst; /* source and dest address */
148};
149
150struct udphdr
151{
152 u_int16_t source;
153 u_int16_t dest;
154 u_int16_t len;
155 u_int16_t check;
156};
157
158/*
159 * generic definitions for IEEE 802.11 frames 124 * generic definitions for IEEE 802.11 frames
160 */ 125 */
161struct ieee80211_frame 126struct ieee80211_frame
@@ -167,10 +132,6 @@ struct ieee80211_frame
167 u_int8_t i_addr3[IEEE80211_ADDR_LEN]; 132 u_int8_t i_addr3[IEEE80211_ADDR_LEN];
168 u_int8_t i_seq[2]; 133 u_int8_t i_seq[2];
169 u_int8_t llc[4]; 134 u_int8_t llc[4];
170#if DEBUG_wlan_ip_udp_packets_on_air > 1
171 struct iph ip;
172 struct udphdr udp;
173#endif
174} GNUNET_PACKED; 135} GNUNET_PACKED;
175 136
176/** 137/**
@@ -1344,7 +1305,7 @@ getWlanHeader (struct ieee80211_frame *Header,
1344 1305
1345 Header->i_fc[0] = IEEE80211_FC0_TYPE_DATA; 1306 Header->i_fc[0] = IEEE80211_FC0_TYPE_DATA;
1346 Header->i_fc[1] = 0x00; 1307 Header->i_fc[1] = 0x00;
1347 memcpy (&Header->i_addr3, &mac_bssid, sizeof (mac_bssid)); 1308 memcpy (&Header->i_addr3, &mac_bssid_gnunet, sizeof (mac_bssid_gnunet));
1348 memcpy (&Header->i_addr2, plugin->mac_address.mac, 1309 memcpy (&Header->i_addr2, plugin->mac_address.mac,
1349 sizeof (plugin->mac_address)); 1310 sizeof (plugin->mac_address));
1350 memcpy (&Header->i_addr1, to_mac_addr, sizeof (struct MacAddress)); 1311 memcpy (&Header->i_addr1, to_mac_addr, sizeof (struct MacAddress));
@@ -1354,36 +1315,6 @@ getWlanHeader (struct ieee80211_frame *Header,
1354 Header->llc[0] = WLAN_LLC_DSAP_FIELD; 1315 Header->llc[0] = WLAN_LLC_DSAP_FIELD;
1355 Header->llc[1] = WLAN_LLC_SSAP_FIELD; 1316 Header->llc[1] = WLAN_LLC_SSAP_FIELD;
1356 1317
1357#if DEBUG_wlan_ip_udp_packets_on_air > 1
1358 uint crc = 0;
1359 uint16_t *x;
1360 int count;
1361
1362 Header->ip.ip_dst.s_addr = *((uint32_t *) & to_mac_addr->mac[2]);
1363 Header->ip.ip_src.s_addr = *((uint32_t *) & plugin->mac_address.mac[2]);
1364 Header->ip.ip_v = 4;
1365 Header->ip.ip_hl = 5;
1366 Header->ip.ip_p = 17;
1367 Header->ip.ip_ttl = 1;
1368 Header->ip.ip_len = htons (size + 8);
1369 Header->ip.ip_sum = 0;
1370 x = (uint16_t *) & Header->ip;
1371 count = sizeof (struct iph);
1372 while (count > 1)
1373 {
1374 /* This is the inner loop */
1375 crc += (unsigned short) *x++;
1376 count -= 2;
1377 }
1378 /* Add left-over byte, if any */
1379 if (count > 0)
1380 crc += *(unsigned char *) x;
1381 crc = (crc & 0xffff) + (crc >> 16);
1382 Header->ip.ip_sum = htons (~(unsigned short) crc);
1383 Header->udp.len = htons (size - sizeof (struct ieee80211_frame));
1384
1385#endif
1386
1387 return GNUNET_YES; 1318 return GNUNET_YES;
1388} 1319}
1389 1320
@@ -3124,7 +3055,7 @@ wlan_process_helper (void *cls, void *client,
3124 3055
3125 //check for bssid 3056 //check for bssid
3126 if (memcmp 3057 if (memcmp
3127 (&(wlanIeeeHeader->i_addr3), &mac_bssid, 3058 (&(wlanIeeeHeader->i_addr3), &mac_bssid_gnunet,
3128 sizeof (struct MacAddress)) == 0) 3059 sizeof (struct MacAddress)) == 0)
3129 { 3060 {
3130 //check for broadcast or mac 3061 //check for broadcast or mac
@@ -3204,7 +3135,7 @@ wlan_process_helper (void *cls, void *client,
3204 break; 3135 break;
3205 case GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL: 3136 case GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL:
3206 //TODO more control messages 3137 //TODO more control messages
3207 if (ntohs (hdr->size) != sizeof (struct Wlan_Helper_Control_Message)) 3138 if (ntohs (hdr->size) != sizeof (struct GNUNET_TRANSPORT_WLAN_HelperControlMessage))
3208 { 3139 {
3209 GNUNET_break (0); 3140 GNUNET_break (0);
3210 /* FIXME: restart SUID process */ 3141 /* FIXME: restart SUID process */
diff --git a/src/transport/plugin_transport_wlan.h b/src/transport/plugin_transport_wlan.h
index 5a88cb836..35b23fd44 100644
--- a/src/transport/plugin_transport_wlan.h
+++ b/src/transport/plugin_transport_wlan.h
@@ -46,7 +46,7 @@ struct MacAddress
46/** 46/**
47 * Format of a WLAN Control Message. 47 * Format of a WLAN Control Message.
48 */ 48 */
49struct Wlan_Helper_Control_Message 49struct GNUNET_TRANSPORT_WLAN_HelperControlMessage
50{ 50{
51 /** 51 /**
52 * Message header. FIXME: type? 52 * Message header. FIXME: type?
@@ -63,7 +63,7 @@ struct Wlan_Helper_Control_Message
63/** 63/**
64 * GNUnet bssid 64 * GNUnet bssid
65 */ 65 */
66static const struct MacAddress mac_bssid = { 66static const struct MacAddress mac_bssid_gnunet = {
67 {0x13, 0x22, 0x33, 0x44, 0x55, 0x66} 67 {0x13, 0x22, 0x33, 0x44, 0x55, 0x66}
68}; 68};
69 69