gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r13077 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r13077 - gnunet/src/transport
Date: Fri, 24 Sep 2010 10:44:05 +0200

Author: grothoff
Date: 2010-09-24 10:44:05 +0200 (Fri, 24 Sep 2010)
New Revision: 13077

Modified:
   gnunet/src/transport/plugin_transport_wlan.c
   gnunet/src/transport/plugin_transport_wlan.h
Log:
fixing warnings

Modified: gnunet/src/transport/plugin_transport_wlan.c
===================================================================
--- gnunet/src/transport/plugin_transport_wlan.c        2010-09-24 08:17:07 UTC 
(rev 13076)
+++ gnunet/src/transport/plugin_transport_wlan.c        2010-09-24 08:44:05 UTC 
(rev 13077)
@@ -34,6 +34,10 @@
 #include "gnunet_common.h"
 
 #define PROTOCOL_PREFIX "wlan"
+
+/**
+ * Max size of packet from helper
+ */
 #define WLAN_MTU 3000
 
 #define DEBUG_wlan GNUNET_NO
@@ -183,7 +187,7 @@
    * To whom are we talking to (set to our identity
    * if we are still waiting for the welcome message)
    */
-  struct GNUNET_PeerIdentity * target;
+  struct GNUNET_PeerIdentity target;
 
   /**
    * encapsulation of the data
@@ -247,7 +251,6 @@
    */
   const char *msg;
 
-
   /**
    * Continuation function to call once the message
    * has been sent.  Can be NULL if there is no
@@ -281,54 +284,71 @@
 /**
  * Header for messages which need fragmentation
  */
