network: apply bandwidth settings for forward mode=bridge

We previously allowed bandwidth settings when attaching NICs
to networks with forward mode=bridge:

  commit 42a92ee93d
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   Tue Nov 20 11:30:05 2018 +0000

    network: add missing bandwidth limits for bridge forward type

    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.

    Reviewed-by: Cole Robinson <crobinso@redhat.com>
    Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

Unfortunately the wrong version of this patch was posted and
reviewed and thus it lacked the code to actually apply the
bandwidth settings to the bridge itself.

Reviewed-by: Laine Stump <laine@laine.org>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2019-09-13 17:00:40 +01:00
parent 7ab9bdd470
commit 0a85aad582

View File

@ -2743,21 +2743,39 @@ networkShutdownNetworkVirtual(virNetworkDriverStatePtr driver,
static int static int
networkStartNetworkBridge(virNetworkObjPtr obj) networkStartNetworkBridge(virNetworkObjPtr obj)
{ {
virNetworkDefPtr def = virNetworkObjGetDef(obj);
/* put anything here that needs to be done each time a network of /* put anything here that needs to be done each time a network of
* type BRIDGE, is started. On failure, undo anything you've done, * type BRIDGE, is started. On failure, undo anything you've done,
* and return -1. On success return 0. * and return -1. On success return 0.
*/ */
return networkStartHandleMACTableManagerMode(obj, NULL); if (virNetDevBandwidthSet(def->bridge, def->bandwidth, true, true) < 0)
goto error;
if (networkStartHandleMACTableManagerMode(obj, NULL) < 0)
goto error;
return 0;
error:
if (def->bandwidth)
virNetDevBandwidthClear(def->bridge);
return -1;
} }
static int static int
networkShutdownNetworkBridge(virNetworkObjPtr obj ATTRIBUTE_UNUSED) networkShutdownNetworkBridge(virNetworkObjPtr obj ATTRIBUTE_UNUSED)
{ {
virNetworkDefPtr def = virNetworkObjGetDef(obj);
/* put anything here that needs to be done each time a network of /* put anything here that needs to be done each time a network of
* type BRIDGE is shutdown. On failure, undo anything you've done, * type BRIDGE is shutdown. On failure, undo anything you've done,
* and return -1. On success return 0. * and return -1. On success return 0.
*/ */
if (def->bandwidth)
virNetDevBandwidthClear(def->bridge);
return 0; return 0;
} }