If we do commit this, there should be a way to check and see of these kernel modules are installed.
On Jan 5, 2009, at 11:11 AM, Lev Lvovsky wrote: Any interest in this guys? To my knowledge, Mattias' tun/tap kernel extension is the only way to get tun/tap working in OSX. thanks, -lev On Dec 28, 2008, at 10:11 PM, Lev Lvovsky wrote: 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;
|