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.

Signed-off-by: Daniel P. Berrangé <berra...@redhat.com>
---
 src/network/bridge_driver.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 2639b5ce61..822da7c6ac 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -4533,11 +4533,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
@@ -4905,12 +4901,21 @@ networkNotifyActualDevice(virNetworkPtr net,
      * actualType==network, we need to copy it in so that it will be
      * available in all cases
      */
-    if (actualType == VIR_DOMAIN_NET_TYPE_NETWORK &&
+    if (actualType == VIR_DOMAIN_NET_TYPE_BRIDGE &&
         !iface->data.network.actual->data.bridge.brname &&
         (VIR_STRDUP(iface->data.network.actual->data.bridge.brname,
                     netdef->bridge) < 0))
             goto error;
 
+    /* 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 (actualType == VIR_DOMAIN_NET_TYPE_NETWORK) {
+        iface->data.network.actual->type = VIR_DOMAIN_NET_TYPE_BRIDGE;
+        actualType = VIR_DOMAIN_NET_TYPE_BRIDGE;
+    }
+
     /* see if we're connected to the correct bridge */
     if (netdef->bridge) {
         bool useOVS = false;
-- 
2.19.2

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

Reply via email to