From 17f430eb5cfaaa3388077f2b0856f011f0b2a4c3 Mon Sep 17 00:00:00 2001 From: Pavel Mores Date: Fri, 14 Feb 2020 17:26:19 +0100 Subject: [PATCH] qemu: test if bandwidth has 'floor' factored out to separate function This compound condition will be useful in several places so it makes sense to give it a name for better readability. Signed-off-by: Pavel Mores Signed-off-by: Michal Privoznik Reviewed-by: Michal Privoznik --- src/conf/netdev_bandwidth_conf.c | 7 +++++++ src/conf/netdev_bandwidth_conf.h | 3 +++ src/libvirt_private.syms | 1 + src/network/bridge_driver.c | 7 ++++--- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/conf/netdev_bandwidth_conf.c b/src/conf/netdev_bandwidth_conf.c index a6b41976c6..6307ac4d56 100644 --- a/src/conf/netdev_bandwidth_conf.c +++ b/src/conf/netdev_bandwidth_conf.c @@ -297,3 +297,10 @@ virDomainClearNetBandwidth(virDomainObjPtr vm) virNetDevBandwidthClear(vm->def->nets[i]->ifname); } } + + +bool +virNetDevBandwidthHasFloor(const virNetDevBandwidth *b) +{ + return b && b->in && b->in->floor != 0; +} diff --git a/src/conf/netdev_bandwidth_conf.h b/src/conf/netdev_bandwidth_conf.h index 0004e48a4a..0e10a4cb01 100644 --- a/src/conf/netdev_bandwidth_conf.h +++ b/src/conf/netdev_bandwidth_conf.h @@ -57,3 +57,6 @@ static inline bool virNetDevSupportBandwidth(virDomainNetType type) } return false; } + + +bool virNetDevBandwidthHasFloor(const virNetDevBandwidth *b); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index dc0449d1d8..73c94ed81a 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -733,6 +733,7 @@ virInterfaceDefParseString; # conf/netdev_bandwidth_conf.h virDomainClearNetBandwidth; virNetDevBandwidthFormat; +virNetDevBandwidthHasFloor; virNetDevBandwidthParse; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 94212eec77..6d7eadad43 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -5065,7 +5065,7 @@ networkCheckBandwidth(virNetworkObjPtr obj, virMacAddrFormat(ifaceMac, ifmac); - if (ifaceBand && ifaceBand->in && ifaceBand->in->floor && + if (virNetDevBandwidthHasFloor(ifaceBand) && !(netBand && netBand->in)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("Invalid use of 'floor' on interface with MAC " @@ -5079,8 +5079,9 @@ networkCheckBandwidth(virNetworkObjPtr obj, /* no QoS required, claim success */ return 1; } - if (((!ifaceBand || !ifaceBand->in || !ifaceBand->in->floor) && - (!oldBandwidth || !oldBandwidth->in || !oldBandwidth->in->floor))) { + if (!virNetDevBandwidthHasFloor(ifaceBand) && + !virNetDevBandwidthHasFloor(oldBandwidth)) { + VIR_DEBUG("No old/new interface bandwidth floor"); /* no QoS required, claim success */ return 1;