From 76258727e101a0960cc8fcf84d9a451e4b5fd9b5 Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Tue, 26 Jun 2007 15:29:45 +0000 Subject: Fix "iptables getsockopt failed strangely" when querying revisions for non-existant matches and targets Reported by Joseph Jezak . --- ip6tables.c | 2 +- iptables.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ip6tables.c b/ip6tables.c index f316c7a9..6b2766b7 100644 --- a/ip6tables.c +++ b/ip6tables.c @@ -1130,7 +1130,7 @@ static int compatible_revision(const char *name, u_int8_t revision, int opt) max_rev = getsockopt(sockfd, IPPROTO_IPV6, opt, &rev, &s); if (max_rev < 0) { /* Definitely don't support this? */ - if (errno == EPROTONOSUPPORT) { + if (errno == ENOENT || errno == EPROTONOSUPPORT) { close(sockfd); return 0; } else if (errno == ENOPROTOOPT) { diff --git a/iptables.c b/iptables.c index 893b02db..83b0c820 100644 --- a/iptables.c +++ b/iptables.c @@ -1158,7 +1158,7 @@ static int compatible_revision(const char *name, u_int8_t revision, int opt) max_rev = getsockopt(sockfd, IPPROTO_IP, opt, &rev, &s); if (max_rev < 0) { /* Definitely don't support this? */ - if (errno == EPROTONOSUPPORT) { + if (errno == ENOENT || errno == EPROTONOSUPPORT) { close(sockfd); return 0; } else if (errno == ENOPROTOOPT) { -- cgit v1.2.3