mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-28 13:57:42 +03:00
qemu: call common NetDef validation for hotplug and device update
qemuDomainAttachNetDevice() (hotplug) previously had some of the validation that is in qemuDomainValidateActualNetDef(), but it was incomplete. qemuDomainChangeNet() had none of that validation, but it is all appropriate in both cases. This is the final piece of a previously partial resolution to https://bugzilla.redhat.com/1502754 Signed-off-by: Laine Stump <laine@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
3cff23f7f1
commit
70a29b378a
@ -1188,33 +1188,12 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* final validation now that we have full info on the type */
|
||||
if (qemuDomainValidateActualNetDef(net, priv->qemuCaps) < 0)
|
||||
return -1;
|
||||
|
||||
actualType = virDomainNetGetActualType(net);
|
||||
|
||||
/* Currently only TAP/macvtap devices supports multiqueue. */
|
||||
if (net->driver.virtio.queues > 0 &&
|
||||
!(actualType == VIR_DOMAIN_NET_TYPE_NETWORK ||
|
||||
actualType == VIR_DOMAIN_NET_TYPE_BRIDGE ||
|
||||
actualType == VIR_DOMAIN_NET_TYPE_DIRECT ||
|
||||
actualType == VIR_DOMAIN_NET_TYPE_ETHERNET ||
|
||||
actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("Multiqueue network is not supported for: %s"),
|
||||
virDomainNetTypeToString(actualType));
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* and only TAP devices support nwfilter rules */
|
||||
if (net->filter &&
|
||||
!(actualType == VIR_DOMAIN_NET_TYPE_NETWORK ||
|
||||
actualType == VIR_DOMAIN_NET_TYPE_BRIDGE ||
|
||||
actualType == VIR_DOMAIN_NET_TYPE_ETHERNET)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("filterref is not supported for "
|
||||
"network interfaces of type %s"),
|
||||
virDomainNetTypeToString(actualType));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (qemuAssignDeviceNetAlias(vm->def, net, -1) < 0)
|
||||
goto cleanup;
|
||||
|
||||
@ -3542,6 +3521,7 @@ qemuDomainChangeNet(virQEMUDriverPtr driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev)
|
||||
{
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
virDomainNetDefPtr newdev = dev->data.net;
|
||||
virDomainNetDefPtr *devslot = NULL;
|
||||
virDomainNetDefPtr olddev;
|
||||
@ -3749,6 +3729,10 @@ qemuDomainChangeNet(virQEMUDriverPtr driver,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* final validation now that we have full info on the type */
|
||||
if (qemuDomainValidateActualNetDef(newdev, priv->qemuCaps) < 0)
|
||||
goto cleanup;
|
||||
|
||||
newType = virDomainNetGetActualType(newdev);
|
||||
|
||||
if (newType == VIR_DOMAIN_NET_TYPE_HOSTDEV) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user