qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] tun/tap patch for OSX


From: Lev Lvovsky
Subject: [Qemu-devel] tun/tap patch for OSX
Date: Sun, 28 Dec 2008 22:11:32 -0800

The following patch provided by Mattias Nissler, and tweaked by myself to be applied to net.c (previously to vl.c) allows qemu to use the tun/ tap devices provided at Mattias' site (http:// tuntaposx.sourceforge.net).

Mattias is CC'd.

thanks,
-lev

----
bash-3.2$ svn diff net.c
Index: net.c
===================================================================
--- net.c       (revision 6082)
+++ net.c       (working copy)
@@ -686,8 +686,36 @@
snprintf(s->vc->info_str, sizeof(s->vc->info_str), "tap: fd=%d", fd);
     return s;
 }
+#if defined(__APPLE__)
+static int tap_open(char *ifname, int ifname_size)
+{
+    int fd;
+    int i = 0;
+    char *dev;
+    char buf[20];
+    struct stat s;

-#if defined (_BSD) || defined (__FreeBSD_kernel__)
+    while (1) {
+        snprintf(buf, 20, "/dev/tap%d", i);
+        fd = open(buf, O_RDWR);
+        if (fd < 0) {
+            if (errno != EBUSY) {
+ fprintf(stderr, "warning: could not open %s: no virtual network emulation\n", buf);
+                return -1;
+            }
+            i++;
+        } else
+            break;
+    }
+
+    fstat(fd, &s);
+    dev = devname(s.st_rdev, S_IFCHR);
+    pstrcpy(ifname, ifname_size, dev);
+
+    fcntl(fd, F_SETFL, O_NONBLOCK);
+    return fd;
+}
+#elif defined (_BSD) || defined (__FreeBSD_kernel__)
 static int tap_open(char *ifname, int ifname_size)
 {
     int fd;





reply via email to

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