netdev
[Top] [All Lists]

PATCH: Path MTU discovery fix

To: netdev@xxxxxxxxxxx
Subject: PATCH: Path MTU discovery fix
From: Daiki Ueno <ueno@xxxxxxxxxxxx>
Date: 10 Jun 2001 14:44:17 +0900
Sender: owner-netdev@xxxxxxxxxxx
User-agent: T-gnus/6.15.4 (based on Oort Gnus v0.04) (revision 01)
Since 2.4.4, Path MTU discovery doesn't work for me.

In the function icmpv6_rcv, ICMPv6 header is extracted from skb->data,
rather from skb->h.raw, so the value of hdr->icmp6_mtu is not intended
and the call of the function rt6_pmtu_discovery makes no sense here.

The attached patch reverts to the same behavior of 2.4.3.

Regards,
-- 
Daiki Ueno

--- linux/net/ipv6/icmp.c~      Sun Jun 10 13:40:11 2001
+++ linux/net/ipv6/icmp.c       Sun Jun 10 13:41:15 2001
@@ -559,18 +559,16 @@
        case ICMPV6_PKT_TOOBIG:
                /* BUGGG_FUTURE: if packet contains rthdr, we cannot update
                   standard destination cache. Seems, only "advanced"
                   destination cache will allow to solve this problem
                   --ANK (980726)
                 */
-               if (!pskb_may_pull(skb, sizeof(struct ipv6hdr)))
-                       goto discard_it;
-               hdr = (struct icmp6hdr *) skb->data;
                orig_hdr = (struct ipv6hdr *) (hdr + 1);
-               rt6_pmtu_discovery(&orig_hdr->daddr, &orig_hdr->saddr, dev,
-                                  ntohl(hdr->icmp6_mtu));
+               if (pskb_may_pull(skb, sizeof(struct ipv6hdr)))
+                       rt6_pmtu_discovery(&orig_hdr->daddr, &orig_hdr->saddr, 
dev,
+                                          ntohl(hdr->icmp6_mtu));
 
                /*
                 *      Drop through to notify
                 */
 
        case ICMPV6_DEST_UNREACH:

<Prev in Thread] Current Thread [Next in Thread>