From: Patrick McHardy <kaber@trash.net>
To: Andrea Rossato <mailing_list@istitutocolli.org>
Cc: netfilter-devel@lists.netfilter.org
Subject: Re: ECN target bug report
Date: Tue, 10 Dec 2002 00:02:41 +0100 [thread overview]
Message-ID: <3DF52111.8080405@trash.net> (raw)
In-Reply-To: <3DF508CA.6000107@istitutocolli.org>
[-- Attachment #1: Type: text/plain, Size: 1580 bytes --]
Hi Andrea,
the first attached patch fixes the issue you reported (verified),
altough i'm not entirely sure why ;).
the second one is untested but probably couldn't hurt neither.
bye,
patrick
Andrea Rossato wrote:
> attached you will find 3 patches. the first one is an attempt to prove
> the existence of the problem. the second is just a hack that provides
> a temporary solution it's just a workaround: packets with ec e cwr
> bits set and good checksum will be stripped and checksum recalculated
> from scratch.
>
> The problem, as far as I can see it, could be located in csum_partial
> (arch/i386/lib/checksum.S, meaning a platform dependent problem): i'm
> not a kernel hacker (i'm a lawyer, a legal scholar actually), but i do
> not see any mistake in the way partial checksum is carried out in
> tcp_etc_set. anyway checksum after partial or total recalculation
> differ. That's a fact. Evidence of the fact can be gained with the
> second patch: in this case the kernel will log the checksum after
> partial recalculation and after total recalculation (that means that
> two calculations will take place). The two values differ!
>
> Thanks for your attention.
>
> 1. check the bug:
> echo 1 /proc/sys/net/ipv4/tcp_ecn
> iptables -A OUTPUT -t mangle -o ppp0 -p tcp -d my.host.org --dport 80
> -j ECN --ecn-tcp-remove
> iptables -A OUTPUT -o ppp0 -p tcp -d my.host.org --dport 80 -m unclean
> -j DROP
> packets will be dropped
>
> 2. apply one of the patches and try again:
> packets will get though and the connection will be established.
>
> andrea
>
[-- Attachment #2: ipt_ECN.diff.1 --]
[-- Type: text/plain, Size: 499 bytes --]
--- net/ipv4/netfilter/ipt_ECN.c.orig 2002-12-09 23:14:20.000000000 +0100
+++ net/ipv4/netfilter/ipt_ECN.c 2002-12-09 23:13:27.000000000 +0100
@@ -88,8 +88,8 @@
}
if (diffs[0] != *tcpflags) {
- diffs[0] = htons(diffs[0]) ^ 0xFFFF;
- diffs[1] = htons(*tcpflags);
+ diffs[0] = diffs[0] ^ 0xFFFF;
+ diffs[1] = *tcpflags;
tcph->check = csum_fold(csum_partial((char *)diffs,
sizeof(diffs),
tcph->check^0xFFFF));
[-- Attachment #3: ipt_ECN.diff.2 --]
[-- Type: text/plain, Size: 594 bytes --]
--- net/ipv4/netfilter/ipt_ECN.c.orig 2002-12-09 23:14:20.000000000 +0100
+++ net/ipv4/netfilter/ipt_ECN.c 2002-12-09 23:25:54.000000000 +0100
@@ -41,10 +41,10 @@
iph = (*pskb)->nh.iph;
}
- diffs[0] = htons(iph->tos) ^ 0xFFFF;
+ diffs[0] = iph->tos ^ 0xFF;
iph->tos = iph->tos & ~IPT_ECN_IP_MASK;
iph->tos = iph->tos | (einfo->ip_ect & IPT_ECN_IP_MASK);
- diffs[1] = htons(iph->tos);
+ diffs[1] = iph->tos;
iph->check = csum_fold(csum_partial((char *)diffs,
sizeof(diffs),
iph->check^0xFFFF));
next prev parent reply other threads:[~2002-12-09 23:02 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-07 13:14 ECN target bug report Andrea Rossato
2002-12-09 10:13 ` Andrea Rossato
2002-12-09 12:07 ` Andrea Rossato
2002-12-09 16:23 ` Andrea Rossato
2002-12-09 16:37 ` Andrea Rossato
2002-12-09 21:19 ` Andrea Rossato
2002-12-09 23:02 ` Patrick McHardy [this message]
2002-12-10 17:27 ` Andrea Rossato
2002-12-10 18:17 ` Patrick McHardy
2002-12-10 18:30 ` Andrea Rossato
2003-01-02 9:03 ` Harald Welte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3DF52111.8080405@trash.net \
--to=kaber@trash.net \
--cc=mailing_list@istitutocolli.org \
--cc=netfilter-devel@lists.netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.