[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20070604045506.GA28580@gondor.apana.org.au>
Date: Mon, 4 Jun 2007 14:55:06 +1000
From: Herbert Xu <herbert@...dor.apana.org.au>
To: Wei Yongjun <yjwei@...fujitsu.com>
Cc: netdev@...r.kernel.org
Subject: Re: [PATCH] Fix bug of update IPv4 PMTU when received ICMP Fragmentation Needed message
On Mon, Jun 04, 2007 at 12:32:49PM +0800, Wei Yongjun wrote:
>
> The latest kernel 2.6.21.3 also doing so. The rule to send ICMP message
> limit this.
> Ref to net/ipv4/icmp.c
> line 433 void icmp_send(struct sk_buff *skb_in, int type, int code,
> __be32 info)
> line 434 {
> ...
> line 572 /* RFC says return as much as we can without exceeding 576
> bytes. */
> line 573
> line 574 room = dst_mtu(&rt->u.dst);
> line 575 if (room > 576)
> line 576 room = 576;
> line 577 room -= sizeof(struct iphdr) + icmp_param.replyopts.optlen;
> line 578 room -= sizeof(struct icmphdr);
> line 579
> line 560 icmp_param.data_len = skb_in->len - icmp_param.offset;
> line 561 if (icmp_param.data_len > room)
> line 562 icmp_param.data_len = room;
> line 563 icmp_param.head_len = sizeof(struct icmphdr);
>
> line 576 do this.
But this is not the old_mtu field that we were talking about. The
old_mtu field comes from iph->tot_len which is the length of field
in the *original* IP header. We're certainly not allowed touch that
field.
Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@...dor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists