netdev
[Top] [All Lists]

Re: Bug in Linux 2.5.74 IPv6 routing

To: Jean-Luc.Richier@xxxxxxx
Subject: Re: Bug in Linux 2.5.74 IPv6 routing
From: YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@xxxxxxxxxxxxxx>
Date: Thu, 10 Jul 2003 03:31:17 +0900 (JST)
Cc: pekkas@xxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx, yoshfuji@xxxxxxxxxxxxxx
In-reply-to: <20030709195237.A8550@horus.imag.fr>
Organization: USAGI Project
References: <20030709195237.A8550@horus.imag.fr>
Sender: netdev-bounce@xxxxxxxxxxx
CC: netdev

In article <20030709195237.A8550@xxxxxxxxxxxxx> (at Wed, 9 Jul 2003 19:52:37 
+0200), Jean-Luc Richier <Jean-Luc.Richier@xxxxxxx> says:

> There is a bug in IPv6 route calculation since kernel 2.5.71. It affects
> all routes with prefix length != 0 (mod 8)
> The bug is as follows:
> do:   ip -6 route add 2000::/3 via 2001:688:121:10::1
>       ip -6 route
> It shows a route for ::/3, not for 2000::/3

good catch.

> PATCH 2: avoid overwriting the set value
> --- linux-2.5.74/include/net/ipv6.h.DIST      2003-07-02 22:53:44.000000000 
> +0200
> +++ linux-2.5.74/include/net/ipv6.h   2003-07-09 18:51:25.000000000 +0200
> @@ -276,8 +276,10 @@
>           b = plen & 0x7;
>  
>       memcpy(pfx->s6_addr, addr, o);
> -     if (b != 0)
> +     if (b != 0) {
>               pfx->s6_addr[o] = addr->s6_addr[o] & (0xff00 >> b);
> +             o++;
> +     }
>       if (o < 16)
>               memset(pfx->s6_addr + o, 0, 16 - o);
>  }
> 

Ok, let's use this one.

--yoshfuji

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