+struct WlanHeader
+{
 
+  struct GNUNET_MessageHeader header;
+
+  /**
+   * checksum/error correction
+   */
+  uint32_t crc GNUNET_PACKED;
+
+  /**
+   * To whom are we talking to (set to our identity
+   * if we are still waiting for the welcome message)
+   */
+  struct GNUNET_PeerIdentity target;
+
+  // followed by payload
+
+};
+
+/**
+ * Header for messages which need fragmentation
+ */
 struct FragmentationHeader
 {
 
+  struct GNUNET_MessageHeader header;
+
   /**
    * To whom are we talking to (set to our identity
    * if we are still waiting for the welcome message)
    */
-  struct GNUNET_PeerIdentity * target GNUNET_PACKED;
+  // struct GNUNET_PeerIdentity target GNUNET_PACKED;
 
   /**
-   * number of message, to distinguish between the messages
+   * ID of message, to distinguish between the messages, picked randomly.
    */
+  uint32_t message_id GNUNET_PACKED;
 
-  uint16_t message_num GNUNET_PACKED;
-
   /**
    * number of this fragment, for fragmentation/segmentation
    */
-  uint16_t fregment_num GNUNET_PACKED;
+  uint16_t fragment_num GNUNET_PACKED;
 
-
   /**
-   * number of fregments in this message
+   * CRC of fragment (for error checking)
    */
-  uint16_t ack_message_num GNUNET_PACKED;
+  uint16_t message_crc GNUNET_PACKED;
 
   /**
-   * number of this fragment, for fragmentation/segmentation
-   */
-  uint16_t ack_fregment_num GNUNET_PACKED;
-
-  /**
    * Flags
-   * 0x1 ack
-   * 0x2 has data (not only ack)
-   * 0x4 last fragment of message
-   * 0x8 new message
+   * // 0x1 ack => Use two different message types in header.type! 
(FRAG_MESSAGE; FRAG_ACK)
+   * // 0x2 has data (not only ack)
+   * // 0x4 last fragment of message
+   * // 0x8 new message
    */
+  //  uint32_t flags GNUNET_PACKED;
 
-  uint32_t flags GNUNET_PACKED;
-
-
   /**
    * checksum/error correction
    */
+  // uint32_t crc GNUNET_PACKED;
 
-  uint32_t crc GNUNET_PACKED;
+  // followed by payload unless ACK
+
 };
 
 enum { ACK_FRAGMENT = 1, DATA_FRAGMENT = 2, LAST_FRAGMENT = 4, NEW_MESSAGE = 8 
};
@@ -346,7 +366,7 @@
 //TODO add other possibilities to find the right session (are there other?)
 static struct Session *
 get_Session (struct Plugin *plugin,
-               char * addr)
+            const char * addr)
 {
        struct Sessionqueue * queue = plugin->all_Sessions;
        struct Sessionqueue * lastitem = NULL;
@@ -354,11 +374,12 @@
        while (queue != NULL){
                // content is never NULL
                GNUNET_assert (queue->content == NULL);
-               char * addr2 = (queue->content)->addr;
-               if (memcmp(addr, addr2, 6) == 0){
-                       //sesion found
-                       return queue->content;
-               }
+               char * addr2 = queue->content->addr;
+               if (memcmp(addr, addr2, 6) == 0)
+                 {
+                   //sesion found
+                   return queue->content;
+                 }
                // try next
                lastitem = queue;
                queue = queue->next;
@@ -375,8 +396,8 @@
        }
 
        queue->content = GNUNET_malloc (sizeof (struct Session));
-       (queue->content)->plugin = plugin;
-       memcpy((queue->content)->addr, addr, 6);
+       queue->content->plugin = plugin;
+       memcpy(queue->content->addr, addr, 6);
 
        //queue welcome
        struct WelcomeMessage welcome;
@@ -446,7 +467,6 @@
 do_transmit (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct Plugin * plugin = cls;
-  char * msg;
   ssize_t bytes;
 
   if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN)
@@ -456,7 +476,7 @@
   struct Sessionqueue * queue;
   struct PendingMessage * pm;
   struct IeeeHeader * wlanheader;
-  struct RadiotapHeader * RadioHeader;
+  struct RadiotapHeader * radioHeader;
   struct GNUNET_MessageHeader * msgheader;
   uint16_t size = 0;
 
@@ -481,25 +501,22 @@
        size = pm->message_size + sizeof(struct RadiotapHeader)
                                        + sizeof(struct IeeeHeader) + 
sizeof(struct GNUNET_MessageHeader)
                                        + sizeof(struct FragmentationHeader);
-       msg = GNUNET_malloc(size);
-
-       msgheader = msg;
+       msgheader = GNUNET_malloc(size);
        msgheader->size = pm->message_size + sizeof(struct RadiotapHeader) + 
sizeof(struct IeeeHeader);
        msgheader->type = GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA;
 
-       RadioHeader = &msgheader[1];
-       getRadiotapHeader(RadioHeader);
+       radioHeader = (struct RadiotapHeader*) &msgheader[1];
+       getRadiotapHeader(radioHeader);
 
-       wlanheader = &RadioHeader[1];
+       wlanheader = (struct IeeeHeader *) &radioHeader[1];
        getWlanHeader(wlanheader);
 
-       bytes = GNUNET_DISK_file_write(plugin->server_stdin_handle, msg, size);
+       bytes = GNUNET_DISK_file_write(plugin->server_stdin_handle, msgheader, 
size);
   } else {
          //remove message
          GNUNET_CONTAINER_DLL_remove (session->pending_messages_head,
                                                                  
session->pending_messages_tail,
                                                                  pm);
-         GNUNET_free(pm->msg);
          GNUNET_free(pm);
 
   }
@@ -582,23 +599,19 @@
  */
 static ssize_t
 wlan_plugin_send (void *cls,
-                      const struct GNUNET_PeerIdentity * target,
-                      const char *msgbuf,
-                      size_t msgbuf_size,
-                      unsigned int priority,
-                      struct GNUNET_TIME_Relative timeout,
-                     struct Session *session,
-                      const void *addr,
-                      size_t addrlen,
-                      int force_address,
-                      GNUNET_TRANSPORT_TransmitContinuation cont,
-                      void *cont_cls)
+                 const struct GNUNET_PeerIdentity * target,
+                 const char *msgbuf,
+                 size_t msgbuf_size,
+                 unsigned int priority,
+                 struct GNUNET_TIME_Relative timeout,
+                 struct Session *session,
+                 const void *addr,
+                 size_t addrlen,
+                 int force_address,
+                 GNUNET_TRANSPORT_TransmitContinuation cont,
+                 void *cont_cls)
 {
-  int bytes_sent = 0;
-  char * msg;
-
   struct Plugin * plugin = cls;
-
   struct PendingMessage * newmsg = NULL;
 
   //check if msglen > 0
@@ -617,17 +630,17 @@
   }
 
   //TODO target "problem" not solved
