From: David Decotigny <de...@googlers.com> To benefit from this, kernel commit 025c68186e07 ("netlink: add support for NIC driver ioctls") is needed.
Signed-off-by: David Decotigny <de...@googlers.com> --- 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) dnl Checks for typedefs, structures, and compiler characteristics. AC_MSG_CHECKING([whether <linux/types.h> 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 <arpa/inet.h> #include <linux/sockios.h> +#ifdef HAVE_LINUX_NETLINK_H +# include <linux/netlink.h> +#endif #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; -- 2.8.0.rc3.226.g39d4020