Commit 88f64320 authored by Julian Anastasov's avatar Julian Anastasov Committed by David S. Miller

ipv4: be more aggressive when probing alternative gateways

Currently, we do not notice if new alternative gateways
are added. We can do it by checking for present neigh
entry. Also, gateways that are currently probed (NUD_INCOMPLETE)
can be skipped from round-robin probing.
Suggested-by: default avatarFlorian Westphal <fw@strlen.de>
Signed-off-by: default avatarJulian Anastasov <ja@ssi.bg>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 48fb6b55
...@@ -438,13 +438,15 @@ static int fib_detect_death(struct fib_info *fi, int order, ...@@ -438,13 +438,15 @@ static int fib_detect_death(struct fib_info *fi, int order,
if (n) { if (n) {
state = n->nud_state; state = n->nud_state;
neigh_release(n); neigh_release(n);
} else {
return 0;
} }
if (state == NUD_REACHABLE) if (state == NUD_REACHABLE)
return 0; return 0;
if ((state & NUD_VALID) && order != dflt) if ((state & NUD_VALID) && order != dflt)
return 0; return 0;
if ((state & NUD_VALID) || if ((state & NUD_VALID) ||
(*last_idx < 0 && order > dflt)) { (*last_idx < 0 && order > dflt && state != NUD_INCOMPLETE)) {
*last_resort = fi; *last_resort = fi;
*last_idx = order; *last_idx = order;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment