[libvirt] [PATCH v3 06/15] conf: expand network device callbacks to cover bandwidth updates

Michal Privoznik mprivozn at redhat.com
Thu Feb 8 10:46:38 UTC 2018


On 02/05/2018 04:28 PM, Daniel P. Berrangé wrote:
> Currently the QEMU driver will call directly into the network driver
> impl to modify network device bandwidth for interfaces with
> type=network. This introduces a callback system to allow us to decouple
> the QEMU driver from the network driver.
> 
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
>  src/conf/domain_conf.c      | 35 ++++++++++++++++++++++++++++++++++-
>  src/conf/domain_conf.h      | 22 +++++++++++++++++++++-
>  src/libvirt_private.syms    |  2 ++
>  src/network/bridge_driver.c |  8 +++++---
>  src/network/bridge_driver.h | 24 ------------------------
>  src/qemu/qemu_driver.c      |  5 ++---
>  6 files changed, 64 insertions(+), 32 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 1e3a83cf73..205f99618d 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -28820,15 +28820,22 @@ virDomainNetTypeSharesHostView(const virDomainNetDef *net)
>  static virDomainNetAllocateActualDeviceImpl netAllocate;
>  static virDomainNetNotifyActualDeviceImpl netNotify;
>  static virDomainNetReleaseActualDeviceImpl netRelease;
> +static virDomainNetBandwidthChangeAllowedImpl netBandwidthChangeAllowed;
> +static virDomainNetBandwidthUpdateImpl netBandwidthUpdate;
> +
>  
>  void
>  virDomainNetSetDeviceImpl(virDomainNetAllocateActualDeviceImpl allocate,
>                            virDomainNetNotifyActualDeviceImpl notify,
> -                          virDomainNetReleaseActualDeviceImpl release)
> +                          virDomainNetReleaseActualDeviceImpl release,
> +                          virDomainNetBandwidthChangeAllowedImpl bandwidthChangeAllowed,
> +                          virDomainNetBandwidthUpdateImpl bandwidthUpdate)
>  {
>      netAllocate = allocate;
>      netNotify = notify;
>      netRelease = release;
> +    netBandwidthChangeAllowed = bandwidthChangeAllowed;
> +    netBandwidthUpdate = bandwidthUpdate;
>  }
>  
>  int
> @@ -28870,3 +28877,29 @@ virDomainNetReleaseActualDevice(virDomainDefPtr dom,
>  
>      return netRelease(dom, iface);
>  }
> +
> +bool
> +virDomainNetBandwidthChangeAllowed(virDomainNetDefPtr iface,
> +                              virNetDevBandwidthPtr newBandwidth)
> +{
> +    if (!netBandwidthChangeAllowed) {
> +        virReportError(VIR_ERR_NO_SUPPORT, "%s",
> +                       _("Network device release not available"));

"Network device bandwidth change not available" or something among those
lines.

> +        return -1;
> +    }
> +
> +    return netBandwidthChangeAllowed(iface, newBandwidth);
> +}> +
> +int
> +virDomainNetBandwidthUpdate(virDomainNetDefPtr iface,
> +                            virNetDevBandwidthPtr newBandwidth)
> +{
> +    if (!netBandwidthUpdate) {
> +        virReportError(VIR_ERR_NO_SUPPORT, "%s",
> +                       _("Network device release not available"));

Same here.

> +        return -1;
> +    }

Michal




More information about the libvir-list mailing list