gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r13954 - gnunet/src/transport
Date: Tue, 21 Dec 2010 13:09:15 +0100

Author: brodski
Date: 2010-12-21 13:09:15 +0100 (Tue, 21 Dec 2010)
New Revision: 13954

Modified:
   gnunet/src/transport/Makefile.am
   gnunet/src/transport/gnunet-transport-wlan-helper.c
   gnunet/src/transport/plugin_transport_wlan.h
   gnunet/src/transport/test_plugin_transport_wlan_dummy.c
Log:
Dummy for testing


Modified: gnunet/src/transport/Makefile.am
===================================================================
--- gnunet/src/transport/Makefile.am    2010-12-21 09:49:47 UTC (rev 13953)
+++ gnunet/src/transport/Makefile.am    2010-12-21 12:09:15 UTC (rev 13954)
@@ -77,10 +77,14 @@
 gnunet_nat_server_SOURCES = \
  $(NATSERVER)
 
+    
 gnunet_transport_wlan_helper_SOURCES = \
- gnunet-transport-wlan-helper.c         
+ gnunet-transport-wlan-helper.c
 gnunet_transport_wlan_helper_LDADD = \
  -lpcap
+ 
+test_plugin_transport_wlan_SOURCES = \
+ test_plugin_transport_wlan_dummy.c
 
 gnunet_nat_client_SOURCES = \
  $(NATCLIENT)         
@@ -215,7 +219,8 @@
  test_quota_compliance_udp \
  test_quota_compliance_udp_asymmetric_recv_constant \
  $(HTTP_QUOTA_TEST) \
- $(HTTPS_QUOTA_TEST)
+ $(HTTPS_QUOTA_TEST) \
+ test_plugin_transport_wlan
 # TODO: add tests for nat, etc.
 
 if !DISABLE_TEST_RUN

Modified: gnunet/src/transport/gnunet-transport-wlan-helper.c
===================================================================
--- gnunet/src/transport/gnunet-transport-wlan-helper.c 2010-12-21 09:49:47 UTC 
(rev 13953)
+++ gnunet/src/transport/gnunet-transport-wlan-helper.c 2010-12-21 12:09:15 UTC 
(rev 13954)
@@ -33,6 +33,8 @@
 
 #include <pcap.h>
 
+
+
 //#include "radiotap.h"
 
 // mac of this node
@@ -643,3 +645,4 @@
 
        return (0);
 }
+

Modified: gnunet/src/transport/plugin_transport_wlan.h
===================================================================
--- gnunet/src/transport/plugin_transport_wlan.h        2010-12-21 09:49:47 UTC 
(rev 13953)
+++ gnunet/src/transport/plugin_transport_wlan.h        2010-12-21 12:09:15 UTC 
(rev 13954)
@@ -24,6 +24,9 @@
  * @author David Brodski
  */
 
+#ifndef PLUGIN_TRANSPORT_WLAN
+#define PLUGIN_TRANSPORT_WLAN
+
 #include "gnunet_common.h"
 
 typedef unsigned int uint32_t;
@@ -163,3 +166,4 @@
   uint8_t antenna;
 };
 
+#endif

Modified: gnunet/src/transport/test_plugin_transport_wlan_dummy.c
===================================================================
--- gnunet/src/transport/test_plugin_transport_wlan_dummy.c     2010-12-21 
09:49:47 UTC (rev 13953)
+++ gnunet/src/transport/test_plugin_transport_wlan_dummy.c     2010-12-21 
12:09:15 UTC (rev 13954)
@@ -1,99 +1,197 @@
 /*
-        This file is part of GNUnet.
-     (C) 2010 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
-     by the Free Software Foundation; either version 3, or (at your
-     option) any later version.
-
-     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.
-
-     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/test_transport_wlan_dummy.c
- * @brief helper for the testcase for plugin_transport_wlan.c
- * @author David Brodski
- */
-
-#include "platform.h"
-#include "gnunet_constants.h"
-#include "gnunet_os_lib.h"
-#include "gnunet_transport_plugin.h"
-#include "transport.h"
-#include "plugin_transport_wlan.h"
-#include "gnunet_common.h"
-#include "gnunet-transport-wlan-helper.h"
-#include "plugin_transport_wlan.h"
-
+ This file is part of GNUnet.
+ (C) 2010 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
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ 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.
+
+ 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/test_transport_wlan_dummy.c
+ * @brief helper for the testcase for plugin_transport_wlan.c
+ * @author David Brodski
+ */
+
+#include "platform.h"
+#include "gnunet_constants.h"
+#include "gnunet_os_lib.h"
+#include "gnunet_transport_plugin.h"
+#include "transport.h"
+#include "plugin_transport_wlan.h"
+#include "gnunet_common.h"
+#include "gnunet-transport-wlan-helper.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/stat.h>
 
 #define FIFO_FILE1       "MYFIFOin"
