diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index f3b35f933b..90f8abefde 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -2557,12 +2557,15 @@ virtualport types (and also to leave out certain attributes); at domain startup time, a complete <virtualport> element will be constructed by merging together the type and - attributes found in the which will be filled in from the network - or portgroup <virtualport>) + attributes defined in the network and the portgroup referenced + by the interface. The newly-constructed virtualport is a combination + of them. The attributes from lower virtualport can't make change + on the ones defined in higher virtualport. + Interface takes the highest priority, portgroup is lowest priority. (Since 0.10.0). For example, in order to work properly with both an 802.1Qbh switch and an Open vSwitch switch, you may choose to specify no type, but both - an instanceid (in case the switch is 802.1Qbh) and + an profileid (in case the switch is 802.1Qbh) and an interfaceid (in case the switch is Open vSwitch) (you may also omit the other attributes, such as managerid, typeid, or profileid, to be filled in from the diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index d56c333a60..6feded4042 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5020,7 +5020,7 @@ virDomainNetDefParseXML(virCapsPtr caps, def->type == VIR_DOMAIN_NET_TYPE_INTERNAL && xmlStrEqual(cur->name, BAD_CAST "source")) { internal = virXMLPropString(cur, "name"); - } else if (!network && + } else if (!bridge && def->type == VIR_DOMAIN_NET_TYPE_BRIDGE && xmlStrEqual(cur->name, BAD_CAST "source")) { bridge = virXMLPropString(cur, "bridge"); @@ -5054,7 +5054,7 @@ virDomainNetDefParseXML(virCapsPtr caps, " "), type); goto error; } - } else if (!network && + } else if (!address && (def->type == VIR_DOMAIN_NET_TYPE_SERVER || def->type == VIR_DOMAIN_NET_TYPE_CLIENT || def->type == VIR_DOMAIN_NET_TYPE_MCAST) &&