In the case of a network with forward=bridge, which has a bridge device
listed, we are capable of setting bandwidth limits but fail to call the
function to register them.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/network/bridge_driver.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index b5aac9350b..2639b5ce61 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -3374,7 +3374,13 @@ networkValidate(virNetworkDriverStatePtr driver,
virNetworkForwardTypeToString(def->forward.type));
return -1;
}
- if (def->bandwidth) {
+
+ bandwidthAllowed = (
+ def->forward.type == VIR_NETWORK_FORWARD_BRIDGE &&
+ def->bridge != NULL);
+
+ if (def->bandwidth &&
+ !bandwidthAllowed) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unsupported network-wide <bandwidth> element
"
"in network %s with forward mode='%s'"),
@@ -3382,7 +3388,6 @@ networkValidate(virNetworkDriverStatePtr driver,
virNetworkForwardTypeToString(def->forward.type));
return -1;
}
- bandwidthAllowed = false;
break;
case VIR_NETWORK_FORWARD_LAST:
@@ -4659,6 +4664,9 @@ networkAllocateActualDevice(virNetworkPtr net,
goto error;
}
}
+
+ if (networkPlugBandwidth(obj, iface) < 0)
+ goto error;
break;
}
@@ -5133,6 +5141,11 @@ networkReleaseActualDevice(virNetworkPtr net,
break;
case VIR_NETWORK_FORWARD_BRIDGE:
+ if (iface->data.network.actual &&
+ actualType == VIR_DOMAIN_NET_TYPE_BRIDGE &&
+ networkUnplugBandwidth(obj, iface) < 0)
+ goto error;
+ break;
case VIR_NETWORK_FORWARD_PRIVATE:
case VIR_NETWORK_FORWARD_VEPA:
case VIR_NETWORK_FORWARD_PASSTHROUGH:
--
2.19.2