On 02/01/15 17:50, Josef Söntgen wrote:
On 01/02/15 15:45, Antti Kantee wrote:
For smb/nfs, you most likely want to implement the sockin_user set of I/O hypercalls which allow the smb/nfs file system drivers from rump kernels to use an external networking stack:
http://nxr.netbsd.org/xref/src/sys/rump/net/lib/libsockin/sockin_user.h?r=1....
Now, that interface wasn't really ever designed to be implemented anywhere except on NetBSD. Nevertheless, we (I think it was Arnaud) managed to cram support for all userspace platforms into the implementation. If you do want to change some aspects of that interface to help it work on Genode, I'm more than happy to do it.
Ah, I really overlooked using the sockin_user interface for this task and rather thought about implementing the virtual nic interface and using the rumpkernel's TCP/IP stack - thanks for pointing out this option. It is definitly a viable possibilty to check out.
Right, doing it on the nic level would work too, but then you'd have to give the rump kernel its own network configuration (IP etc.), which is usually not what you want in a microkernel file server context. In fact, sockin was originally created so that the NFS driver in a rump kernel in userspace could use the existing system network and "just work".
Also, there's a 9p driver for puffs (*), which could theoretically just work on Genode, though it would be a bit awkward; you'd run puffs in a rump kernel server and the mount_9p client in a another server ... :/
Though that would certainly work as well, I think it is more reasonable to implement it directly. 9p is a fairly simple protocol so using the whole rumpkernel stack would be overkill IMHO :)
As much as I like to see my code being used, I agree with you ;)