qemu: fail on attempt to set 'floor' if interface type is not 'network'

QoS 'floor' setting is documented to be only supported for interfaces of
type 'network'.  Fail with an error message on attempt to set 'floor' on
an interface of any other type.

Signed-off-by: Pavel Mores <pmores@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Pavel Mores 2020-02-14 17:26:21 +01:00 committed by Michal Privoznik
parent 17f430eb5c
commit 92a71456ac

View File

@ -11672,9 +11672,21 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
sizeof(*newBandwidth->out));
}
if (net->type == VIR_DOMAIN_NET_TYPE_NETWORK &&
virDomainNetBandwidthUpdate(net, newBandwidth) < 0)
goto endjob;
if (net->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
if (virDomainNetBandwidthUpdate(net, newBandwidth) < 0)
goto endjob;
} else {
if (virNetDevBandwidthHasFloor(bandwidth)) {
char ifmac[VIR_MAC_STRING_BUFLEN];
virMacAddrFormat(&net->mac, ifmac);
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
_("Invalid use of 'floor' on interface with MAC address %s "
"- 'floor' is only supported for interface type 'network' with forward type 'nat', 'route', 'open' or none"),
ifmac);
goto endjob;
}
}
if (virNetDevBandwidthSet(net->ifname, newBandwidth, false,
!virDomainNetTypeSharesHostView(net)) < 0) {