-  session->target = target;
+  session->target = *target;
 
   //queue message:
   //first queue session
   queue_Session(plugin, session);
 
   //queue message in session
-  newmsg = GNUNET_malloc(sizeof(struct PendingMessage));
-  newmsg->msg = GNUNET_malloc(msgbuf_size);
+  newmsg = GNUNET_malloc(sizeof(struct PendingMessage) + msgbuf_size);
+  newmsg->msg = (const char*) &newmsg[1];
   //copy msg to buffer, not fragmented / segmented yet
-  memcpy(newmsg->msg, msgbuf, msgbuf_size);
+  memcpy(&newmsg[1], msgbuf, msgbuf_size);
   newmsg->transmit_cont = cont;
   newmsg->transmit_cont_cls = cont_cls;
   newmsg->timeout = GNUNET_TIME_relative_to_absolute(timeout);
@@ -839,19 +852,18 @@
 
 
 static void
-wlan_plugin_helper_read (void *cls, const struct GNUNET_SCHEDULER_TaskContext 
*tc)
+wlan_plugin_helper_read (void *cls,
+                        const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct Plugin *plugin = cls;
-  char mybuf[WLAN_MTU]; //max size of packet from helper
+  char mybuf[WLAN_MTU]; 
   ssize_t bytes;
-  //memset(&mybuf, 0, sizeof(mybuf)); //?
 
   if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN)
     return;
-
-  bytes = GNUNET_DISK_file_read(plugin->server_stdout_handle, &mybuf, 
sizeof(mybuf));
-
-  if (bytes < 1)
+  bytes = GNUNET_DISK_file_read (plugin->server_stdout_handle, 
+                                mybuf, sizeof(mybuf));
+  if (bytes <= 0)
     {
 #if DEBUG_TCP_NAT
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -859,9 +871,9 @@
 #endif
       return;
     }
+  GNUNET_SERVER_mst_receive(plugin->consoltoken, NULL,
+                           mybuf, bytes, 0, GNUNET_NO);
 
-  GNUNET_SERVER_mst_receive(plugin->consoltoken,NULL,&mybuf,bytes,0, 
GNUNET_NO);
-
 }
 
 
@@ -876,11 +888,11 @@
 wlan_transport_start_wlan_helper(struct Plugin *plugin)
 {
 
-  plugin->server_stdout = (GNUNET_YES, GNUNET_NO, GNUNET_YES);
+  plugin->server_stdout = GNUNET_DISK_pipe (GNUNET_YES, GNUNET_NO, GNUNET_YES);
   if (plugin->server_stdout == NULL)
     return GNUNET_SYSERR;
 
-  plugin->server_stdin = GNUNET_DISK_pipe(GNUNET_YES, GNUNET_YES, GNUNET_NO);
+  plugin->server_stdin = GNUNET_DISK_pipe (GNUNET_YES, GNUNET_YES, GNUNET_NO);
     if (plugin->server_stdin == NULL)
       return GNUNET_SYSERR;
 

Modified: gnunet/src/transport/plugin_transport_wlan.h
===================================================================
--- gnunet/src/transport/plugin_transport_wlan.h        2010-09-24 08:17:07 UTC 
(rev 13076)
+++ gnunet/src/transport/plugin_transport_wlan.h        2010-09-24 08:44:05 UTC 
(rev 13077)
@@ -30,13 +30,14 @@
 typedef unsigned short uint16_t;
 
 /* Wlan IEEE80211 header default */
-static const uint8_t u8aIeeeHeader[] = {
-       0x08, 0x01, 0x00, 0x00,
-       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-       0x13, 0x22, 0x33, 0x44, 0x55, 0x66,
-       0x13, 0x22, 0x33, 0x44, 0x55, 0x66,
-       0x10, 0x86,
-};
+static const uint8_t u8aIeeeHeader[] = 
+  {
+    0x08, 0x01, 0x00, 0x00,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0x13, 0x22, 0x33, 0x44, 0x55, 0x66,
+    0x13, 0x22, 0x33, 0x44, 0x55, 0x66,
+    0x10, 0x86,
+  };
 
 /**
  * Wlan header
@@ -44,103 +45,102 @@
 
 struct IeeeHeader
 {
-       /**
-        * Wlan flags
-        */
-       uint8_t flags[4] GNUNET_PACKED;
-
-       /**
-        * first mac
-        */
-       uint8_t mac1[6] GNUNET_PACKED;
-
-       /**
-        * second mac
-        */
-       uint8_t mac2[6] GNUNET_PACKED;
-
-       /**
-        * third mac
-        */
-       uint8_t mac3[6] GNUNET_PACKED;
-
-       /**
-        * Wlan flags2
-        */
-       uint8_t flags2[2] GNUNET_PACKED;
+  /**
+   * Wlan flags
+   */
+  uint32_t flags;
+  
+  /**
+   * first mac
+   */
+  uint8_t mac1[6];
+  
+  /**
+   * second mac
+   */
+  uint8_t mac2[6];
+  
+  /**
+   * third mac
+   */
+  uint8_t mac3[6];
+  
+  /**
+   * Wlan flags2
+   */
+  uint16_t flags2;
 };
 
 /* this is the template radiotap header we send packets out with */
 
-static const uint8_t u8aRadiotapHeader[] = {
-
-       0x00, 0x00, // <-- radiotap version
-       0x19, 0x00, // <- radiotap header length
-       0x6f, 0x08, 0x00, 0x00, // <-- bitmap
-       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // <-- timestamp
-       0x00, // <-- flags (Offset +0x10)
-       0x6c, // <-- rate (0ffset +0x11)
-       0x71, 0x09, 0xc0, 0x00, // <-- channel
-       0xde, // <-- antsignal
-       0x00, // <-- antnoise
-       0x01, // <-- antenna
-
+static const uint8_t u8aRadiotapHeader[] = 
+  {
+    0x00, 0x00, // <-- radiotap version
+    0x19, 0x00, // <- radiotap header length
+    0x6f, 0x08, 0x00, 0x00, // <-- bitmap
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // <-- timestamp
+    0x00, // <-- flags (Offset +0x10)
+    0x6c, // <-- rate (0ffset +0x11)
+    0x71, 0x09, 0xc0, 0x00, // <-- channel
+    0xde, // <-- antsignal
+    0x00, // <-- antnoise
+    0x01, // <-- antenna
 };
 
 /**
  * Radiotap Header
  */
-
 struct RadiotapHeader
 {
-       /**
-        * radiotap version
-        */
-       uint8_t version[2] GNUNET_PACKED;
-
-       /**
-        * radiotap header length
-        */
-       uint8_t lenght[2] GNUNET_PACKED;
-
-       /**
-        * bitmap
-        */
-       uint8_t bitmap[4] GNUNET_PACKED;
-
-       /**
-        * timestamp
-        */
-       uint8_t timestamp[8] GNUNET_PACKED;
-
-       /**
-        * radiotap flags
-        */
-       uint8_t flags GNUNET_PACKED;
-
-       /**
-        * wlan send rate
-        */
-       uint8_t rate GNUNET_PACKED;
-
-       /**
-        * Wlan channel
-        */
-       uint8_t channel[4] GNUNET_PACKED;
-
-       /**
-        * antsignal
-        */
-       uint8_t antsignal GNUNET_PACKED;
-
-       /**
-        * antnoise
-        */
-       uint8_t antnoise GNUNET_PACKED;
-
-       /**
-        * antenna
-        */
-       uint8_t antenna GNUNET_PACKED;
+  /**
+   * radiotap version
+   */
+  uint16_t version GNUNET_PACKED;
+  
+  /**
+   * radiotap header length
+   */
+  uint16_t length GNUNET_PACKED;
+  
+  /**
+   * bitmap
+   */
+  uint32_t bitmap GNUNET_PACKED;
+  
+  /**
+   * timestamp
+   */
+  uint64_t timestamp GNUNET_PACKED;
+  
+  /**
+   * radiotap flags
+   */
+  uint8_t flags;
+  
+  /**
+   * wlan send rate
+   */
+  uint8_t rate;
+  
+  // FIXME: unaligned here, is this OK?
+  /**
+   * Wlan channel
+   */
+  uint32_t channel GNUNET_PACKED;
+  
+  /**
+   * antsignal
+   */
+  uint8_t antsignal;
+  
+  /**
+   * antnoise
+   */
+  uint8_t antnoise;
+  
+  /**
+   * antenna
+   */
+  uint8_t antenna;
 };
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]