* [PATCH] Fix CONNMARK mask value demolition
@ 2008-01-06 3:04 Peter Warasin
2008-01-09 13:37 ` Peter Warasin
2008-01-15 7:04 ` Patrick McHardy
0 siblings, 2 replies; 5+ messages in thread
From: Peter Warasin @ 2008-01-06 3:04 UTC (permalink / raw)
To: netfilter-devel
[-- Attachment #1: Type: text/plain, Size: 215 bytes --]
This patch fixes the problem that the CONNMARK mask value
has been set to 0 whenever the CONNMARK target options has not
been the last options to be processed.
Signed-off-by: Peter Warasin <peter@endian.com>
---
[-- Attachment #2: fix_CONNMARK_mask_demolition.patch --]
[-- Type: text/x-patch, Size: 674 bytes --]
Index: iptables/extensions/libxt_CONNMARK.c
===================================================================
--- iptables.orig/extensions/libxt_CONNMARK.c 2008-01-06 03:08:18.000000000 +0100
+++ iptables/extensions/libxt_CONNMARK.c 2008-01-06 03:09:54.000000000 +0100
@@ -64,13 +64,12 @@
struct xt_connmark_target_info *markinfo
= (struct xt_connmark_target_info *)(*target)->data;
- markinfo->mask = 0xffffffffUL;
-
switch (c) {
char *end;
case '1':
markinfo->mode = XT_CONNMARK_SET;
+ markinfo->mask = 0xffffffffUL;
markinfo->mark = strtoul(optarg, &end, 0);
if (*end == '/' && end[1] != '\0')
markinfo->mask = strtoul(end+1, &end, 0);
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Fix CONNMARK mask value demolition
2008-01-06 3:04 [PATCH] Fix CONNMARK mask value demolition Peter Warasin
@ 2008-01-09 13:37 ` Peter Warasin
2008-01-15 7:04 ` Patrick McHardy
1 sibling, 0 replies; 5+ messages in thread
From: Peter Warasin @ 2008-01-09 13:37 UTC (permalink / raw)
To: Peter Warasin; +Cc: netfilter-devel
[-- Attachment #1: Type: text/plain, Size: 976 bytes --]
Hi
I would not like to create the impression trying to do any pressure on
this topic but i recognized that my patch description maybe was a little
bit poor.
In order to make sure the patch is understood correctly, here the bug
report, of which that patch is the fix:
If you use the CONNMARK target, it makes a difference if you have the -j
option as last option or before the matches.
iptables -t mangle -N test
This works:
iptables -v -t mangle -I test -m connmark --mark 7 -j CONNMARK
--set-mark 0x7/0xf
CONNMARK all opt -- in * out * 0.0.0.0/0 -> 0.0.0.0/0 CONNMARK match
0x7 CONNMARK set 0x7/0xf
This not:
iptables -v -t mangle -I test -j CONNMARK --set-mark 0x7/0xf -m connmark
--mark 7
CONNMARK all opt -- in * out * 0.0.0.0/0 -> 0.0.0.0/0 CONNMARK match
0x7 CONNMARK set 0x7
In the second call, the CONNMARK mask (0xf) will be eaten.
peter
--
:: e n d i a n
:: open source - open minds
:: peter warasin
:: http://www.endian.com :: peter@endian.com
[-- Attachment #2: peter.vcf --]
[-- Type: text/x-vcard, Size: 279 bytes --]
begin:vcard
fn:Peter Warasin
n:;Peter Warasin
org:Endian GmbH/Srl
adr:;;Pillhof 47;Frangart/Frangarto;BZ;I-39010;Italien/Italia
email;internet:peter@endian.com
tel;work:+39 0471 631763
tel;fax:+39 0471 631764
x-mozilla-html:FALSE
url:http://www.endian.com
version:2.1
end:vcard
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Fix CONNMARK mask value demolition
2008-01-06 3:04 [PATCH] Fix CONNMARK mask value demolition Peter Warasin
2008-01-09 13:37 ` Peter Warasin
@ 2008-01-15 7:04 ` Patrick McHardy
2008-01-15 11:45 ` [PATCH v2] " Peter Warasin
1 sibling, 1 reply; 5+ messages in thread
From: Patrick McHardy @ 2008-01-15 7:04 UTC (permalink / raw)
To: Peter Warasin; +Cc: netfilter-devel
Peter Warasin wrote:
> This patch fixes the problem that the CONNMARK mask value
> has been set to 0 whenever the CONNMARK target options has not
> been the last options to be processed.
> @@ -64,13 +64,12 @@
> struct xt_connmark_target_info *markinfo
> = (struct xt_connmark_target_info *)(*target)->data;
>
> - markinfo->mask = 0xffffffffUL;
> -
> switch (c) {
> char *end;
> case '1':
> markinfo->mode = XT_CONNMARK_SET;
>
> + markinfo->mask = 0xffffffffUL;
Good catch, but don't we also need set the mask for --save-mark
and --restore-mark? I would suggest to move the initialzation
to a ->init() function.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] Fix CONNMARK mask value demolition
2008-01-15 7:04 ` Patrick McHardy
@ 2008-01-15 11:45 ` Peter Warasin
2008-01-15 15:46 ` Patrick McHardy
0 siblings, 1 reply; 5+ messages in thread
From: Peter Warasin @ 2008-01-15 11:45 UTC (permalink / raw)
To: Patrick McHardy; +Cc: netfilter-devel
[-- Attachment #1: Type: text/plain, Size: 390 bytes --]
Hi Patrick
Patrick McHardy wrote:
> Good catch, but don't we also need set the mask for --save-mark
> and --restore-mark? I would suggest to move the initialzation
> to a ->init() function.
Oh, yes. That's necessary.
Here's the revised patch with the init() function.
peter
--
:: e n d i a n
:: open source - open minds
:: peter warasin
:: http://www.endian.com :: peter@endian.com
[-- Attachment #2: fix_CONNMARK_mask_demolition.patch --]
[-- Type: text/x-patch, Size: 1791 bytes --]
Fix CONNMARK mask initialisation
This patch fixes the problem that the CONNMARK mask value
has been set to 0 whenever the CONNMARK target options were
not the last options to be processed.
It initalizes the mask value rather than setting it for
each parse.
Signed-off-by: Peter Warasin <peter@endian.com>
---
extensions/libxt_CONNMARK.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
Index: iptables/extensions/libxt_CONNMARK.c
===================================================================
--- iptables.orig/extensions/libxt_CONNMARK.c 2008-01-06 03:08:18.000000000 +0100
+++ iptables/extensions/libxt_CONNMARK.c 2008-01-15 12:40:54.000000000 +0100
@@ -64,8 +64,6 @@
struct xt_connmark_target_info *markinfo
= (struct xt_connmark_target_info *)(*target)->data;
- markinfo->mask = 0xffffffffUL;
-
switch (c) {
char *end;
case '1':
@@ -188,6 +186,14 @@
}
}
+static void CONNMARK_init(struct xt_entry_target *t)
+{
+ struct xt_connmark_target_info *markinfo
+ = (struct xt_connmark_target_info *)t->data;
+
+ markinfo->mask = 0xffffffffUL;
+}
+
static struct xtables_target connmark_target = {
.family = AF_INET,
.name = "CONNMARK",
@@ -195,6 +201,7 @@
.size = XT_ALIGN(sizeof(struct xt_connmark_target_info)),
.userspacesize = XT_ALIGN(sizeof(struct xt_connmark_target_info)),
.help = CONNMARK_help,
+ .init = CONNMARK_init,
.parse = CONNMARK_parse,
.final_check = CONNMARK_check,
.print = CONNMARK_print,
@@ -209,6 +216,7 @@
.size = XT_ALIGN(sizeof(struct xt_connmark_target_info)),
.userspacesize = XT_ALIGN(sizeof(struct xt_connmark_target_info)),
.help = CONNMARK_help,
+ .init = CONNMARK_init,
.parse = CONNMARK_parse,
.final_check = CONNMARK_check,
.print = CONNMARK_print,
[-- Attachment #3: peter.vcf --]
[-- Type: text/x-vcard, Size: 279 bytes --]
begin:vcard
fn:Peter Warasin
n:;Peter Warasin
org:Endian GmbH/Srl
adr:;;Pillhof 47;Frangart/Frangarto;BZ;I-39010;Italien/Italia
email;internet:peter@endian.com
tel;work:+39 0471 631763
tel;fax:+39 0471 631764
x-mozilla-html:FALSE
url:http://www.endian.com
version:2.1
end:vcard
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] Fix CONNMARK mask value demolition
2008-01-15 11:45 ` [PATCH v2] " Peter Warasin
@ 2008-01-15 15:46 ` Patrick McHardy
0 siblings, 0 replies; 5+ messages in thread
From: Patrick McHardy @ 2008-01-15 15:46 UTC (permalink / raw)
To: Peter Warasin; +Cc: netfilter-devel
Peter Warasin wrote:
> Hi Patrick
>
> Patrick McHardy wrote:
>> Good catch, but don't we also need set the mask for --save-mark
>> and --restore-mark? I would suggest to move the initialzation
>> to a ->init() function.
>
> Oh, yes. That's necessary.
> Here's the revised patch with the init() function.
Applied, thanks Peter.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-01-15 15:46 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-06 3:04 [PATCH] Fix CONNMARK mask value demolition Peter Warasin
2008-01-09 13:37 ` Peter Warasin
2008-01-15 7:04 ` Patrick McHardy
2008-01-15 11:45 ` [PATCH v2] " Peter Warasin
2008-01-15 15:46 ` Patrick McHardy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).