gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r12451 - in gnunet/src/vpn: . tests


From: gnunet
Subject: [GNUnet-SVN] r12451 - in gnunet/src/vpn: . tests
Date: Tue, 3 Aug 2010 20:58:54 +0200

Author: toelke
Date: 2010-08-03 20:58:54 +0200 (Tue, 03 Aug 2010)
New Revision: 12451

Modified:
   gnunet/src/vpn/gnunet-helper-vpn.c
   gnunet/src/vpn/tests/test-helper-ifaddr.sh
Log:
Give the tun-interface an IPv4-Address

Modified: gnunet/src/vpn/gnunet-helper-vpn.c
===================================================================
--- gnunet/src/vpn/gnunet-helper-vpn.c  2010-08-03 18:03:35 UTC (rev 12450)
+++ gnunet/src/vpn/gnunet-helper-vpn.c  2010-08-03 18:58:54 UTC (rev 12451)
@@ -67,7 +67,7 @@
                running = 0;
 }
 
-static void set_address(char* dev, char* address, unsigned long prefix_len) { 
/* {{{ */
+static void set_address6(char* dev, char* address, unsigned long prefix_len) { 
/* {{{ */
        int fd = socket(AF_INET6, SOCK_DGRAM, 0);
 
        struct ifreq ifr;
@@ -100,6 +100,47 @@
        /* FIXME */ ioctl(fd, SIOCSIFFLAGS, &ifr);
 } /* }}} */
 
+static void set_address4(char* dev, char* address, char* mask) { /* {{{ */
+       int fd=0;
+       struct sockaddr_in* addr;
+       struct ifreq ifr;
+
+       memset(&ifr, 0, sizeof(struct ifreq));
+       addr = (struct sockaddr_in *)&(ifr.ifr_addr);
+       memset(addr, 0, sizeof(struct sockaddr_in));
+       addr->sin_family = AF_INET;
+       addr->sin_addr.s_addr = inet_addr(address);
+
+       /* FIXME */ inet_pton(AF_INET, address, &addr->sin_addr.s_addr);
+
+       fd = socket(PF_INET, SOCK_DGRAM, 0);
+       if(fd < 0) {
+               perror("socket()");
+               return;
+       }
+
+       strncpy(ifr.ifr_name, dev, IFNAMSIZ);
+
+       if(ioctl(fd, SIOCSIFADDR, &ifr) != 0 ) {
+               perror("SIOCSIFADDR");
+               close(fd);
+               return;
+       }
+
+       addr = (struct sockaddr_in*)&(ifr.ifr_netmask);
+       /* FIXME */ inet_pton(AF_INET, mask, &addr->sin_addr.s_addr);
+
+       if(ioctl(fd, SIOCSIFNETMASK, &ifr) != 0 ) {
+               perror("SIOCSIFNETMASK");
+               close(fd);
+               return;
+       }
+
+       /* FIXME */ ioctl(fd, SIOCGIFFLAGS, &ifr);
+       ifr.ifr_flags |= IFF_UP | IFF_RUNNING;
+       /* FIXME */ ioctl(fd, SIOCSIFFLAGS, &ifr);
+} /* }}} */
+
 void setnonblocking(int fd) {/*{{{*/
        int opts;
 
@@ -131,12 +172,21 @@
 
        fprintf(stderr, "Initialized the interface %s as %d.\n", dev, fd_tun);
 
+       {
        // TODO: get this out of argv
        char address[] = "1234::1";
        unsigned long prefix_len = 16;
 
-       set_address(dev, address, prefix_len);
+       set_address6(dev, address, prefix_len);
+       }
 
+       {
+       char address[] = "10.10.10.1";
+       char mask[] = "255.255.255.252";
+
+       set_address4(dev, address, mask);
+       }
+
        uid_t uid = getuid ();
        if (setresuid (uid, uid, uid) != 0 )
                fprintf (stderr, "Failed to setresuid: %m\n");

Modified: gnunet/src/vpn/tests/test-helper-ifaddr.sh
===================================================================
--- gnunet/src/vpn/tests/test-helper-ifaddr.sh  2010-08-03 18:03:35 UTC (rev 
12450)
+++ gnunet/src/vpn/tests/test-helper-ifaddr.sh  2010-08-03 18:58:54 UTC (rev 
12451)
@@ -6,7 +6,7 @@
 
 mkfifo $FIFO
 
-/opt/gnunet/bin/gnunet-vpn-helper > $FIFO 2>&1 &
+/opt/gnunet/bin/gnunet-helper-vpn > $FIFO 2>&1 &
 
 PID=$!
 
@@ -20,13 +20,22 @@
        fi
 done
 
+r=0
 if /sbin/ifconfig $IF | grep inet6 | grep -q '1234::1/16'; then
        echo OK
-       exit 0
 else
-       echo FAILED: Interface-Address not set!
-       exit 1
+       echo FAILED: Interface-Address not set for IPv6!
+       r=1
 fi
 
+if /sbin/ifconfig $IF | grep "inet " | grep -q '10.10.10.1'; then
+       echo OK
+else
+       echo FAILED: Interface-Address not set for IPv4!
+       r=1
+fi
+
 rm $FIFO
 kill $PID
+
+exit $r




reply via email to

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