]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virt drivers: don't handle type=network after resolving actual network type
authorDaniel P. Berrangé <berrange@redhat.com>
Wed, 8 Aug 2018 15:27:53 +0000 (16:27 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Thu, 18 Apr 2019 12:10:06 +0000 (13:10 +0100)
The call to resolve the actual network type will turn any NICs with
type=network into one of the other types. Thus there should be no need
to handle type=network in later switch() statements jumping off the
actual type.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
src/libxl/libxl_conf.c
src/lxc/lxc_driver.c
src/qemu/qemu_command.c
src/qemu/qemu_hotplug.c
src/qemu/qemu_interface.c
src/qemu/qemu_process.c

index da1fc4f9f2d787ffdb4f723d2f7cc44dc21821c3..c701df33706745187f939f6f4bfb39dc4a284d24 100644 (file)
@@ -1352,25 +1352,10 @@ libxlMakeNic(virDomainDefPtr def,
             }
             break;
         case VIR_DOMAIN_NET_TYPE_NETWORK:
-        {
-            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;
-            }
+            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                           _("Unexpectedly found type=network for actual NIC type"));
+            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:
index a184e67e153dd9fa2a2740cc21b103fe284646f4..37002dbf2385dc13ea7b009eaea6cf589bfcd562 100644 (file)
@@ -3848,8 +3848,7 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn,
     actualType = virDomainNetGetActualType(net);
 
     switch (actualType) {
-    case VIR_DOMAIN_NET_TYPE_BRIDGE:
-    case VIR_DOMAIN_NET_TYPE_NETWORK: {
+    case VIR_DOMAIN_NET_TYPE_BRIDGE: {
         const char *brname = virDomainNetGetActualBridgeName(net);
         if (!brname) {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@@ -3867,6 +3866,10 @@ 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:
@@ -3912,7 +3915,6 @@ 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;
@@ -3921,6 +3923,7 @@ 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:
@@ -4352,7 +4355,6 @@ 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);
@@ -4360,6 +4362,11 @@ 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
index 9df7b7e8eafecc234ff81be19327881d142f523e..1425d97b1ec807a458591b6292334d632d586e13 100644 (file)
@@ -8798,7 +8798,6 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
     }
 
     switch (actualType) {
-    case VIR_DOMAIN_NET_TYPE_NETWORK:
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
         tapfdSize = net->driver.virtio.queues;
         if (!tapfdSize)
@@ -8876,6 +8875,11 @@ 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:
@@ -8892,7 +8896,6 @@ 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:
     {
@@ -8910,6 +8913,7 @@ 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:
index a4f7d111b119d984e43c37038765768410deac39..16da2b95fd7397244a42b9979977208871b081dd 100644 (file)
@@ -1444,7 +1444,6 @@ 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;
@@ -1536,6 +1535,11 @@ 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:
@@ -3656,8 +3660,13 @@ qemuDomainChangeNetFilter(virDomainObjPtr vm,
     switch (virDomainNetGetActualType(newdev)) {
     case VIR_DOMAIN_NET_TYPE_ETHERNET:
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
-    case VIR_DOMAIN_NET_TYPE_NETWORK:
         break;
+
+    case VIR_DOMAIN_NET_TYPE_NETWORK:
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("Unexpectedly found type=network for actual NIC type"));
+        return -1;
+
     case VIR_DOMAIN_NET_TYPE_USER:
     case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
     case VIR_DOMAIN_NET_TYPE_SERVER:
index c8effa68f4a515ce1b4b8023cfe7946e5ab3ad9a..9bb0d70986733d4018e494c27dde78ceb64beddb 100644 (file)
@@ -58,7 +58,6 @@ 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
@@ -111,6 +110,11 @@ 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:
@@ -164,7 +168,6 @@ 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
@@ -198,6 +201,11 @@ 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:
index 71d4b39302ea5f1793fe71a6d2d5b17b4576a5f0..a7a475e75c913d967035ac29aae14e055ada652f 100644 (file)
@@ -7302,12 +7302,15 @@ 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: