CC: netdev
In article [off-list ref] (at Wed, 9 Jul 2003 19:52:37 +0200), Jean-Luc Richier [off-list ref] 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.
quoted hunk
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