From cd84bc9743d7595dee1ea4bc40bd236a619d6539 Mon Sep 17 00:00:00 2001 From: Gabor Tatarka Date: Mon, 2 Dec 2013 22:05:57 +0400 Subject: [PATCH] fix TPACKET_V3 initialization (GH #329) libpcap would fail to initialize on Linux when compiled against kernel headers with TPACKET_V3 support but running on kernel without: "can't get TPACKET_V3 header len on packet socket: Invalid argument" Fix init_tpacket() to respect EINVAL because that is what the kernel returns for unsupported TPACKET versions. Signed-off-by: Peter Korsgaard --- pcap-linux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pcap-linux.c b/pcap-linux.c index 6c0723a..8800c96 100644 --- a/pcap-linux.c +++ b/pcap-linux.c @@ -3471,7 +3471,7 @@ init_tpacket(pcap_t *handle, int version, const char *version_str) /* Probe whether kernel supports the specified TPACKET version */ if (getsockopt(handle->fd, SOL_PACKET, PACKET_HDRLEN, &val, &len) < 0) { - if (errno == ENOPROTOOPT) + if (errno == ENOPROTOOPT || errno == EINVAL) return 1; /* no */ /* Failed to even find out; this is a fatal error. */ -- 1.8.5.1