[prev in list] [next in list] [prev in thread] [next in thread] 

List:       libvir-list
Subject:    [libvirt] [PATCH 2/2] Revert "network: use 'bridge' as actual type instead of 'network'"
From:       Daniel P. Berrangé <berrange () redhat ! com>
Date:       2019-04-30 12:36:47
Message-ID: 20190430123647.31155-3-berrange () redhat ! com
[Download RAW message or body]

This caused the live XML to report the 'bridge' type instead of the
'network' type, which is a behavioural regression.

It also breaks 'virsh domif-setlink', 'virsh update-device' and
'virsh domiftune'

This reverts commit 518026e15959ab0e19b659a9f2ff502a54946498.
---
 src/conf/domain_conf.c                        | 33 +++----------------
 src/network/bridge_driver.c                   | 11 +++++--
 src/qemu/qemu_driver.c                        |  2 +-
 .../disk-secinfo-upgrade-out.xml              |  2 +-
 .../migration-in-params-in.xml                |  2 +-
 .../migration-out-nbd-out.xml                 |  2 +-
 .../migration-out-nbd-tls-out.xml             |  2 +-
 .../migration-out-params-in.xml               |  2 +-
 tests/qemustatusxml2xmldata/modern-in.xml     |  2 +-
 9 files changed, 20 insertions(+), 38 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 6331424635..b4fb6cf981 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -5128,19 +5128,6 @@ 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;
 }
 
@@ -11281,21 +11268,11 @@ virDomainActualNetDefParseXML(xmlNodePtr node,
     }
 
     bandwidth_node = virXPathNode("./bandwidth", ctxt);
-    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;
-    }
+    if (bandwidth_node &&
+        virNetDevBandwidthParse(&actual->bandwidth,
+                                bandwidth_node,
+                                actual->type == VIR_DOMAIN_NET_TYPE_NETWORK) < 0)
+        goto error;
 
     vlanNode = virXPathNode("./vlan", ctxt);
     if (vlanNode && virNetDevVlanParse(vlanNode, ctxt, &actual->vlan) < 0)
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 77206b4584..26f7f80418 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -4489,7 +4489,11 @@ networkAllocateActualDevice(virNetworkPtr net,
     case VIR_NETWORK_FORWARD_NAT:
     case VIR_NETWORK_FORWARD_ROUTE:
     case VIR_NETWORK_FORWARD_OPEN:
-        iface->data.network.actual->type = VIR_DOMAIN_NET_TYPE_BRIDGE;
+        /* 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;
 
         /* we also store the bridge device and macTableManager settings
          * in iface->data.network.actual->data.bridge for later use
@@ -5433,8 +5437,9 @@ networkBandwidthGenericChecks(virDomainNetDefPtr iface,
     virNetDevBandwidthPtr ifaceBand;
     unsigned long long old_floor, new_floor;
 
-    if (virDomainNetGetActualType(iface) != VIR_DOMAIN_NET_TYPE_BRIDGE ||
-        iface->data.network.actual->data.bridge.brname == NULL) {
+    if (virDomainNetGetActualType(iface) != VIR_DOMAIN_NET_TYPE_NETWORK &&
+        (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;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index c072bed1ce..b2ac737d1f 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -4567,7 +4567,7 @@ processNicRxFilterChangedEvent(virQEMUDriverPtr driver,
         syncNicRxFilterDeviceOptions(def->ifname, guestFilter, hostFilter);
     }
 
-    if (virDomainNetGetActualType(def) == VIR_DOMAIN_NET_TYPE_BRIDGE) {
+    if (virDomainNetGetActualType(def) == VIR_DOMAIN_NET_TYPE_NETWORK) {
         const char *brname = virDomainNetGetActualBridgeName(def);
 
         /* For libivrt network connections, set the following TUN/TAP network
diff --git a/tests/qemustatusxml2xmldata/disk-secinfo-upgrade-out.xml \
b/tests/qemustatusxml2xmldata/disk-secinfo-upgrade-out.xml index \
                2ff4e5249c..7a26e93aa4 100644
--- a/tests/qemustatusxml2xmldata/disk-secinfo-upgrade-out.xml
+++ b/tests/qemustatusxml2xmldata/disk-secinfo-upgrade-out.xml
@@ -458,7 +458,7 @@
       <interface type='network'>
         <mac address='52:54:00:36:bd:3b'/>
         <source network='default'/>
-        <actual type='bridge'>
+        <actual type='network'>
           <source bridge='virbr0'/>
         </actual>
         <target dev='vnet0'/>
diff --git a/tests/qemustatusxml2xmldata/migration-in-params-in.xml \
b/tests/qemustatusxml2xmldata/migration-in-params-in.xml index 2d72050782..03f18b4f3d \
                100644
--- a/tests/qemustatusxml2xmldata/migration-in-params-in.xml
+++ b/tests/qemustatusxml2xmldata/migration-in-params-in.xml
@@ -329,7 +329,7 @@
       <interface type='network'>
         <mac address='52:54:00:59:59:91'/>
         <source network='default'/>
-        <actual type='bridge'>
+        <actual type='network'>
           <source bridge='virbr0'/>
         </actual>
         <target dev='vnet0'/>
diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml \
b/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml index b7b03c380a..315d8e4c1a \
                100644
--- a/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml
+++ b/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml
@@ -370,7 +370,7 @@
       <interface type='network'>
         <mac address='52:54:00:36:bd:3b'/>
         <source network='default'/>
-        <actual type='bridge'>
+        <actual type='network'>
           <source bridge='virbr0'/>
         </actual>
         <target dev='vnet0'/>
diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-tls-out.xml \
b/tests/qemustatusxml2xmldata/migration-out-nbd-tls-out.xml index \
                ec79ef7304..869f37d488 100644
--- a/tests/qemustatusxml2xmldata/migration-out-nbd-tls-out.xml
+++ b/tests/qemustatusxml2xmldata/migration-out-nbd-tls-out.xml
@@ -407,7 +407,7 @@
       <interface type='network'>
         <mac address='52:54:00:36:bd:3b'/>
         <source network='default'/>
-        <actual type='bridge'>
+        <actual type='network'>
           <source bridge='virbr0'/>
         </actual>
         <target dev='vnet0'/>
diff --git a/tests/qemustatusxml2xmldata/migration-out-params-in.xml \
b/tests/qemustatusxml2xmldata/migration-out-params-in.xml index \
                cdcde09fe8..ae2064830a 100644
--- a/tests/qemustatusxml2xmldata/migration-out-params-in.xml
+++ b/tests/qemustatusxml2xmldata/migration-out-params-in.xml
@@ -343,7 +343,7 @@
       <interface type='network'>
         <mac address='52:54:00:59:59:91'/>
         <source network='default'/>
-        <actual type='bridge'>
+        <actual type='network'>
           <source bridge='virbr0'/>
         </actual>
         <target dev='vnet0'/>
diff --git a/tests/qemustatusxml2xmldata/modern-in.xml \
b/tests/qemustatusxml2xmldata/modern-in.xml index f0afbff3c4..08f7f40761 100644
--- a/tests/qemustatusxml2xmldata/modern-in.xml
+++ b/tests/qemustatusxml2xmldata/modern-in.xml
@@ -390,7 +390,7 @@
       <interface type='network'>
         <mac address='52:54:00:36:bd:3b'/>
         <source network='default'/>
-        <actual type='bridge'>
+        <actual type='network'>
           <source bridge='virbr0'/>
         </actual>
         <target dev='vnet0'/>
-- 
2.20.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic