All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fix dreaded "Unknown error 4294967295"
@ 2006-09-23 11:43 Denis Vlasenko
  2006-09-25  9:35 ` Patrick McHardy
  0 siblings, 1 reply; 4+ messages in thread
From: Denis Vlasenko @ 2006-09-23 11:43 UTC (permalink / raw)
  To: netfilter-devel, kaber, webmaster

[-- Attachment #1: Type: text/plain, Size: 326 bytes --]

google.com gives 968 hits on 'iptables "Unknown error 4294967295"'.

The reason is that iptables sets errno
to error return value of setsockopt(), which is always -1.

A few small inrelated changes are also there:
stray ')' in message, array of error messages made static,
prevention of errno corruption in ipq_perror.
--
vda

[-- Attachment #2: iptables-1.3.5.patch --]
[-- Type: text/x-diff, Size: 1730 bytes --]

diff -urpN iptables-1.3.5.0/libipq/libipq.c iptables-1.3.5.1/libipq/libipq.c
--- iptables-1.3.5.0/libipq/libipq.c	2005-07-28 16:53:11.000000000 +0200
+++ iptables-1.3.5.1/libipq/libipq.c	2006-09-21 22:12:41.000000000 +0200
@@ -366,13 +366,14 @@ char *ipq_errstr(void)
 
 void ipq_perror(const char *s)
 {
+	int e = errno;
 	if (s)
 		fputs(s, stderr);
 	else
 		fputs("ERROR", stderr);
 	if (ipq_errno)
 		fprintf(stderr, ": %s", ipq_errstr());
-	if (errno)
-		fprintf(stderr, ": %s", strerror(errno));
+	if (e)
+		fprintf(stderr, ": %s", strerror(e));
 	fputc('\n', stderr);
 }
diff -urpN iptables-1.3.5.0/libiptc/libiptc.c iptables-1.3.5.1/libiptc/libiptc.c
--- iptables-1.3.5.0/libiptc/libiptc.c	2006-01-30 09:43:09.000000000 +0100
+++ iptables-1.3.5.1/libiptc/libiptc.c	2006-09-21 23:22:33.000000000 +0200
@@ -1118,7 +1118,7 @@ const char *standard_target_map(int verd
 			return LABEL_QUEUE;
 			break;
 		default:
-			fprintf(stderr, "ERROR: %d not a valid target)\n",
+			fprintf(stderr, "ERROR: %d not a valid target\n",
 				verdict);
 			abort();
 			break;
@@ -2097,7 +2097,7 @@ TC_COMMIT(TC_HANDLE_T *handle)
 	ret = setsockopt(sockfd, TC_IPPROTO, SO_SET_REPLACE, repl,
 			 sizeof(*repl) + repl->size);
 	if (ret < 0) {
-		errno = ret;
+		/* errno = ret; */
 		goto out_free_newcounters;
 	}
 
@@ -2191,7 +2191,7 @@ TC_COMMIT(TC_HANDLE_T *handle)
 	ret = setsockopt(sockfd, TC_IPPROTO, SO_SET_ADD_COUNTERS,
 			 newcounters, counterlen);
 	if (ret < 0) {
-		errno = ret;
+		/* errno = ret; */
 		goto out_free_newcounters;
 	}
 
@@ -2225,7 +2225,7 @@ const char *
 TC_STRERROR(int err)
 {
 	unsigned int i;
-	struct table_struct {
+	static const struct table_struct {
 		void *fn;
 		int err;
 		const char *message;

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fix dreaded "Unknown error 4294967295"
  2006-09-23 11:43 [PATCH] fix dreaded "Unknown error 4294967295" Denis Vlasenko
@ 2006-09-25  9:35 ` Patrick McHardy
  2006-09-25 20:43   ` Denis Vlasenko
  0 siblings, 1 reply; 4+ messages in thread
From: Patrick McHardy @ 2006-09-25  9:35 UTC (permalink / raw)
  To: Denis Vlasenko; +Cc: netfilter-devel, webmaster

Denis Vlasenko wrote:
> google.com gives 968 hits on 'iptables "Unknown error 4294967295"'.
> 
> The reason is that iptables sets errno
> to error return value of setsockopt(), which is always -1.

Thats already fixed in the current SVN version, which will be released
as 1.3.6 soon.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fix dreaded "Unknown error 4294967295"
  2006-09-25  9:35 ` Patrick McHardy
@ 2006-09-25 20:43   ` Denis Vlasenko
  2006-09-26 10:50     ` Patrick McHardy
  0 siblings, 1 reply; 4+ messages in thread
From: Denis Vlasenko @ 2006-09-25 20:43 UTC (permalink / raw)
  To: Patrick McHardy; +Cc: netfilter-devel, webmaster

Hello Patrick,

On Monday 25 September 2006 11:35, Patrick McHardy wrote:
> Denis Vlasenko wrote:
> > google.com gives 968 hits on 'iptables "Unknown error 4294967295"'.
> > 
> > The reason is that iptables sets errno
> > to error return value of setsockopt(), which is always -1.
> 
> Thats already fixed in the current SVN version, which will be released
> as 1.3.6 soon.

Cool, thank you.

I have some troubles setting up firewall on AMD64 kernel
with 32-bit userspace.

When I pointed KERNEL_DIR= to the build directory
of currently running kernel, i saw -DKERNEL_64_USERSPACE_32
in gcc commands and resulting iptables was utterly useless.
It was throwing "Unknown error 4294967295" on practically anything.

I rebuilt it, pointing KERNEL_DIR= to pristine, unconfigured
2.6.18 source. Now it works most of the time.

However, on some commands it does not:

iptables -t nat -A OUTPUT --match connmark --mark 22 -j RETURN
iptables -t nat -A OUTPUT -j CONNMARK --set-mark 22

give the same error and in dmesg I see:

ip_tables: connmark match: invalid size 24 != 12
ip_tables: CONNMARK target: invalid size 24 != 12
ip_tables: connmark match: invalid size 24 != 12
ip_tables: CONNMARK target: invalid size 24 != 12

Same happens on MARK target.

Help?
--
vda

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fix dreaded "Unknown error 4294967295"
  2006-09-25 20:43   ` Denis Vlasenko
@ 2006-09-26 10:50     ` Patrick McHardy
  0 siblings, 0 replies; 4+ messages in thread
From: Patrick McHardy @ 2006-09-26 10:50 UTC (permalink / raw)
  To: Denis Vlasenko; +Cc: netfilter-devel

[removed CC: webmaster@gnumonks.org]

Denis Vlasenko wrote:
> I have some troubles setting up firewall on AMD64 kernel
> with 32-bit userspace.
> 
> When I pointed KERNEL_DIR= to the build directory
> of currently running kernel, i saw -DKERNEL_64_USERSPACE_32
> in gcc commands and resulting iptables was utterly useless.
> It was throwing "Unknown error 4294967295" on practically anything.
> 
> I rebuilt it, pointing KERNEL_DIR= to pristine, unconfigured
> 2.6.18 source. Now it works most of the time.
> 
> However, on some commands it does not:
> 
> iptables -t nat -A OUTPUT --match connmark --mark 22 -j RETURN
> iptables -t nat -A OUTPUT -j CONNMARK --set-mark 22
> 
> give the same error and in dmesg I see:
> 
> ip_tables: connmark match: invalid size 24 != 12
> ip_tables: CONNMARK target: invalid size 24 != 12
> ip_tables: connmark match: invalid size 24 != 12
> ip_tables: CONNMARK target: invalid size 24 != 12
> 
> Same happens on MARK target.

The latest -git kernel includes compatibility functions for 32 bit
userspace. You need to compile your iptables without the
KERNEL_64_USERSPACE_32 thing though (edit main Makefile).

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-09-26 10:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-23 11:43 [PATCH] fix dreaded "Unknown error 4294967295" Denis Vlasenko
2006-09-25  9:35 ` Patrick McHardy
2006-09-25 20:43   ` Denis Vlasenko
2006-09-26 10:50     ` Patrick McHardy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.