virt drivers: don't handle type=network after resolving actual network type

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>
This commit is contained in:
Daniel P. Berrangé 2018-08-08 16:27:53 +01:00
parent 518026e159
commit 2f5e6502e3
6 changed files with 45 additions and 29 deletions

View File

@ -1352,25 +1352,10 @@ libxlMakeNic(virDomainDefPtr def,
} }
break; break;
case VIR_DOMAIN_NET_TYPE_NETWORK: case VIR_DOMAIN_NET_TYPE_NETWORK:
{ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
if (!(conn = virConnectOpen("xen:///system"))) _("Unexpectedly found type=network for actual NIC type"));
goto cleanup; 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_VHOSTUSER:
case VIR_DOMAIN_NET_TYPE_USER: case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_SERVER: case VIR_DOMAIN_NET_TYPE_SERVER:

View File

@ -3848,8 +3848,7 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn,
actualType = virDomainNetGetActualType(net); actualType = virDomainNetGetActualType(net);
switch (actualType) { 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); const char *brname = virDomainNetGetActualBridgeName(net);
if (!brname) { if (!brname) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@ -3867,6 +3866,10 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn,
if (!(veth = virLXCProcessSetupInterfaceDirect(conn, vm->def, net))) if (!(veth = virLXCProcessSetupInterfaceDirect(conn, vm->def, net)))
goto cleanup; goto cleanup;
} break; } 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_USER:
case VIR_DOMAIN_NET_TYPE_VHOSTUSER: case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
case VIR_DOMAIN_NET_TYPE_SERVER: case VIR_DOMAIN_NET_TYPE_SERVER:
@ -3912,7 +3915,6 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn,
} else if (veth) { } else if (veth) {
switch (actualType) { switch (actualType) {
case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_BRIDGE:
case VIR_DOMAIN_NET_TYPE_NETWORK:
case VIR_DOMAIN_NET_TYPE_ETHERNET: case VIR_DOMAIN_NET_TYPE_ETHERNET:
ignore_value(virNetDevVethDelete(veth)); ignore_value(virNetDevVethDelete(veth));
break; break;
@ -3921,6 +3923,7 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn,
ignore_value(virNetDevMacVLanDelete(veth)); ignore_value(virNetDevMacVLanDelete(veth));
break; break;
case VIR_DOMAIN_NET_TYPE_NETWORK:
case VIR_DOMAIN_NET_TYPE_USER: case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_VHOSTUSER: case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
case VIR_DOMAIN_NET_TYPE_SERVER: case VIR_DOMAIN_NET_TYPE_SERVER:
@ -4352,7 +4355,6 @@ lxcDomainDetachDeviceNetLive(virDomainObjPtr vm,
switch (actualType) { switch (actualType) {
case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_BRIDGE:
case VIR_DOMAIN_NET_TYPE_NETWORK:
case VIR_DOMAIN_NET_TYPE_ETHERNET: case VIR_DOMAIN_NET_TYPE_ETHERNET:
if (virNetDevVethDelete(detach->ifname) < 0) { if (virNetDevVethDelete(detach->ifname) < 0) {
virDomainAuditNet(vm, detach, NULL, "detach", false); virDomainAuditNet(vm, detach, NULL, "detach", false);
@ -4360,6 +4362,11 @@ lxcDomainDetachDeviceNetLive(virDomainObjPtr vm,
} }
break; 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 /* It'd be nice to support this, but with macvlan
* once assigned to a container nothing exists on * once assigned to a container nothing exists on
* the host side. Further the container can change * the host side. Further the container can change

View File

@ -8798,7 +8798,6 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
} }
switch (actualType) { switch (actualType) {
case VIR_DOMAIN_NET_TYPE_NETWORK:
case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_BRIDGE:
tapfdSize = net->driver.virtio.queues; tapfdSize = net->driver.virtio.queues;
if (!tapfdSize) if (!tapfdSize)
@ -8876,6 +8875,11 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
break; 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_USER:
case VIR_DOMAIN_NET_TYPE_SERVER: case VIR_DOMAIN_NET_TYPE_SERVER:
case VIR_DOMAIN_NET_TYPE_CLIENT: case VIR_DOMAIN_NET_TYPE_CLIENT:
@ -8892,7 +8896,6 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
*/ */
switch ((virDomainNetType)actualType) { switch ((virDomainNetType)actualType) {
case VIR_DOMAIN_NET_TYPE_ETHERNET: case VIR_DOMAIN_NET_TYPE_ETHERNET:
case VIR_DOMAIN_NET_TYPE_NETWORK:
case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_BRIDGE:
case VIR_DOMAIN_NET_TYPE_DIRECT: case VIR_DOMAIN_NET_TYPE_DIRECT:
{ {
@ -8910,6 +8913,7 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
break; break;
} }
case VIR_DOMAIN_NET_TYPE_NETWORK:
case VIR_DOMAIN_NET_TYPE_USER: case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_VHOSTUSER: case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
case VIR_DOMAIN_NET_TYPE_SERVER: case VIR_DOMAIN_NET_TYPE_SERVER:

View File

@ -1444,7 +1444,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
switch (actualType) { switch (actualType) {
case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_BRIDGE:
case VIR_DOMAIN_NET_TYPE_NETWORK:
tapfdSize = vhostfdSize = net->driver.virtio.queues; tapfdSize = vhostfdSize = net->driver.virtio.queues;
if (!tapfdSize) if (!tapfdSize)
tapfdSize = vhostfdSize = 1; tapfdSize = vhostfdSize = 1;
@ -1536,6 +1535,11 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
/* No preparation needed. */ /* No preparation needed. */
break; 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_SERVER:
case VIR_DOMAIN_NET_TYPE_CLIENT: case VIR_DOMAIN_NET_TYPE_CLIENT:
case VIR_DOMAIN_NET_TYPE_MCAST: case VIR_DOMAIN_NET_TYPE_MCAST:
@ -3656,8 +3660,13 @@ qemuDomainChangeNetFilter(virDomainObjPtr vm,
switch (virDomainNetGetActualType(newdev)) { switch (virDomainNetGetActualType(newdev)) {
case VIR_DOMAIN_NET_TYPE_ETHERNET: case VIR_DOMAIN_NET_TYPE_ETHERNET:
case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_BRIDGE:
case VIR_DOMAIN_NET_TYPE_NETWORK:
break; 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_USER:
case VIR_DOMAIN_NET_TYPE_VHOSTUSER: case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
case VIR_DOMAIN_NET_TYPE_SERVER: case VIR_DOMAIN_NET_TYPE_SERVER:

View File

@ -58,7 +58,6 @@ qemuInterfaceStartDevice(virDomainNetDefPtr net)
switch (actualType) { switch (actualType) {
case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_BRIDGE:
case VIR_DOMAIN_NET_TYPE_NETWORK:
if (virDomainNetGetActualBridgeMACTableManager(net) if (virDomainNetGetActualBridgeMACTableManager(net)
== VIR_NETWORK_BRIDGE_MAC_TABLE_MANAGER_LIBVIRT) { == VIR_NETWORK_BRIDGE_MAC_TABLE_MANAGER_LIBVIRT) {
/* libvirt is managing the FDB of the bridge this device /* libvirt is managing the FDB of the bridge this device
@ -111,6 +110,11 @@ qemuInterfaceStartDevice(virDomainNetDefPtr net)
break; 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_USER:
case VIR_DOMAIN_NET_TYPE_VHOSTUSER: case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
case VIR_DOMAIN_NET_TYPE_SERVER: case VIR_DOMAIN_NET_TYPE_SERVER:
@ -164,7 +168,6 @@ qemuInterfaceStopDevice(virDomainNetDefPtr net)
switch (actualType) { switch (actualType) {
case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_BRIDGE:
case VIR_DOMAIN_NET_TYPE_NETWORK:
if (virDomainNetGetActualBridgeMACTableManager(net) if (virDomainNetGetActualBridgeMACTableManager(net)
== VIR_NETWORK_BRIDGE_MAC_TABLE_MANAGER_LIBVIRT) { == VIR_NETWORK_BRIDGE_MAC_TABLE_MANAGER_LIBVIRT) {
/* remove the FDB entries that were added during /* remove the FDB entries that were added during
@ -198,6 +201,11 @@ qemuInterfaceStopDevice(virDomainNetDefPtr net)
break; 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_ETHERNET:
case VIR_DOMAIN_NET_TYPE_USER: case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_VHOSTUSER: case VIR_DOMAIN_NET_TYPE_VHOSTUSER:

View File

@ -7302,12 +7302,15 @@ void qemuProcessStop(virQEMUDriverPtr driver,
} }
break; break;
case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_BRIDGE:
case VIR_DOMAIN_NET_TYPE_NETWORK:
#ifdef VIR_NETDEV_TAP_REQUIRE_MANUAL_CLEANUP #ifdef VIR_NETDEV_TAP_REQUIRE_MANUAL_CLEANUP
if (!(vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH)) if (!(vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH))
ignore_value(virNetDevTapDelete(net->ifname, net->backend.tap)); ignore_value(virNetDevTapDelete(net->ifname, net->backend.tap));
#endif #endif
break; 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_USER:
case VIR_DOMAIN_NET_TYPE_VHOSTUSER: case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
case VIR_DOMAIN_NET_TYPE_SERVER: case VIR_DOMAIN_NET_TYPE_SERVER: