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@xxxxxxxxxx> --- 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list