[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r17925 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r17925 - gnunet/src/transport |
Date: |
Wed, 2 Nov 2011 15:44:28 +0100 |
Author: brodski
Date: 2011-11-02 15:44:28 +0100 (Wed, 02 Nov 2011)
New Revision: 17925
Modified:
gnunet/src/transport/gnunet-transport-wlan-helper.c
gnunet/src/transport/gnunet_wlan_sender.c
gnunet/src/transport/plugin_transport_wlan.c
gnunet/src/transport/plugin_transport_wlan.h
Log:
Documantation and small fixes.
Modified: gnunet/src/transport/gnunet-transport-wlan-helper.c
===================================================================
--- gnunet/src/transport/gnunet-transport-wlan-helper.c 2011-11-02 14:34:27 UTC
(rev 17924)
+++ gnunet/src/transport/gnunet-transport-wlan-helper.c 2011-11-02 14:44:28 UTC
(rev 17925)
@@ -28,6 +28,10 @@
* gnunet
*/
+/**
+ * parts taken from aircrack-ng, parts changend.
+ */
+
#define _GNU_SOURCE
#include <sys/socket.h>
#include <sys/ioctl.h>
@@ -92,40 +96,6 @@
#define MAC_ADDR_SIZE 6
-//Part taken from file ieee80211.h
-/*-
- * Copyright (c) 2001 Atsushi Onoe
- * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD: src/sys/net80211/ieee80211.h,v 1.12 2006/12/01 18:40:51 imp Exp $
- */
#define IEEE80211_ADDR_LEN 6 /* size of 802.11 address */
@@ -144,13 +114,21 @@
/* see below */
} GNUNET_PACKED;
-// End taken part
-
+/**
+ * struct for storing the information of the hardware
+ */
struct Hardware_Infos
{
+ /**
+ * send buffer
+ */
struct sendbuf write_pout;
+ /**
+ * file descriptor for the raw socket
+ */
int fd_raw;
+
int arptype_in;
/**
@@ -173,6 +151,12 @@
getChannelFromFrequency (int frequency);
// FIXME: make nice...
+/**
+ * function to calculate the crc, the start of the calculation
+ * @param buf buffer to calc the crc
+ * @param len len of the buffer
+ * @return crc sum
+ */
static unsigned long
calc_crc_osdep (unsigned char *buf, int len)
{
@@ -187,7 +171,12 @@
/* CRC checksum verification routine */
// FIXME: make nice...
-// fixme doxigen
+/**
+ * Function to check crc of the wlan packet
+ * @param buf buffer of the packet
+ * @param len len of the data
+ * @return crc sum of the data
+ */
static int
check_crc_buf_osdep (unsigned char *buf, int len)
{
@@ -204,7 +193,11 @@
// FIXME: make nice...
-//fixme doxigen
+/**
+ * function to get the channel of a specific wlan card
+ * @param dev pointer to the dev struct of the card
+ * @return channel number
+ */
static int
linux_get_channel (struct Hardware_Infos *dev)
{
@@ -236,7 +229,14 @@
// FIXME: make nice...
-//FIXME doxigen
+/**
+ * function to read from a wlan card
+ * @param dev pointer to the struct of the wlan card
+ * @param buf buffer to read to
+ * @param buf_size size of the buffer
+ * @param ri radiotap_rx info
+ * @return size read from the buffer
+ */
static ssize_t
linux_read (struct Hardware_Infos *dev, unsigned char *buf, /* FIXME:
void*? */
size_t buf_size, struct Radiotap_rx *ri)
@@ -420,8 +420,9 @@
return caplen;
}
-//FIXME doxigen
/**
+ * function to open the device for read/write
+ * @param dev pointer to the device struct
* @return 0 on success
*/
static int
@@ -535,6 +536,9 @@
}
/**
+ * function to prepare the helper, e.g. sockets, device...
+ * @param dev struct for the device
+ * @param iface name of the interface
* @return 0 on success
*/
static int
@@ -615,7 +619,12 @@
}
-//FIXME: doxigen
+/**
+ * function to process the data from the stdin
+ * @param cls pointer to the device struct
+ * @param client not used
+ * @param hdr pointer to the start of the packet
+ */
static void
stdin_send_hw (void *cls, void *client, const struct GNUNET_MessageHeader *hdr)
{
@@ -676,6 +685,12 @@
}
#if 0
+/**
+ * Function to make test packets with special options
+ * @param buf buffer to write the data to
+ * @param dev device to send the data from
+ * @return size of packet (what should be send)
+ */
static int
maketest (unsigned char *buf, struct Hardware_Infos *dev)
{
@@ -756,28 +771,12 @@
/**
- * function to create GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL message for
plugin
- * @param buffer pointer to buffer for the message
- * @param mac pointer to the mac address
- * @return number of bytes written
+ * Function to start the hardware for the wlan helper
+ * @param argc number of arguments
+ * @param argv arguments
+ * @return returns one on error
*/
-// FIXME: use 'struct MacAddress' for 'mac' (everywhere in this file)
-/*
static int
-send_mac_to_plugin (char *buffer, struct MacAddress * mac)
-{
- struct Wlan_Helper_Control_Message macmsg;
-
- macmsg.hdr.size = htons (sizeof (struct Wlan_Helper_Control_Message));
- macmsg.hdr.type = htons (GNUNET_MESSAGE_TYPE_WLAN_HELPER_CONTROL);
- memcpy (macmsg.mac, mac, sizeof (struct MacAddress));
- memcpy (buffer, &macmsg, sizeof (struct Wlan_Helper_Control_Message));
- return sizeof (struct Wlan_Helper_Control_Message);
-}
-*/
-
-//FIXME: doxigen
-static int
hardwaremode (int argc, char *argv[])
{
uid_t uid;
@@ -938,6 +937,12 @@
return 1;
}
+/**
+ * main function of the helper
+ * @param argc number of arguments
+ * @param argv arguments
+ * @return 0 on success, 1 on error
+ */
int
main (int argc, char *argv[])
{
@@ -974,6 +979,8 @@
/**
* Return the frequency in Mhz from a channel number
+ * @param channel number of the channel
+ * @return frequency of the channel
*/
int
getFrequencyFromChannel (int channel)
@@ -1013,6 +1020,8 @@
/**
* Return the channel from the frequency (in Mhz)
+ * @param frequency of the channel
+ * @return number of the channel
*/
int
getChannelFromFrequency (int frequency)
Modified: gnunet/src/transport/gnunet_wlan_sender.c
===================================================================
--- gnunet/src/transport/gnunet_wlan_sender.c 2011-11-02 14:34:27 UTC (rev
17924)
+++ gnunet/src/transport/gnunet_wlan_sender.c 2011-11-02 14:44:28 UTC (rev
17925)
@@ -1,40 +1,40 @@
+/*
+ This file is part of GNUnet
+ (C) 2011 Christian Grothoff (and other contributing authors)
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
-#define WLAN_MTU 1500
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+/**
+ * @file transport/gnunet_wlan_sender.c
+ * @brief program to send via WLAN as much as possible
+ * @author David Brodski
+ */
+
#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#include <netpacket/packet.h>
-#include <linux/if_ether.h>
-#include <linux/if.h>
-#include <linux/wireless.h>
-#include <netinet/in.h>
-#include <linux/if_tun.h>
#include <stdio.h>
#include <stdlib.h>
+#include <netinet/in.h>
#include <string.h>
-#include <stdarg.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <dirent.h>
-//#include <sys/utsname.h>
-#include <sys/param.h>
-
#include <time.h>
-
-
#include "gnunet/gnunet_protocols.h"
#include "plugin_transport_wlan.h"
+#define WLAN_MTU 1500
+
/**
* LLC fields for better compatibility
*/
@@ -73,8 +73,6 @@
/**
* function to fill the radiotap header
- * @param plugin pointer to the plugin struct
- * @param endpoint pointer to the endpoint
* @param header pointer to the radiotap header
* @return GNUNET_YES at success
*/
@@ -93,8 +91,8 @@
/**
* function to generate the wlan hardware header for one packet
* @param Header address to write the header to
- * @param to_mac_addr address of the recipient
- * @param plugin pointer to the plugin struct
+ * @param to_mac_addr pointer to the address of the recipient
+ * @param mac pointer to the mac address to send from (normally overwritten
over by helper)
* @param size size of the whole packet, needed to calculate the time to send
the packet
* @return GNUNET_YES if there was no error
*/
@@ -118,45 +116,15 @@
Header->llc[0] = WLAN_LLC_DSAP_FIELD;
Header->llc[1] = WLAN_LLC_SSAP_FIELD;
-#if DEBUG_wlan_ip_udp_packets_on_air > 1
- uint crc = 0;
- uint16_t *x;
- int count;
-
- Header->ip.ip_dst.s_addr = *((uint32_t *) & to_mac_addr->mac[2]);
- Header->ip.ip_src.s_addr = *((uint32_t *) & plugin->mac_address.mac[2]);
- Header->ip.ip_v = 4;
- Header->ip.ip_hl = 5;
- Header->ip.ip_p = 17;
- Header->ip.ip_ttl = 1;
- Header->ip.ip_len = htons (size + 8);
- Header->ip.ip_sum = 0;
- x = (uint16_t *) & Header->ip;
- count = sizeof (struct iph);
- while (count > 1)
- {
- /* This is the inner loop */
- crc += (unsigned short) *x++;
- count -= 2;
- }
- /* Add left-over byte, if any */
- if (count > 0)
- crc += *(unsigned char *) x;
- crc = (crc & 0xffff) + (crc >> 16);
- Header->ip.ip_sum = htons (~(unsigned short) crc);
- Header->udp.len = htons (size - sizeof (struct ieee80211_frame));
-
-#endif
-
return GNUNET_YES;
}
int main(int argc, char *argv[]){
struct GNUNET_MessageHeader *msg;
- struct GNUNET_MessageHeader *msg2;
struct ieee80211_frame *wlan_header;
struct Radiotap_Send *radiotap;
+ unsigned int temp[6];
char inmac[6];
char outmac[6];
int pos;
@@ -164,19 +132,19 @@
double bytes_per_s;
time_t start;
time_t akt;
+ int i;
if (4 != argc) {
fprintf(
stderr,
"This program must be started with the
interface and the targets and source mac as argument.\nThis program was
compiled at ----- %s ----\n",
__TIMESTAMP__);
- fprintf(stderr, "Usage: interface-name mac-target mac-source\n"
"\n");
+ fprintf(stderr, "Usage: interface-name mac-target mac-source\n"
"e.g. mon0 11-22-33-44-55-66 12-34-56-78-90-ab\n");
return 1;
}
pid_t pid;
- int rv;
int commpipe[2]; /* This holds the fd for the input &
output of the pipe */
/* Setup communication pipeline first */
@@ -193,12 +161,17 @@
if(pid){
/* A positive (non-negative) PID indicates the parent process */
- //dup2(commpipe[1],1); /* Replace stdout with out side of the
pipe */
close(commpipe[0]); /* Close unused side of pipe
(in side) */
setvbuf(stdout,(char*)NULL,_IONBF,0); /* Set non-buffered
output on stdout */
- sscanf(argv[3], "%x-%x-%x-%x-%x-%x",
&inmac[0],&inmac[1],&inmac[2],&inmac[3],&inmac[4],&inmac[5]);
- sscanf(argv[2], "%x-%x-%x-%x-%x-%x",
&outmac[0],&outmac[1],&outmac[2],&outmac[3],&outmac[4],&outmac[5]);
+ sscanf(argv[3], "%x-%x-%x-%x-%x-%x",
&temp[0],&temp[1],&temp[2],&temp[3],&temp[4],&temp[5]);
+ for (i = 0; i < 6; i++){
+ inmac[i] = temp[i];
+ }
+ sscanf(argv[2], "%x-%x-%x-%x-%x-%x",
&temp[0],&temp[1],&temp[2],&temp[3],&temp[4],&temp[5]);
+ for (i = 0; i < 6; i++){
+ outmac[i] = temp[i];
+ }
msg = malloc(WLAN_MTU);
msg->type = htons (GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA);
@@ -226,16 +199,6 @@
}
}
- /*
- sleep(2);
- printf("Hello\n");
- sleep(2);
- printf("Goodbye\n");
- sleep(2);
- printf("exit\n");
- */
- //wait(&rv); /* Wait for child
process to end */
- //fprintf(stderr,"Child exited with a %d value\n",rv);
}
else{
/* A zero PID indicates that this is the child process */
@@ -243,7 +206,7 @@
close(commpipe[1]); /* Close unused side of pipe
(out side) */
/* Replace the child fork with a new process */
if(execl("gnunet-transport-wlan-helper","gnunet-transport-wlan-helper",
argv[1], NULL) == -1){
- fprintf(stderr,"execl Error!");
+ fprintf(stderr,"Could not start
gnunet-transport-wlan-helper!");
exit(1);
}
}
Modified: gnunet/src/transport/plugin_transport_wlan.c
===================================================================
--- gnunet/src/transport/plugin_transport_wlan.c 2011-11-02 14:34:27 UTC
(rev 17924)
+++ gnunet/src/transport/plugin_transport_wlan.c 2011-11-02 14:44:28 UTC
(rev 17925)
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet
- (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Christian Grothoff (and
other contributing authors)
+ (C) 2010 2011 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
@@ -1234,6 +1234,7 @@
(session->mac->fragment_messages_out_count)--;
session->fragment_messages_out_count--;
plugin->pending_Fragment_Messages--;
+ GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan pending fragments"),
plugin->pending_Fragment_Messages, GNUNET_NO);
GNUNET_CONTAINER_DLL_remove (endpoint->sending_messages_head,
endpoint->sending_messages_tail, fm);
GNUNET_FRAGMENT_context_destroy (fm->fragcontext);
@@ -1396,7 +1397,7 @@
uint16_t size;
#if DEBUG_wlan_retransmission > 1
- GNUNET_loHELLO_BEACON_SCALING_FACTORg_from (GNUNET_ERROR_TYPE_DEBUG,
PLUGIN_LOG_NAME,
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME,
"Adding fragment of message %p to send, session %p,
endpoint %p, type %u\n",
fm, fm->session, endpoint, hdr->type);
#endif
@@ -1933,6 +1934,7 @@
session->mac->fragment_messages_out_count++;
session->fragment_messages_out_count++;
plugin->pending_Fragment_Messages++;
+ GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan pending fragments"),
plugin->pending_Fragment_Messages, GNUNET_NO);
fm = GNUNET_malloc (sizeof (struct FragmentMessage));
fm->session = session;
@@ -2704,7 +2706,7 @@
* @param cls the plugin handle
* @param session_light pointer to the struct holding known informations
* @param hdr hdr of the GNUNET_MessageHeader
- * @param rxinfo pointer to the radiotap informations got with this packet
+ * @param rxinfo pointer to the radiotap informations got with this packet
FIXME: give ATS for info
*/
static void
wlan_data_helper (void *cls, struct Session_light *session_light,
@@ -3059,7 +3061,7 @@
memcpy (&session_light->addr, &(wlanIeeeHeader->i_addr2),
sizeof (struct MacAddress));
//session_light->session = search_session(plugin,session_light->addr);
- GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan messaged for
this client received"), 1, GNUNET_NO);
+ GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan messages for
this client received"), 1, GNUNET_NO);
pos = 0;
while (pos < datasize)
@@ -3067,7 +3069,7 @@
temp_hdr = (struct GNUNET_MessageHeader *) &wlanIeeeHeader[1] + pos;
if (ntohs(temp_hdr->size) <= datasize + pos)
{
- GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan messaged
inside WLAN_HELPER_DATA received"), 1, GNUNET_NO);
+ GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan messages
inside WLAN_HELPER_DATA received"), 1, GNUNET_NO);
wlan_data_helper (plugin, session_light, temp_hdr, rxinfo);
}
else
Modified: gnunet/src/transport/plugin_transport_wlan.h
===================================================================
--- gnunet/src/transport/plugin_transport_wlan.h 2011-11-02 14:34:27 UTC
(rev 17924)
+++ gnunet/src/transport/plugin_transport_wlan.h 2011-11-02 14:44:28 UTC
(rev 17925)
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet
- (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Christian Grothoff (and
other contributing authors)
+ (C) 2010, 2011 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
@@ -133,18 +133,40 @@
#define has_channel 4
/**
- * struct to represent infos gathered form the radiotap fields
+ * struct to represent infos gathered form the radiotap fields, see
RadiotapHeader for more Infos
*/
struct Radiotap_rx
{
uint32_t ri_present;
+ /**
+ * IEEE80211_RADIOTAP_TSFT
+ */
uint64_t ri_mactime;
+ /**
+ * from radiotap
+ * either IEEE80211_RADIOTAP_DBM_ANTSIGNAL
+ * or IEEE80211_RADIOTAP_DB_ANTSIGNAL
+ */
int32_t ri_power;
+ /**
+ * either IEEE80211_RADIOTAP_DBM_ANTNOISE
+ * or IEEE80211_RADIOTAP_DB_ANTNOISE
+ */
int32_t ri_noise;
+ /**
+ * IEEE80211_RADIOTAP_CHANNEL
+ */
uint32_t ri_channel;
+
uint32_t ri_freq;
+ /**
+ * IEEE80211_RADIOTAP_RATE * 50000
+ */
uint32_t ri_rate;
+ /**
+ * IEEE80211_RADIOTAP_ANTENNA
+ */
uint32_t ri_antenna;
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r17925 - gnunet/src/transport,
gnunet <=