Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Aug 2009 17:38:59 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Fredrik Lindberg <fli@shapeshifter.se>
Cc:        freebsd-emulation@freebsd.org
Subject:   Re: VirtualBox bridged adapter (vboxnetflt)
Message-ID:  <alpine.BSF.2.00.0908251732270.61512@fledge.watson.org>
In-Reply-To: <4A8EB3D2.7010109@shapeshifter.se>
References:  <4A8EB3D2.7010109@shapeshifter.se>

next in thread | previous in thread | raw e-mail | index | archive | help

On Fri, 21 Aug 2009, Fredrik Lindberg wrote:

> I've started working on the missing bits of the FreeBSD network 
> implementation in VirtualBox.
>
> I now have a working vboxnetflt.ko driver that allows automatic bridged 
> networking in VirtualBox (probably what most people want). This allows 
> guests to automatically bridge with your existing network adapter providing 
> seamless network access.
>
> Work on host-only adapter mode is in progress (this should not be confused 
> with host-interface in previous vbox 2.x releases).

Hi Fredrik:

The technical approach you've taken here is a bit unusual and potentially 
quite fragile -- replacing the method pointers on struct ifnet's maintained by 
other drivers and "borrowing" spare fields is likely going to prove 
problematic in the future (and, in fact, already).

It looks like a lot of what the driver is trying to accomplish can already be 
done entirely from userspace using bpf(4): taking a tee of incoming frames 
arriving at the NIC, perhaps selecting down to ones to specific ethernet 
addresses, taking the card into and out of promiscuous mode, and injecting 
frames into the output path, are exactly what BPF is designed to support.  I 
was wondering if you'd looked at this approach as an alternative to a custom 
kernel driver?

Robert

>
> The patch can be found at
> http://www.shapeshifter.se/pub/patches/vbox-freebsd-network.patch
>
> Additional patch for emulators/virtualbox/Makefile
> http://www.shapeshifter.se/pub/patches/virtualbox-Makefile.patch
>
>
> You'll have to rebuild VirtualBox to make it work, the following lines
> should do the trick.
>
> cd /usr/ports/emulators/virtualbox
> make clean patch
> mkdir work/virtualbox-3.0.51r22226/src/VBox/HostDrivers/VBoxNetFlt/freebsd
>
> patch -d work/virtualbox-3.0.51r22226 < vbox-freebsd-network.patch
> patch < virtualbox-Makefile.patch
> make install
>
> In addition to vboxdrv.ko you'll need to load vboxnetflt.ko too.
>
> kldload /boot/modules/vboxnetflt.ko
>
> In VirtualBox network settings, under "Bridged Adapter" you should now
> see your available network interfaces. Select the one connected to your
> network and boot your virtual machine.  It should now be connected to
> your local network as any other machine.
>
>
> Please note that this is just the first iteration of the patch and it
> should by no means be considered complete. It has only been tested
> on FreeBSD 8/i386.  Slippery when wet :)
>
>
> The kld is also a bit hackish at the moment regarding to how it
> interfaces with the network stack to avoid kernel code modifications.
>
> Fredrik
> _______________________________________________
> freebsd-emulation@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-emulation
> To unsubscribe, send any mail to "freebsd-emulation-unsubscribe@freebsd.org"
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.0908251732270.61512>