On Fri, Apr 05, 2013 at 08:26:40AM -0400, Bogdan Purcareata wrote: > This allows a container-type domain to have exclusive access to one of > the host's NICs. > > Wire <hostdev caps=net> with the lxc_controller - when moving the newly > created veth devices into a new namespace, also look for any hostdev > devices that should be moved. Note: once the container domain has been > destroyed, there is no code that moves the interfaces back to the > original namespace. This does happen, though, probably due to default > cleanup on namespace destruction. > > Signed-off-by: Bogdan Purcareata <bogdan.purcareata@xxxxxxxxxxxxx> > --- > src/lxc/lxc_container.c | 4 +++- > src/lxc/lxc_controller.c | 16 ++++++++++++++++ > src/lxc/lxc_hostdev.c | 1 + > 3 files changed, 20 insertions(+), 1 deletion(-) ACK, but I added this in before pushing to GIT so that we force private net namespace on startup of container & also validate the parser diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index 002ba9e..a494363 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -2286,6 +2286,22 @@ virArch lxcContainerGetAlt32bitArch(virArch arch) } +static bool +lxcNeedNetworkNamespace(virDomainDefPtr def) +{ + size_t i; + if (def->nets != NULL) + return true; + if (def->features & (1 << VIR_DOMAIN_FEATURE_PRIVNET)) + return true; + for (i = 0 ; i < def->nhostdevs ; i++) { + if (def->hostdevs[i]->mode == VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES && + def->hostdevs[i]->source.caps.type == VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET) + return true; + } + return false; +} + /** * lxcContainerStart: * @def: pointer to virtual machine structure @@ -2329,8 +2345,7 @@ int lxcContainerStart(virDomainDefPtr def, cflags |= CLONE_NEWUSER; } - if (def->nets != NULL || - (def->features & (1 << VIR_DOMAIN_FEATURE_PRIVNET))) { + if (lxcNeedNetworkNamespace(def)) { VIR_DEBUG("Enable network namespaces"); cflags |= CLONE_NEWNET; } diff --git a/tests/lxcxml2xmldata/lxc-hostdev.xml b/tests/lxcxml2xmldata/lxc-hostdev.xml index b022cc7..befe0db 100644 --- a/tests/lxcxml2xmldata/lxc-hostdev.xml +++ b/tests/lxcxml2xmldata/lxc-hostdev.xml @@ -31,5 +31,10 @@ <char>/dev/tty0</char> </source> </hostdev> + <hostdev mode='capabilities' type='net'> + <source> + <interface>eth0</interface> + </source> + </hostdev> </devices> </domain> 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