On 11/14/17 10:36 AM, Florian Westphal wrote: > Hi David > > This test program no longer works with 4.14 > (recvfrom: Resource temporarily unavailable) > > after reverting commit > 4832c30d5458387ff2533ff66fbde26ad8bb5a2d > (net: ipv6: put host and anycast routes on device with address) > > it will work again ("OK"). > > Could you please have a look at this? >
This restores the previous behavior: diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 05eb7bc36156..1c29d9bcedc3 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -1019,7 +1019,7 @@ static struct net_device *ip6_rt_get_dev_rcu(struct rt6_info *rt) { struct net_device *dev = rt->dst.dev; - if (rt->rt6i_flags & RTF_LOCAL) { + if (rt->rt6i_flags & (RTF_LOCAL | RTF_ANYCAST)) { /* for copies of local routes, dst->dev needs to be the * device if it is a master device, the master device if * device is enslaved, and the loopback as the default