Linux 3.9 routing oddity

Pierre Emeriaud petrus.lt at gmail.com
Wed Jul 3 09:42:51 CEST 2013


Hi,

2013/7/3 Gert Doering <gert at space.net>:
>
> This indeed sounds weird - it should trigger a ND lookup instead, and only
> if that fails it could consider "not use that route".  But it really should
> at least try, as Jeroen said.

I had an answer this morning on netdev[0].

Apparently commit 887c95cc1da53f66a5890fdeab13414613010097[1] is the
culprit here, but I lack some english (and C) skills  to fully
understand why.

Workaround proposed:

--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -547,6 +547,10 @@ static inline bool rt6_check_neigh(struct rt6_info *rt)
                        ret = true;
 #endif
                read_unlock(&neigh->lock);
+       } else {
+#ifdef CONFIG_IPV6_ROUTER_PREF
+               ret = true;
+#endif
        }
        rcu_read_unlock_bh();


I'll test it this in a few.


Regards,
Pierre.

[0] http://marc.info/?l=linux-netdev&m=137282761914702
[1] http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=887c95cc1da53f66a5890fdeab13414613010097


More information about the ipv6-ops mailing list