On Fri, 2016-03-25 at 09:21 -0700, David Decotigny wrote: > From: David Decotigny > > To benefit from this, kernel commit 025c68186e07 ("netlink: add support > for NIC driver ioctls") is needed. > > > Signed-off-by: David Decotigny > --- >  configure.ac | 2 +- >  ethtool.c    | 7 +++++++ >  2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/configure.ac b/configure.ac > index 3105415..47d2a0f 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -15,7 +15,7 @@ AM_PROG_CC_C_O >  dnl Checks for libraries. >   >  dnl Checks for header files. > -AC_CHECK_HEADERS(sys/ioctl.h) > +AC_CHECK_HEADERS(sys/ioctl.h linux/netlink.h) This doesn't make a lot of sense.  That header has been around since Linux 2.1.  But it didn't define NETLINK_GENERIC then. (The test for doesn't make sense either, as we include it unconditionally!) >  dnl Checks for typedefs, structures, and compiler characteristics. >  AC_MSG_CHECKING([whether defines big-endian types]) > diff --git a/ethtool.c b/ethtool.c > index cb3d971..314b1b8 100644 > --- a/ethtool.c > +++ b/ethtool.c > @@ -42,6 +42,9 @@ >  #include >   >  #include > +#ifdef HAVE_LINUX_NETLINK_H > +# include > +#endif > So what I've committed instead makes this unconditional, but adds a conditional definition of NETLINK_GENERIC. Ben. >   >  #ifndef MAX_ADDR_LEN >  #define MAX_ADDR_LEN 32 > @@ -4645,6 +4648,10 @@ opt_found: >   >   /* Open control socket. */ >   ctx.fd = socket(AF_INET, SOCK_DGRAM, 0); > +#ifdef HAVE_LINUX_NETLINK_H > + if (ctx.fd < 0) > + ctx.fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_GENERIC); > +#endif >   if (ctx.fd < 0) { >   perror("Cannot get control socket"); >   return 70; -- Ben Hutchings compatible: Gracefully accepts erroneous data from any source