[libvirt] [PATCH 1/2] Revert "virt drivers: don't handle type=network after resolving actual network type"

Daniel P. Berrangé berrange at redhat.com
Tue Apr 30 12:36:46 UTC 2019


This reverts commit 2f5e6502e34d9ddba596fa824b2f2f3504b34a99.
---
 src/libxl/libxl_conf.c    | 21 ++++++++++++++++++---
 src/lxc/lxc_driver.c      | 15 ++++-----------
 src/qemu/qemu_command.c   |  8 ++------
 src/qemu/qemu_hotplug.c   | 13 ++-----------
 src/qemu/qemu_interface.c | 12 ++----------
 src/qemu/qemu_process.c   |  5 +----
 6 files changed, 29 insertions(+), 45 deletions(-)

diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 315c14652b..766a726ebc 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -1353,10 +1353,25 @@ libxlMakeNic(virDomainDefPtr def,
             }
             break;
         case VIR_DOMAIN_NET_TYPE_NETWORK:
-            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                           _("Unexpectedly found type=network for actual NIC type"));
-            goto cleanup;
+        {
+            if (!(conn = virConnectOpen("xen:///system")))
+                goto cleanup;
+
+            if (!(network =
+                  virNetworkLookupByName(conn, l_nic->data.network.name))) {
+                goto cleanup;
+            }
+
+            if (l_nic->guestIP.nips > 0) {
+                x_nic->ip = xenMakeIPList(&l_nic->guestIP);
+                if (!x_nic->ip)
+                    goto cleanup;
+            }
 
+            if (!(x_nic->bridge = virNetworkGetBridgeName(network)))
+                goto cleanup;
+            break;
+        }
         case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
         case VIR_DOMAIN_NET_TYPE_USER:
         case VIR_DOMAIN_NET_TYPE_SERVER:
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index fbdd33156a..1980d0804e 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -3848,7 +3848,8 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn,
     actualType = virDomainNetGetActualType(net);
 
     switch (actualType) {
-    case VIR_DOMAIN_NET_TYPE_BRIDGE: {
+    case VIR_DOMAIN_NET_TYPE_BRIDGE:
+    case VIR_DOMAIN_NET_TYPE_NETWORK: {
         const char *brname = virDomainNetGetActualBridgeName(net);
         if (!brname) {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@@ -3866,10 +3867,6 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn,
         if (!(veth = virLXCProcessSetupInterfaceDirect(conn, vm->def, net)))
             goto cleanup;
     }   break;
-    case VIR_DOMAIN_NET_TYPE_NETWORK:
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("Unexpectedly found type=network for actual NIC type"));
-        goto cleanup;
     case VIR_DOMAIN_NET_TYPE_USER:
     case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
     case VIR_DOMAIN_NET_TYPE_SERVER:
@@ -3915,6 +3912,7 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn,
     } else if (veth) {
         switch (actualType) {
         case VIR_DOMAIN_NET_TYPE_BRIDGE:
+        case VIR_DOMAIN_NET_TYPE_NETWORK:
         case VIR_DOMAIN_NET_TYPE_ETHERNET:
             ignore_value(virNetDevVethDelete(veth));
             break;
@@ -3923,7 +3921,6 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn,
             ignore_value(virNetDevMacVLanDelete(veth));
             break;
 
-        case VIR_DOMAIN_NET_TYPE_NETWORK:
         case VIR_DOMAIN_NET_TYPE_USER:
         case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
         case VIR_DOMAIN_NET_TYPE_SERVER:
@@ -4355,6 +4352,7 @@ lxcDomainDetachDeviceNetLive(virDomainObjPtr vm,
 
     switch (actualType) {
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
+    case VIR_DOMAIN_NET_TYPE_NETWORK:
     case VIR_DOMAIN_NET_TYPE_ETHERNET:
         if (virNetDevVethDelete(detach->ifname) < 0) {
             virDomainAuditNet(vm, detach, NULL, "detach", false);
@@ -4362,11 +4360,6 @@ lxcDomainDetachDeviceNetLive(virDomainObjPtr vm,
         }
         break;
 
-    case VIR_DOMAIN_NET_TYPE_NETWORK:
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("Unexpectedly found type=network for actual NIC type"));
-        goto cleanup;
-
         /* It'd be nice to support this, but with macvlan
          * once assigned to a container nothing exists on
          * the host side. Further the container can change
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index bf1fb539b1..50b4205267 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -8797,6 +8797,7 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
     }
 
     switch (actualType) {
+    case VIR_DOMAIN_NET_TYPE_NETWORK:
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
         tapfdSize = net->driver.virtio.queues;
         if (!tapfdSize)
@@ -8874,11 +8875,6 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
 
         break;
 
-    case VIR_DOMAIN_NET_TYPE_NETWORK:
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("Unexpectedly found type=network for actual NIC type"));
-        goto cleanup;
-
     case VIR_DOMAIN_NET_TYPE_USER:
     case VIR_DOMAIN_NET_TYPE_SERVER:
     case VIR_DOMAIN_NET_TYPE_CLIENT:
@@ -8895,6 +8891,7 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
     */
     switch ((virDomainNetType)actualType) {
     case VIR_DOMAIN_NET_TYPE_ETHERNET:
+    case VIR_DOMAIN_NET_TYPE_NETWORK:
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
     case VIR_DOMAIN_NET_TYPE_DIRECT:
     {
@@ -8912,7 +8909,6 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
         break;
     }
 
-    case VIR_DOMAIN_NET_TYPE_NETWORK:
     case VIR_DOMAIN_NET_TYPE_USER:
     case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
     case VIR_DOMAIN_NET_TYPE_SERVER:
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 630be12d54..e199368e8a 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1450,6 +1450,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
 
     switch (actualType) {
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
+    case VIR_DOMAIN_NET_TYPE_NETWORK:
         tapfdSize = vhostfdSize = net->driver.virtio.queues;
         if (!tapfdSize)
             tapfdSize = vhostfdSize = 1;
@@ -1541,11 +1542,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
         /* No preparation needed. */
         break;
 
-    case VIR_DOMAIN_NET_TYPE_NETWORK:
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("Unexpectedly found type=network for actual NIC type"));
-        goto cleanup;
-
     case VIR_DOMAIN_NET_TYPE_SERVER:
     case VIR_DOMAIN_NET_TYPE_CLIENT:
     case VIR_DOMAIN_NET_TYPE_MCAST:
@@ -3666,13 +3662,8 @@ qemuDomainChangeNetFilter(virDomainObjPtr vm,
     switch (virDomainNetGetActualType(newdev)) {
     case VIR_DOMAIN_NET_TYPE_ETHERNET:
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
-        break;
-
     case VIR_DOMAIN_NET_TYPE_NETWORK:
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("Unexpectedly found type=network for actual NIC type"));
-        return -1;
-
+        break;
     case VIR_DOMAIN_NET_TYPE_USER:
     case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
     case VIR_DOMAIN_NET_TYPE_SERVER:
diff --git a/src/qemu/qemu_interface.c b/src/qemu/qemu_interface.c
index 9bb0d70986..c8effa68f4 100644
--- a/src/qemu/qemu_interface.c
+++ b/src/qemu/qemu_interface.c
@@ -58,6 +58,7 @@ qemuInterfaceStartDevice(virDomainNetDefPtr net)
 
     switch (actualType) {
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
+    case VIR_DOMAIN_NET_TYPE_NETWORK:
         if (virDomainNetGetActualBridgeMACTableManager(net)
             == VIR_NETWORK_BRIDGE_MAC_TABLE_MANAGER_LIBVIRT) {
             /* libvirt is managing the FDB of the bridge this device
@@ -110,11 +111,6 @@ qemuInterfaceStartDevice(virDomainNetDefPtr net)
 
         break;
 
-    case VIR_DOMAIN_NET_TYPE_NETWORK:
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("Unexpectedly found type=network for actual NIC type"));
-        goto cleanup;
-
     case VIR_DOMAIN_NET_TYPE_USER:
     case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
     case VIR_DOMAIN_NET_TYPE_SERVER:
@@ -168,6 +164,7 @@ qemuInterfaceStopDevice(virDomainNetDefPtr net)
 
     switch (actualType) {
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
+    case VIR_DOMAIN_NET_TYPE_NETWORK:
         if (virDomainNetGetActualBridgeMACTableManager(net)
             == VIR_NETWORK_BRIDGE_MAC_TABLE_MANAGER_LIBVIRT) {
             /* remove the FDB entries that were added during
@@ -201,11 +198,6 @@ qemuInterfaceStopDevice(virDomainNetDefPtr net)
         break;
     }
 
-    case VIR_DOMAIN_NET_TYPE_NETWORK:
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("Unexpectedly found type=network for actual NIC type"));
-        goto cleanup;
-
     case VIR_DOMAIN_NET_TYPE_ETHERNET:
     case VIR_DOMAIN_NET_TYPE_USER:
     case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 688e27ab72..90466771cd 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -7302,15 +7302,12 @@ void qemuProcessStop(virQEMUDriverPtr driver,
             }
             break;
         case VIR_DOMAIN_NET_TYPE_BRIDGE:
+        case VIR_DOMAIN_NET_TYPE_NETWORK:
 #ifdef VIR_NETDEV_TAP_REQUIRE_MANUAL_CLEANUP
             if (!(vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH))
                 ignore_value(virNetDevTapDelete(net->ifname, net->backend.tap));
 #endif
             break;
-        case VIR_DOMAIN_NET_TYPE_NETWORK:
-            VIR_WARN("Unexpectedly found type=network for actual NIC type");
-            break;
-
         case VIR_DOMAIN_NET_TYPE_USER:
         case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
         case VIR_DOMAIN_NET_TYPE_SERVER:
-- 
2.20.1




More information about the libvir-list mailing list