Add IPv6 support for FreeBSD
authorDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 13 Nov 2009 16:23:05 +0000 (16:23 +0000)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 13 Nov 2009 16:23:05 +0000 (16:23 +0000)
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
tun.c

diff --git a/tun.c b/tun.c
index 5bb83bc..c512fcf 100644 (file)
--- a/tun.c
+++ b/tun.c
@@ -34,6 +34,8 @@
 #include <net/if_tun.h>
 #include <stropts.h>
 #include <sys/sockio.h>
+#elif defined(__FreeBSD__)
+#include <net/if_tun.h>
 #endif
 #include <fcntl.h>
 #include <unistd.h>
@@ -48,6 +50,8 @@
 
 #ifdef __OpenBSD__
 #define TUN_HAS_AF_PREFIX 1
+#elif defined(TUNSIFHEAD)
+#define TUN_HAS_AF_PREFIX 1
 #endif
 
 #ifdef __sun__
@@ -466,6 +470,13 @@ int setup_tun(struct openconnect_info *vpninfo)
                        exit(1);
                }
                vpninfo->ifname = tun_name + 5;
+#ifdef TUNSIFHEAD
+               i = 1;
+               if (ioctl(tun_fd, TUNSIFHEAD, &i) < 0) {
+                       perror("TUNSIFHEAD");
+                       exit(1);
+               }
+#endif
 #endif
                if (vpninfo->vpnc_script) {
                        script_config_tun(vpninfo);