[libvirt] [PATCH] conf: avoid reporting errors when network driver is disabled

Laine Stump laine at laine.org
Fri Mar 23 15:27:37 UTC 2018


On 03/23/2018 07:46 AM, Daniel P. Berrangé wrote:
> In previous releases all these methods were a no-op if the network
> driver is disabled. These helper methods are called unconditionally for
> all types of network interface, so must be no-ops if missing. Other code
> will already generate an error if the network driver is disabled and a
> NIC with type=network is used.
>
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>

Reviewed-by: Laine Stump <laine at laine.org>

I've been thinking about this the last few hours. The end-game of making
the network driver available separately is to have all of the
functionality for setting up network interfaces be in the network
driver, including creation of tap devices and attaching them to bridges,
adding iptables rules, setting QoS. Once this is done, it will no longer
be possible to build with --without-network and have a functionally
useful libvirtd. Either we will have to redefine what
"--without-network" means (so that it just applies to the "virtual
networks" part of the network driver), or remove that option.

> ---
>  src/conf/domain_conf.c | 23 +++++++++--------------
>  1 file changed, 9 insertions(+), 14 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index c8d051fa9f..79d6bd378e 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -28979,10 +28979,13 @@ int
>  virDomainNetAllocateActualDevice(virDomainDefPtr dom,
>                                   virDomainNetDefPtr iface)
>  {
> +    /* Just silently ignore if network driver isn't present. If something
> +     * has tried to use a NIC with type=network, other code will already
> +     * cause an error. This ensures type=bridge doesn't break when
> +     * network driver is compiled out.
> +     */
>      if (!netAllocate) {
> -        virReportError(VIR_ERR_NO_SUPPORT, "%s",
> -                       _("Network device allocation not available"));
> -        return -1;
> +        return 0;
>      }
>  
>      return netAllocate(dom, iface);
> @@ -28993,8 +28996,6 @@ virDomainNetNotifyActualDevice(virDomainDefPtr dom,
>                                 virDomainNetDefPtr iface)
>  {
>      if (!netNotify) {
> -        virReportError(VIR_ERR_NO_SUPPORT, "%s",
> -                       _("Network device notification not available"));
>          return;
>      }
>  
> @@ -29007,9 +29008,7 @@ virDomainNetReleaseActualDevice(virDomainDefPtr dom,
>                                  virDomainNetDefPtr iface)
>  {
>      if (!netRelease) {
> -        virReportError(VIR_ERR_NO_SUPPORT, "%s",
> -                       _("Network device release not available"));
> -        return -1;
> +        return 0;
>      }
>  
>      return netRelease(dom, iface);
> @@ -29020,9 +29019,7 @@ virDomainNetBandwidthChangeAllowed(virDomainNetDefPtr iface,
>                                     virNetDevBandwidthPtr newBandwidth)
>  {
>      if (!netBandwidthChangeAllowed) {
> -        virReportError(VIR_ERR_NO_SUPPORT, "%s",
> -                       _("Network device bandwidth change query not available"));
> -        return -1;
> +        return 0;
>      }
>  
>      return netBandwidthChangeAllowed(iface, newBandwidth);
> @@ -29033,9 +29030,7 @@ virDomainNetBandwidthUpdate(virDomainNetDefPtr iface,
>                              virNetDevBandwidthPtr newBandwidth)
>  {
>      if (!netBandwidthUpdate) {
> -        virReportError(VIR_ERR_NO_SUPPORT, "%s",
> -                       _("Network device bandwidth update not available"));
> -        return -1;
> +        return 0;
>      }
>  
>      return netBandwidthUpdate(iface, newBandwidth);





More information about the libvir-list mailing list