[libvirt] [PATCH v3 17/21] LXC from native: map vlan network type
Daniel P. Berrange
berrange at redhat.com
Wed Feb 12 17:51:47 UTC 2014
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 :|
More information about the libvir-list
mailing list