[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r12451 - in gnunet/src/vpn: . tests,
gnunet <=