Re: [ethtool PATCH v7 2/2] ethtool: use netlink socket when AF_INET not available
flat view
From: Ben Hutchings <hidden>
Date: 2016-06-26 08:58:03
On Fri, 2016-03-25 at 09:21 -0700, David Decotigny wrote:
quoted hunk ↗ jump to hunk
From: David Decotigny <redacted> To benefit from this, kernel commit 025c68186e07 ("netlink: add support for NIC driver ioctls") is needed. Signed-off-by: David Decotigny <redacted> --- 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_Odnl 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 <sys/ioctl.h> doesn't make sense either, as we include it unconditionally!)
quoted hunk ↗ jump to hunk
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.
quoted hunk ↗ jump to hunk
#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
Attachments
- signature.asc [application/pgp-signature] 819 bytes