diff options
author | Wei Yongjun <yjwei@cn.fujitsu.com> | 2008-07-26 06:59:10 -0400 |
---|---|---|
committer | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2008-07-26 06:59:10 -0400 |
commit | d68f0866f76e2bc4ddc07e88e2cb1bc8959a6d7e (patch) | |
tree | 2cab08fd8de1c81c6d5a545a5b2aa96743cb6862 | |
parent | 73f18fdbca3f92b90aeaee16f5175fe30496e218 (diff) |
dccp: Fix sequence number check for ICMPv4 packets
The payload of ICMP message is a part of the packet sent by ourself,
so the sequence number check must use AWL and AWH, not SWL and SWH.
For example:
Endpoint A Endpoint B
DATA-ACK -------->
(SEQ=X)
<-------- ICMP (Fragmentation Needed)
(SEQ=X)
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Acked-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
-rw-r--r-- | net/dccp/ipv4.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c index a835b88237cb..6a2f1879e183 100644 --- a/net/dccp/ipv4.c +++ b/net/dccp/ipv4.c | |||
@@ -238,7 +238,7 @@ static void dccp_v4_err(struct sk_buff *skb, u32 info) | |||
238 | dp = dccp_sk(sk); | 238 | dp = dccp_sk(sk); |
239 | seq = dccp_hdr_seq(dh); | 239 | seq = dccp_hdr_seq(dh); |
240 | if ((1 << sk->sk_state) & ~(DCCPF_REQUESTING | DCCPF_LISTEN) && | 240 | if ((1 << sk->sk_state) & ~(DCCPF_REQUESTING | DCCPF_LISTEN) && |
241 | !between48(seq, dp->dccps_swl, dp->dccps_swh)) { | 241 | !between48(seq, dp->dccps_awl, dp->dccps_awh)) { |
242 | NET_INC_STATS_BH(net, LINUX_MIB_OUTOFWINDOWICMPS); | 242 | NET_INC_STATS_BH(net, LINUX_MIB_OUTOFWINDOWICMPS); |
243 | goto out; | 243 | goto out; |
244 | } | 244 | } |