On Wed, Jun 15, 2011 at 12:37:00PM -0700, Jason Helfman wrote: > Hey Everyone, > > I've ported libvirt to FreeBSD, however it has the networking disabled for > the build, however I was curious what would need to be changed for this to > work. > > Currently, we do have virtualbox-ose in the FreeBSD portstree, and I am > curious if the networking would need to be reworked to support libvirt with > networking in FreeBSD in the same manner in which virtualbox creates > interfaces and uses the networking stack? > > Basically, I am seeking to learn what is missing, and how to either find > resources to get this implemented, or implement it myself. The latter of > implementing it myself is unlikely, as I really don't have very much > source control experience at a networking stack layer. There are two aspects to networking in libvirt The virtual network driver (in src/network/bridge_driver.c) uses the Linux kernel's native 'bridge' functionality to provide an isolated, or routed, or NATed network connection to guests. There is a bridge device on the host created, and guest TAP devices are added to it. There is no physical ethernet device added to the bridge, and iptables is used to control whether the host OS routes traffic to/from the bridge & physical LAN. I don't know what BSD has as an equivalent to Linux bridge/brctl functionality, so can't suggest alternatives, but basically you'd need to figure out how to do nat/routed/isolated guest configs and write a new version of bridge_driver.c for BSD. The host interface driver (in src/inteface/netcf_driver.c) uses the netcf library to manage configuration of host network interfaces todo things like bonding, vlans and bridging. Since, even with the Linux world, every distro has a different way to configure network interfaces, the core job is to port netcf to your OS. Basically on Fedora, netcf reads&writes files /etc/sysconfig/network-scripts/ifcfg-XXX and can call ifup/ifdown to take interfaces online/offline. So you'd need to create a netcf backend that understands BSD's networking configuration files and calls appropriate tools to bring intefaces online/offline. Both these jobs are pretty much independant, so can easily be done in parallel. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list