Thread (9 messages) 9 messages, 4 authors, 2016-03-30

Re: [PATCH net] net: ipv4: Multipath needs to handle unreachable nexthops

From: Eric Dumazet <hidden>
Date: 2016-03-24 16:45:36

On Thu, 2016-03-24 at 08:25 -0700, David Ahern wrote:
Multipath route lookups should consider knowledge about next hops and not
select a hop that is known to be failed.
Does not look a net candidate to me.
quoted hunk ↗ jump to hunk
Signed-off-by: David Ahern <redacted>
---
 net/ipv4/fib_semantics.c | 34 ++++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index d97268e8ff10..28fc6700c2b1 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -1563,13 +1563,43 @@ int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
 void fib_select_multipath(struct fib_result *res, int hash)
 {
 	struct fib_info *fi = res->fi;
+	struct neighbour *n;
+	int state;
 
 	for_nexthops(fi) {
 		if (hash > atomic_read(&nh->nh_upper_bound))
 			continue;
 
-		res->nh_sel = nhsel;
-		return;
+		state = NUD_NONE;
+		n = neigh_lookup(&arp_tbl, &nh->nh_gw, fi->fib_dev);
+		if (n) {
+			state = n->nud_state;
+			neigh_release(n);
+		}
This looks like something that could use RCU to avoid expensive
refcounting ?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help