On 6/28/19 3:06 AM, Miaohe Lin wrote: > diff --git a/net/ipv6/netfilter/ip6t_rpfilter.c b/net/ipv6/netfilter/ip6t_rpfilter.c > index 6bcaf7357183..3c4a1772c15f 100644 > --- a/net/ipv6/netfilter/ip6t_rpfilter.c > +++ b/net/ipv6/netfilter/ip6t_rpfilter.c > @@ -55,6 +55,10 @@ static bool rpfilter_lookup_reverse6(struct net *net, const struct sk_buff *skb, > if (rpfilter_addr_linklocal(&iph->saddr)) { > lookup_flags |= RT6_LOOKUP_F_IFACE; > fl6.flowi6_oif = dev->ifindex; > + /* Set flowi6_oif for vrf devices to lookup route in l3mdev domain. */ > + } else if (netif_is_l3_master(dev) || netif_is_l3_slave(dev)) { > + lookup_flags |= FLOWI_FLAG_SKIP_NH_OIF; you don't need to set that flag here. It is done by the fib_rules code as needed.