-#define FIFO_FILE2       "MYFIFOout"
-
-int
-main(int argc, char *argv[])
-{
-       struct stat st;
-       int erg;
-       int first;
-       FILE *fpin;
-       FILE *fpout;
-       //make the fifos if needed
-       if(stat(FIFO_FILE1,&st) != 0){
-               if(stat(FIFO_FILE2,&st) != 0){
-                               perror("FIFO 2 exists, but FIFO 1 not");
-                exit(1);
-               }
-               first = 1;
-               umask(0);
-               erg = mknod(FIFO_FILE1, S_IFIFO|0666, 0);
-               erg = mknod(FIFO_FILE2, S_IFIFO|0666, 0);
-
-               if((fpin = fopen(FIFO_FILE1, "r")) == NULL) {
-                perror("fopen");
-                exit(1);
-        }
-               if((fpout = fopen(FIFO_FILE2, "w")) == NULL) {
-                perror("fopen");
-                exit(1);
-        }
-       } else {
-               first = 0;
-               if(stat(FIFO_FILE2,&st) == 0){
-                               perror("FIFO 1 exists, but FIFO 2 not");
-                exit(1);
-               }
-               if((fpout = fopen(FIFO_FILE1, "w")) == NULL) {
-                perror("fopen");
-                exit(1);
-        }
-               if((fpin = fopen(FIFO_FILE2, "r")) == NULL) {
-                perror("fopen");
-                exit(1);
-        }
-
-       }
-       // Write the input to the output
+#define FIFO_FILE2       "MYFIFOout"
+#define MAXLINE         5000
 
-       //clean up
-       if (first == 1){
-               unlink(FIFO_FILE1);
-               unlink(FIFO_FILE2);
-       }
+int closeprog = 0;
 
+void sigfunc(int sig)
+{
 
-       fclose(fpin);
-       fclose(fpout);
-    return(0);
+ if(sig != SIGINT || sig != SIGTERM || sig != SIGKILL)
+   return;
+ else
+  {
+   closeprog = 1;
+   }
 }
-
+
+
+
+int
+main(int argc, char *argv[])
+{
+  struct stat st;
+  int erg;
+  int first;
+  FILE *fpin;
+  FILE *fpout;
+  pid_t pid;
+
+  signal(SIGINT,sigfunc);
+  signal(SIGTERM,sigfunc);
+  signal(SIGKILL,sigfunc);
+
+  //make the fifos if needed
+  if (stat(FIFO_FILE1, &st) != 0)
+    {
+      if (stat(FIFO_FILE2, &st) != 0)
+        {
+          perror("FIFO 2 exists, but FIFO 1 not");
+          exit(1);
+        }
+      first = 1;
+      umask(0);
+      erg = mknod(FIFO_FILE1, S_IFIFO | 0666, 0);
+      erg = mknod(FIFO_FILE2, S_IFIFO | 0666, 0);
+
+      if ((fpin = fopen(FIFO_FILE1, "r")) == NULL)
+        {
+          perror("fopen");
+          exit(1);
+        }
+      if ((fpout = fopen(FIFO_FILE2, "w")) == NULL)
+        {
+          perror("fopen");
+          exit(1);
+        }
+    }
+  else
+    {
+      first = 0;
+      if (stat(FIFO_FILE2, &st) == 0)
+        {
+          perror("FIFO 1 exists, but FIFO 2 not");
+          exit(1);
+        }
+      if ((fpout = fopen(FIFO_FILE1, "w")) == NULL)
+        {
+          perror("fopen");
+          exit(1);
+        }
+      if ((fpin = fopen(FIFO_FILE2, "r")) == NULL)
+        {
+          perror("fopen");
+          exit(1);
+        }
+
+    }
+
+  // fork
+
+  if ((pid = fork()) < 0)
+    {
+      perror("FORK ERROR");
+      return -3;
+    }
+  else if (pid == 0) // CHILD PROCESS
+    {
+      int rv = 0;
+      int read = 0;
+      int pos = 0;
+      char line[MAXLINE];
+
+      while (closeprog == 0)
+        {
+          read = 0;
+
+          while (read < sizeof( struct RadiotapHeader) + sizeof(struct 
GNUNET_MessageHeader)){
+            if ((rv = read(STDIN_FILENO, line, MAXLINE)) < 0)
+              {
+                perror("READ ERROR FROM STDIN");
+              }
+            read += rv;
+          }
+
+          pos = 0;
+
+          fwrite(&line[pos], 1, sizeof(struct GNUNET_MessageHeader), fpout);
+
+          pos += sizeof(struct GNUNET_MessageHeader);
+
+          //do not send radiotap header
+          pos += sizeof( struct RadiotapHeader);
+
+          while (pos < read)
+            {
+              pos += fwrite(&line[pos], 1, read - pos, fpout);
+            }
+        }
+
+
+      //clean up
+      fclose(fpout);
+    }
+  else // PARENT PROCESS
+    {
+      int rv = 0;
+      ssize_t pos = 0;
+      char line[MAXLINE];
+
+      while (closeprog == 0)
+        {
+          if ((rv = fread(line, 1, MAXLINE, fpin)) < 0)
+            {
+              perror("READ ERROR FROM STDIN");
+            }
+
+          pos = 0;
+          while (pos < rv)
+            {
+              pos += write(STDOUT_FILENO, &line[pos], rv - pos);
+            }
+        }
+
+
+      //clean up
+      fclose(fpin);
+
+      if (first == 1)
+        {
+          unlink(FIFO_FILE1);
+          unlink(FIFO_FILE2);
+        }
+    }
+
+  // Write the input to the output
+
+  return (0);
+}
+




reply via email to

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