Allow the cloning /dev/tap interface to be used on FreeBSD and NetBSD.
authorGuus Sliepen <guus@tinc-vpn.org>
Mon, 12 Oct 2009 20:14:47 +0000 (22:14 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Mon, 12 Oct 2009 20:14:47 +0000 (22:14 +0200)
This device works like /dev/tun on Linux, automatically creating a new tap
interface when a program opens it. We now pass the actual name of the newly
created interface in $INTERFACE.

src/bsd/device.c

index fd1f35d..06889e3 100644 (file)
@@ -150,6 +150,17 @@ bool setup_device(void) {
                        if(routing_mode == RMODE_ROUTER)
                                overwrite_mac = true;
                        device_info = "Generic BSD tap device";
+#ifdef TAPGIFNAME
+                       {
+                               struct ifreq ifr;
+                               if(ioctl(device_fd, TAPGIFNAME, (void*)&ifr) == 0) {
+                                       if(iface)
+                                               free(iface);
+                                       iface = xstrdup(ifr.ifr_name);
+                               }
+                       }
+                       
+#endif
                        break;
 #ifdef HAVE_TUNEMU
                case DEVICE_TYPE_TUNEMU: