[libvirt] [PATCH 08/16] LXC from native: convert macvlan network configuration
Daniel P. Berrange
berrange at redhat.com
Fri Jan 24 13:45:05 UTC 2014
On Tue, Jan 14, 2014 at 02:49:57PM +0100, Cédric Bosdonnat wrote:
> ---
> src/lxc/lxc_native.c | 38 +++++++++++++++++-----
> .../lxcconf2xml-macvlannetwork.config | 14 ++++++++
> .../lxcconf2xmldata/lxcconf2xml-macvlannetwork.xml | 30 +++++++++++++++++
> tests/lxcconf2xmltest.c | 1 +
> 4 files changed, 74 insertions(+), 9 deletions(-)
> create mode 100644 tests/lxcconf2xmldata/lxcconf2xml-macvlannetwork.config
> create mode 100644 tests/lxcconf2xmldata/lxcconf2xml-macvlannetwork.xml
>
> diff --git a/src/lxc/lxc_native.c b/src/lxc/lxc_native.c
> index 6ea4998..a99bc1c 100644
> --- a/src/lxc/lxc_native.c
> +++ b/src/lxc/lxc_native.c
> @@ -521,9 +521,11 @@ static virDomainNetDefPtr
> lxcCreateNetDef(const char *type,
> const char *link,
> const char *mac,
> - const char *flag)
> + const char *flag,
> + const char *macvlanmode)
> {
> virDomainNetDefPtr net = NULL;
> + virMacAddr macAddr;
>
> if (VIR_ALLOC(net) < 0)
> goto error;
> @@ -535,9 +537,11 @@ lxcCreateNetDef(const char *type,
> net->linkstate = VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DOWN;
> }
>
> - if (STREQ(type, "veth")) {
> - virMacAddr macAddr;
>
> + if (mac && virMacAddrParse(mac, &macAddr) == 0)
> + net->mac = macAddr;
> +
> + if (STREQ(type, "veth")) {
> if (!link)
> goto error;
>
> @@ -546,9 +550,18 @@ lxcCreateNetDef(const char *type,
> if (VIR_STRDUP(net->data.bridge.brname, link) < 0)
> goto error;
>
> - if (mac && virMacAddrParse(mac, &macAddr) == 0)
> - net->mac = macAddr;
> + } else if (STREQ(type, "macvlan")) {
> + net->type = VIR_DOMAIN_NET_TYPE_DIRECT;
> +
> + if (VIR_STRDUP(net->data.direct.linkdev, link) < 0)
> + goto error;
>
> + if (!macvlanmode || STREQ(macvlanmode, "private"))
> + net->data.direct.mode = VIR_NETDEV_MACVLAN_MODE_PRIVATE;
> + else if (STREQ(macvlanmode, "vepa"))
> + net->data.direct.mode = VIR_NETDEV_MACVLAN_MODE_VEPA;
> + else if (STREQ(macvlanmode, "bridget"))
Is that really meant to be 'bridget' is is that a typo ?
> + net->data.direct.mode = VIR_NETDEV_MACVLAN_MODE_BRIDGE;
We should likely have a 'else' clause which reports an error
> @@ -655,10 +672,13 @@ lxcConvertNetworkSettings(virDomainDefPtr def, virPropertiesPtr properties)
> mac = property->value;
> else if (STREQ(property->key, "lxc.network.flags"))
> flag = property->value;
> + else if (STREQ(property->key, "lxc.network.macvlan.mode"))
> + macvlanmode = property->value;
Perhaps we want to have a 'VIR_WARN' statement here. Reporting an error is
a bit harsh, since we want to make best effort to report something sensible,
so a VIR_WARN at least lets us know we've work todo
> }
>
> /* Add the last network definition found */
> - status = lxcAddNetworkDefinition(def, type, link, mac, flag);
> + status = lxcAddNetworkDefinition(def, type, link, mac, flag,
> + macvlanmode);
> if (status < 0)
> return -1;
> else if (status > 0)
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