[libvirt] [PATCH] configure: fix check for DEVLINK_CMD_ESWITCH_GET

John Ferlan jferlan at redhat.com
Tue Sep 19 12:47:21 UTC 2017



On 09/19/2017 08:04 AM, Ján Tomko wrote:
> Instead of checking for all possible constants that every
> kernel header with devlink support should have (and defining
> HAVE_DECL_DEVLINK as 1 if any of them is present due to the
> way AC_CHECK_DECLS works), only check for DEVLINK_CMD_ESWITCH_GET.
> 
> This is the name of the constant since kernel 4.11. Between 4.8
> and 4.11, the now deprecated spelling DEVLINK_CMD_ESWITCH_MODE_GET
> was used.
> ---
> Yet another version.
> 
>  configure.ac         | 9 +++------
>  src/util/virnetdev.c | 4 ++--
>  2 files changed, 5 insertions(+), 8 deletions(-)
> 

The one drawback for this is that hosts with kernels between 4.8 and
4.11 won't be able to use the functionality only because the name
changes in 4.11.  It's not that the command isn't available and the
other symbols aren't available, it's just a name change.

Still, I think this is a lot cleaner and avoids the name change
completely which I'm perfectly fine with; however, if the "claim" from
the committed patch is that this works as of kernel 4.8, then a
docs/news.xml update would also be necessary.

Unless of course the original author can come up with a better way to
add support between 4.8 and 4.10 inclusive.

John


> diff --git a/configure.ac b/configure.ac
> index c9509c7f9..f542359a6 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -628,15 +628,12 @@ if test "$with_linux" = "yes"; then
>  fi
>  
>  dnl
> -dnl check for kernel headers required by devlink
> +dnl check for DEVLINK_CMD_ESWITCH_GET, required for checking
> +dnl the DEVLINK_ESWITCH_MODE_SWITCHDEV capability
>  dnl
>  if test "$with_linux" = "yes"; then
>      AC_CHECK_HEADERS([linux/devlink.h])
> -    AC_CHECK_DECLS([DEVLINK_GENL_VERSION, DEVLINK_GENL_NAME, DEVLINK_ATTR_MAX, DEVLINK_CMD_ESWITCH_GET, DEVLINK_ATTR_BUS_NAME, DEVLINK_ATTR_DEV_NAME, DEVLINK_ATTR_ESWITCH_MODE, DEVLINK_ESWITCH_MODE_SWITCHDEV],
> -                   [AC_DEFINE([HAVE_DECL_DEVLINK],
> -                              [1],
> -                              [whether devlink declarations are available])],
> -                   [],
> +    AC_CHECK_DECLS([DEVLINK_CMD_ESWITCH_GET], [], [],
>                     [[#include <linux/devlink.h>]])
>  fi
>  
> diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
> index 040693925..41a659732 100644
> --- a/src/util/virnetdev.c
> +++ b/src/util/virnetdev.c
> @@ -59,7 +59,7 @@
>  # include <net/if_dl.h>
>  #endif
>  
> -#if HAVE_DECL_DEVLINK
> +#if HAVE_LINUX_DEVLINK_H
>  # include <linux/devlink.h>
>  #endif
>  
> @@ -3120,7 +3120,7 @@ virNetDevGetEthtoolFeatures(virBitmapPtr bitmap,
>  }
>  
>  
> -# if HAVE_DECL_DEVLINK
> +# if HAVE_DECL_DEVLINK_CMD_ESWITCH_GET
>  /**
>   * virNetDevPutExtraHeader
>   * reserve and prepare room for an extra header
> 




More information about the libvir-list mailing list