On Wed, Jul 26, 2017 at 11:49 AM, David Ahern <dsah...@gmail.com> wrote: > On 7/26/17 12:27 PM, Roopa Prabhu wrote: >> agreed...so looks like the check in v3 should be >> >> >> + if ( rt == net->ipv6.ip6_null_entry || >> + (rt->dst.error && >> + #ifdef CONFIG_IPV6_MULTIPLE_TABLES >> + rt != net->ipv6.ip6_prohibit_entry && >> + rt != net->ipv6.ip6_blk_hole_entry && >> +#endif >> + )) { >> err = rt->dst.error; >> ip6_rt_put(rt); >> goto errout; >> > > I don't think so. If I add a prohibit route and use the fibmatch > attribute, I want to see the route from the FIB that was matched.
But net->ipv6.ip6_prohibit_entry is not the prohibit route you can add in user-space, it is only used by rule actions. So do you really want to dump it?? My gut feeling is no, but I am definitely not sure. When you add a prohibit route, a new rt is allocated dynamically, net->ipv6.ip6_prohibit_entry is relatively static, internal and is the only one per netns. (Same for net->ipv6.ip6_blk_hole_entry) I think Hangbin's example doesn't have ip rules, so this case is not shown up.