[libvirt] [PATCH 05/27] network: add missing bandwidth limits for bridge forward type

Daniel P. Berrangé posted 27 patches 7 years, 1 month ago
There is a newer version of this series
[libvirt] [PATCH 05/27] network: add missing bandwidth limits for bridge forward type
Posted by Daniel P. Berrangé 7 years, 1 month ago
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@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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 05/27] network: add missing bandwidth limits for bridge forward type
Posted by Michal Privoznik 7 years, 1 month ago
On 12/24/18 3:58 PM, Daniel P. Berrangé wrote:
> 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@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);

Whoa. This looks ugly. Can you please turn it into:
  bool bandwidthAllowed = false;

  if (...)
    bandwidthAllowed = true;

> +
> +        if (def->bandwidth &&
> +            !bandwidthAllowed) {
>              virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>                             _("Unsupported network-wide <bandwidth> element "
>                               "in network %s with forward mode='%s'"),

Michal

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 05/27] network: add missing bandwidth limits for bridge forward type
Posted by Daniel P. Berrangé 7 years ago
On Tue, Jan 08, 2019 at 05:16:25PM +0100, Michal Privoznik wrote:
> On 12/24/18 3:58 PM, Daniel P. Berrangé wrote:
> > 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@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);
> 
> Whoa. This looks ugly. Can you please turn it into:
>   bool bandwidthAllowed = false;
> 
>   if (...)
>     bandwidthAllowed = true;

Ok, i'll refactor this a little

> 
> > +
> > +        if (def->bandwidth &&
> > +            !bandwidthAllowed) {
> >              virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> >                             _("Unsupported network-wide <bandwidth> element "
> >                               "in network %s with forward mode='%s'"),

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list