|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: Current state of the UNIX backend
On 24 May 2013, at 19:23, Vincent Bernardoff <vb@xxxxxxxxxxxxxx> wrote:
> Hi all,
>
> Apparently, the current state of mirage for UNIX-direct is broken for me.
>
> Could you test it for me, Mac users:
>
> cd mirage-skeleton/basic
> mirari configure --unix
> mirari build --unix
> sudo ./mir-hello
>
> On my test machine it fails with:
>
> Fatal error: exception Unix.Unix_error(3, "set_nonblock", "")
I added a test_nonblock.ml to ocaml-tuntap to build a small repro case.
$ sudo dtruss ./_build/test/test_nonblock.native
3321/0x46aed: open("/dev/tap0\0", 0x2, 0x4) = 5 0
3321/0x46aed: fcntl(0xB, 0x3, 0x0) = -1 Err#9
Notice that the fd we opened was '5' and the fd actually passed to fcntl is
0xB. Which is a bit off, and looking at the tuntap_stubs.c shows:
diff --git a/lib/tuntap_stubs.c b/lib/tuntap_stubs.c
index cb5e11d..703d477 100644
--- a/lib/tuntap_stubs.c
+++ b/lib/tuntap_stubs.c
@@ -121,7 +121,7 @@ tun_alloc(char *dev, int kind, int pi, int persist, int
user, int group)
caml_failwith("Unable to open the TUN or TAP interface");
}
- return Val_int(fd);
+ return fd;
}
CAMLprim value
Your sendmsg was likely also failing due to this problem -- if you get an EBADF
error, it normally means the file descriptor integer is somehow wrong. I'll
send you a pull request with the fixes and tests...
Btw, Jeremy Yallop will be showing off a new type-safe FFI library he's been
building at the next OCaml Labs meeting on Friday, which will make bugs like
this a thing of the past...
The UNIX backend isn't quite working yet on MacOS X after this. I get:
Manager: plug tap0
[netif-input] error : Unix.Unix_error(Unix.EIO, "read", "")
[netif-input] error : Unix.Unix_error(Unix.EIO, "read", "")
[netif-input] error : Unix.Unix_error(Unix.EIO, "read", "")
...which probably means that the interface isn't up yet.
-anil
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |