From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Ahern Subject: [PATCH net-next 2/3] net/ipv6: Add flags arg to ip6_nh_lookup_table Date: Tue, 23 Jan 2018 19:00:03 -0800 Message-ID: <20180124030004.4016-3-dsahern@gmail.com> References: <20180124030004.4016-1-dsahern@gmail.com> Cc: yoshfuji@linux-ipv6.org, idosch@mellanox.com, roopa@cumulusnetworks.com, David Ahern To: netdev@vger.kernel.org Return-path: Received: from mail-pf0-f193.google.com ([209.85.192.193]:36625 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752373AbeAXDAN (ORCPT ); Tue, 23 Jan 2018 22:00:13 -0500 Received: by mail-pf0-f193.google.com with SMTP id 23so1957649pfp.3 for ; Tue, 23 Jan 2018 19:00:12 -0800 (PST) In-Reply-To: <20180124030004.4016-1-dsahern@gmail.com> Sender: netdev-owner@vger.kernel.org List-ID: onlink verification needs to do a lookup without the RT6_LOOKUP_F_IFACE flag. Change ip6_nh_lookup_table to take a flags argument and pass RT6_LOOKUP_F_IFACE. Both verifications want to ignore link state, so add that in the lookup helper. Signed-off-by: David Ahern --- net/ipv6/route.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 0ff4ca0948f0..00acf0103037 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -2440,7 +2440,8 @@ static int ip6_convert_metrics(struct mx6_config *mxc, static struct rt6_info *ip6_nh_lookup_table(struct net *net, struct fib6_config *cfg, - const struct in6_addr *gw_addr) + const struct in6_addr *gw_addr, + int flags) { struct flowi6 fl6 = { .flowi6_oif = cfg->fc_ifindex, @@ -2449,7 +2450,6 @@ static struct rt6_info *ip6_nh_lookup_table(struct net *net, }; struct fib6_table *table; struct rt6_info *rt; - int flags = RT6_LOOKUP_F_IFACE | RT6_LOOKUP_F_IGNORE_LINKSTATE; table = fib6_get_table(net, cfg->fc_table); if (!table) @@ -2458,6 +2458,7 @@ static struct rt6_info *ip6_nh_lookup_table(struct net *net, if (!ipv6_addr_any(&cfg->fc_prefsrc)) flags |= RT6_LOOKUP_F_HAS_SADDR; + flags |= RT6_LOOKUP_F_IGNORE_LINKSTATE; rt = ip6_pol_route(net, table, cfg->fc_ifindex, &fl6, flags); /* if table lookup failed, fall back to full lookup */ @@ -2480,7 +2481,9 @@ static int ip6_route_check_nh(struct net *net, int err = -EHOSTUNREACH; if (cfg->fc_table) { - grt = ip6_nh_lookup_table(net, cfg, gw_addr); + int flags = RT6_LOOKUP_F_IFACE; + + grt = ip6_nh_lookup_table(net, cfg, gw_addr, flags); if (grt) { if (grt->rt6i_flags & RTF_GATEWAY || (dev && dev != grt->dst.dev)) { -- 2.11.0