On Wed, Feb 05, 2014 at 03:10:15PM +0100, Cédric Bosdonnat wrote: > The problem with VLAN is that the user still has to manually create the > vlan interface on the host. Then the generated configuration will use > it as a nerwork hostdev device. So the generated configurations of the > following two fragments are equivalent (see rhbz#1059637). > > lxc.network.type = phys > lxc.network.link = eth0.5 > > lxc.network.type = vlan > lxc.network.link = eth0 > lxc.network.vlan.id = 5 > --- > src/lxc/lxc_native.c | 28 ++++++++++++++++++---- > .../lxcconf2xmldata/lxcconf2xml-vlannetwork.config | 12 ++++++++++ > tests/lxcconf2xmldata/lxcconf2xml-vlannetwork.xml | 26 ++++++++++++++++++++ > tests/lxcconf2xmltest.c | 1 + > 4 files changed, 62 insertions(+), 5 deletions(-) > create mode 100644 tests/lxcconf2xmldata/lxcconf2xml-vlannetwork.config > create mode 100644 tests/lxcconf2xmldata/lxcconf2xml-vlannetwork.xml > > diff --git a/src/lxc/lxc_native.c b/src/lxc/lxc_native.c > index 9a16523..8d8c50a 100644 > --- a/src/lxc/lxc_native.c > +++ b/src/lxc/lxc_native.c > @@ -411,22 +411,33 @@ lxcAddNetworkDefinition(virDomainDefPtr def, > const char *link, > const char *mac, > const char *flag, > - const char *macvlanmode) > + const char *macvlanmode, > + const char *vlanid) > { > virDomainNetDefPtr net = NULL; > virDomainHostdevDefPtr hostdev = NULL; > + bool isPhys, isVlan = false; > > if ((type == NULL) || STREQ(type, "empty") || STREQ(type, "") || > STREQ(type, "none")) > return 0; > > - if (type != NULL && STREQ(type, "phys")) { > + isPhys = STREQ(type, "phys"); > + isVlan = STREQ(type, "vlan"); > + if (type != NULL && (isPhys || isVlan)) { > if (!link || > !(hostdev = lxcCreateHostdevDef(VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES, > VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET, > link))) > goto error; > > + /* This still requires the user to manually setup the vlan interface > + * on the host */ > + if (isVlan && !(link && vlanid && > + virAsprintf(&hostdev->source.caps.u.net.iface, > + "%s.%s", link, vlanid) >= 0)) > + goto error; Small memory leak as this virAsprintf overwrites memory allocated by lxcCreateHostdevDef. Will fx that when pushing 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