netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Ahern <dsahern@kernel.org>
To: davem@davemloft.net, netdev@vger.kernel.org
Cc: idosch@mellanox.com, kafai@fb.com, weiwan@google.com,
	sbrivio@redhat.com, David Ahern <dsahern@gmail.com>
Subject: [PATCH v2 net-next 09/20] ipv6: Handle all fib6_nh in a nexthop in rt6_do_redirect
Date: Fri,  7 Jun 2019 08:09:30 -0700	[thread overview]
Message-ID: <20190607150941.11371-10-dsahern@kernel.org> (raw)
In-Reply-To: <20190607150941.11371-1-dsahern@kernel.org>

From: David Ahern <dsahern@gmail.com>

Use nexthop_for_each_fib6_nh and fib6_nh_find_match to find the
fib6_nh in a nexthop that correlates to the device and gateway
in the rt6_info.

Signed-off-by: David Ahern <dsahern@gmail.com>
---
 net/ipv6/route.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 20bb19d4141e..098d3618ceb9 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -3901,7 +3901,25 @@ static void rt6_do_redirect(struct dst_entry *dst, struct sock *sk, struct sk_bu
 	if (!res.f6i)
 		goto out;
 
-	res.nh = res.f6i->fib6_nh;
+	if (res.f6i->nh) {
+		struct fib6_nh_match_arg arg = {
+			.dev = dst->dev,
+			.gw = &rt->rt6i_gateway,
+		};
+
+		nexthop_for_each_fib6_nh(res.f6i->nh,
+					 fib6_nh_find_match, &arg);
+
+		/* fib6_info uses a nexthop that does not have fib6_nh
+		 * using the dst->dev. Should be impossible
+		 */
+		if (!arg.match)
+			return;
+		res.nh = arg.match;
+	} else {
+		res.nh = res.f6i->fib6_nh;
+	}
+
 	res.fib6_flags = res.f6i->fib6_flags;
 	res.fib6_type = res.f6i->fib6_type;
 	nrt = ip6_rt_cache_alloc(&res, &msg->dest, NULL);
-- 
2.11.0


  parent reply	other threads:[~2019-06-07 15:09 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-07 15:09 [PATCH v2 net-next 00/20] net: Enable nexthop objects with IPv4 and IPv6 routes David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 01/20] nexthops: Add ipv6 helper to walk all fib6_nh in a nexthop struct David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 02/20] ipv6: Handle all fib6_nh in a nexthop in fib6_drop_pcpu_from David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 03/20] ipv6: Handle all fib6_nh in a nexthop in rt6_device_match David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 04/20] ipv6: Handle all fib6_nh in a nexthop in __find_rr_leaf David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 05/20] ipv6: Handle all fib6_nh in a nexthop in rt6_nlmsg_size David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 06/20] ipv6: Handle all fib6_nh in a nexthop in fib6_info_uses_dev David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 07/20] ipv6: Handle all fib6_nh in a nexthop in exception handling David Ahern
2019-06-07 22:05   ` Wei Wang
2019-06-07 22:39     ` David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 08/20] ipv6: Handle all fib6_nh in a nexthop in __ip6_route_redirect David Ahern
2019-06-07 15:09 ` David Ahern [this message]
2019-06-07 15:09 ` [PATCH v2 net-next 10/20] ipv6: Handle all fib6_nh in a nexthop in mtu updates David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 11/20] ipv4: Allow routes to use nexthop objects David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 12/20] ipv4: Optimization for fib_info lookup with nexthops David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 13/20] ipv6: Allow routes to use nexthop objects David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 14/20] nexthops: add support for replace David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 15/20] selftests: pmtu: Move running of test into a new function David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 16/20] selftests: pmtu: Move route installs to " David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 17/20] selftests: pmtu: Add support for routing via nexthop objects David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 18/20] selftests: icmp_redirect: " David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 19/20] selftests: Add test with multiple prefixes using single nexthop David Ahern
2019-06-07 15:09 ` [PATCH v2 net-next 20/20] selftests: Add version of router_multipath.sh using nexthop objects David Ahern

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190607150941.11371-10-dsahern@kernel.org \
    --to=dsahern@kernel.org \
    --cc=davem@davemloft.net \
    --cc=dsahern@gmail.com \
    --cc=idosch@mellanox.com \
    --cc=kafai@fb.com \
    --cc=netdev@vger.kernel.org \
    --cc=sbrivio@redhat.com \
    --cc=weiwan@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).