From: Laine Stump Date: Mon, 27 Mar 2017 01:57:54 +0000 (-0400) Subject: conf: don't ignore for macvtap interfaces X-Git-Tag: v3.3.0-rc1~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9cb891141c;p=thirdparty%2Flibvirt.git conf: don't ignore for macvtap interfaces The parser had been clearing out *all* suggested device names for type='direct' (aka macvtap) interfaces. All of the code implementing macvtap allows for a user-specified device name, so we should allow it. In the case that an interface name starts with "macvtap" or "macvlan" though, we do still clear it out, just as we do with "vnet" (which is the prefix used for automatically generated tap device names), since those are the prefixes for the names we autogenerate for macvtap and macvlan devices. Resolves: https://bugzilla.redhat.com/1335798 --- diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 8f88dd6854..8c884f4af9 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -5210,9 +5210,9 @@ qemu-kvm -net nic,model=? /dev/null If no target is specified, certain hypervisors will automatically generate a name for the created tun device. This name can be manually specified, however the name should not - start with either 'vnet' or 'vif', which are prefixes - reserved by libvirt and certain hypervisors. Manually specified - targets using these prefixes may be ignored. + start with either 'vnet', 'vif', 'macvtap', or 'macvlan', + which are prefixes reserved by libvirt and certain hypervisors. + Manually specified targets using these prefixes may be ignored.

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 7f5da4e32f..f25a60570c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -55,6 +55,7 @@ #include "virtpm.h" #include "virstring.h" #include "virnetdev.h" +#include "virnetdevmacvlan.h" #include "virhostdev.h" #include "virmdev.h" @@ -10029,8 +10030,12 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt, def->data.direct.linkdev = dev; dev = NULL; - if (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) + if (ifname && + flags & VIR_DOMAIN_DEF_PARSE_INACTIVE && + (STRPREFIX(ifname, VIR_NET_GENERATED_MACVTAP_PREFIX) || + STRPREFIX(ifname, VIR_NET_GENERATED_MACVTAP_PREFIX))) { VIR_FREE(ifname); + } break;