mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 21:34:54 +03:00
network: use 'bridge' as actual type instead of 'network'
Ports allocated on virtual networks with type=nat|route|open all get given an actual type of 'network'. Only ports in networks with type=bridge use an actual type of 'bridge'. This distinction makes little sense since the virtualization drivers will treat both actual types in exactly the same way, as they're all just bridge devices a VM needs to be connected to. This doesn't affect user visible XML since the "actual" device XML is internal only, but we need code to convert the data upgrades. Reviewed-by: Laine Stump <laine@laine.org> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
e2c5f0f6cf
commit
518026e159
@ -5127,6 +5127,19 @@ virDomainNetDefPostParse(virDomainNetDefPtr net)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Older libvirtd uses actualType==network, but we now
|
||||
* just use actualType==bridge, as nothing needs to
|
||||
* distinguish the two cases, and this simplifies virt
|
||||
* drive code */
|
||||
if (net->type == VIR_DOMAIN_NET_TYPE_NETWORK &&
|
||||
net->data.network.actual != NULL &&
|
||||
net->data.network.actual->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
|
||||
char mac[VIR_MAC_STRING_BUFLEN];
|
||||
virMacAddrFormat(&net->mac, mac);
|
||||
VIR_DEBUG("Updating NIC %s actual type to bridge", mac);
|
||||
net->data.network.actual->type = VIR_DOMAIN_NET_TYPE_BRIDGE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -11267,11 +11280,21 @@ virDomainActualNetDefParseXML(xmlNodePtr node,
|
||||
}
|
||||
|
||||
bandwidth_node = virXPathNode("./bandwidth", ctxt);
|
||||
if (bandwidth_node &&
|
||||
virNetDevBandwidthParse(&actual->bandwidth,
|
||||
bandwidth_node,
|
||||
actual->type == VIR_DOMAIN_NET_TYPE_NETWORK) < 0)
|
||||
goto error;
|
||||
if (bandwidth_node) {
|
||||
/* type == NETWORK is legacy config, converted to BRIDGE
|
||||
* in post-parse function, but this code runs before
|
||||
* post-parse logic, so we must account for configs still
|
||||
* using legacy type == NETWORK
|
||||
*/
|
||||
bool allowFloor =
|
||||
(actual->type == VIR_DOMAIN_NET_TYPE_NETWORK) ||
|
||||
(actual->type == VIR_DOMAIN_NET_TYPE_BRIDGE &&
|
||||
actual->data.bridge.brname != NULL);
|
||||
if (virNetDevBandwidthParse(&actual->bandwidth,
|
||||
bandwidth_node,
|
||||
allowFloor) < 0)
|
||||
goto error;
|
||||
}
|
||||
|
||||
vlanNode = virXPathNode("./vlan", ctxt);
|
||||
if (vlanNode && virNetDevVlanParse(vlanNode, ctxt, &actual->vlan) < 0)
|
||||
|
@ -4491,11 +4491,7 @@ networkAllocateActualDevice(virNetworkPtr net,
|
||||
case VIR_NETWORK_FORWARD_NAT:
|
||||
case VIR_NETWORK_FORWARD_ROUTE:
|
||||
case VIR_NETWORK_FORWARD_OPEN:
|
||||
/* for these forward types, the actual net type really *is*
|
||||
* NETWORK; we just keep the info from the portgroup in
|
||||
* iface->data.network.actual
|
||||
*/
|
||||
iface->data.network.actual->type = VIR_DOMAIN_NET_TYPE_NETWORK;
|
||||
iface->data.network.actual->type = VIR_DOMAIN_NET_TYPE_BRIDGE;
|
||||
|
||||
/* we also store the bridge device and macTableManager settings
|
||||
* in iface->data.network.actual->data.bridge for later use
|
||||
@ -5454,9 +5450,8 @@ networkBandwidthGenericChecks(virDomainNetDefPtr iface,
|
||||
virNetDevBandwidthPtr ifaceBand;
|
||||
unsigned long long old_floor, new_floor;
|
||||
|
||||
if (virDomainNetGetActualType(iface) != VIR_DOMAIN_NET_TYPE_NETWORK &&
|
||||
(virDomainNetGetActualType(iface) != VIR_DOMAIN_NET_TYPE_BRIDGE ||
|
||||
iface->data.network.actual->data.bridge.brname == NULL)) {
|
||||
if (virDomainNetGetActualType(iface) != VIR_DOMAIN_NET_TYPE_BRIDGE ||
|
||||
iface->data.network.actual->data.bridge.brname == NULL) {
|
||||
/* This is not an interface that's plugged into a network.
|
||||
* We don't care. Thus from our POV bandwidth change is allowed. */
|
||||
return false;
|
||||
|
@ -4567,7 +4567,7 @@ processNicRxFilterChangedEvent(virQEMUDriverPtr driver,
|
||||
syncNicRxFilterDeviceOptions(def->ifname, guestFilter, hostFilter);
|
||||
}
|
||||
|
||||
if (virDomainNetGetActualType(def) == VIR_DOMAIN_NET_TYPE_NETWORK) {
|
||||
if (virDomainNetGetActualType(def) == VIR_DOMAIN_NET_TYPE_BRIDGE) {
|
||||
const char *brname = virDomainNetGetActualBridgeName(def);
|
||||
|
||||
/* For libivrt network connections, set the following TUN/TAP network
|
||||
|
@ -458,7 +458,7 @@
|
||||
<interface type='network'>
|
||||
<mac address='52:54:00:36:bd:3b'/>
|
||||
<source network='default'/>
|
||||
<actual type='network'>
|
||||
<actual type='bridge'>
|
||||
<source bridge='virbr0'/>
|
||||
</actual>
|
||||
<target dev='vnet0'/>
|
||||
|
@ -329,7 +329,7 @@
|
||||
<interface type='network'>
|
||||
<mac address='52:54:00:59:59:91'/>
|
||||
<source network='default'/>
|
||||
<actual type='network'>
|
||||
<actual type='bridge'>
|
||||
<source bridge='virbr0'/>
|
||||
</actual>
|
||||
<target dev='vnet0'/>
|
||||
|
@ -370,7 +370,7 @@
|
||||
<interface type='network'>
|
||||
<mac address='52:54:00:36:bd:3b'/>
|
||||
<source network='default'/>
|
||||
<actual type='network'>
|
||||
<actual type='bridge'>
|
||||
<source bridge='virbr0'/>
|
||||
</actual>
|
||||
<target dev='vnet0'/>
|
||||
|
@ -407,7 +407,7 @@
|
||||
<interface type='network'>
|
||||
<mac address='52:54:00:36:bd:3b'/>
|
||||
<source network='default'/>
|
||||
<actual type='network'>
|
||||
<actual type='bridge'>
|
||||
<source bridge='virbr0'/>
|
||||
</actual>
|
||||
<target dev='vnet0'/>
|
||||
|
@ -343,7 +343,7 @@
|
||||
<interface type='network'>
|
||||
<mac address='52:54:00:59:59:91'/>
|
||||
<source network='default'/>
|
||||
<actual type='network'>
|
||||
<actual type='bridge'>
|
||||
<source bridge='virbr0'/>
|
||||
</actual>
|
||||
<target dev='vnet0'/>
|
||||
|
@ -390,7 +390,7 @@
|
||||
<interface type='network'>
|
||||
<mac address='52:54:00:36:bd:3b'/>
|
||||
<source network='default'/>
|
||||
<actual type='network'>
|
||||
<actual type='bridge'>
|
||||
<source bridge='virbr0'/>
|
||||
</actual>
|
||||
<target dev='vnet0'/>
|
||||
|
Loading…
Reference in New Issue
Block a user