ipv6: Avoid redoing fib6_lookup() with reachable = 0 by saving fn
authorMartin KaFai Lau <kafai@fb.com>
Mon, 20 Oct 2014 20:42:45 +0000 (13:42 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 24 Oct 2014 04:14:39 +0000 (00:14 -0400)
commit367efcb932c1cfc134d5b1fd9db8665ae5e6a251
tree81a13422d8797e22e2009d5e445f3dc30237db02
parent94c77bb41d871deb848e5011aacb5d7c24358ddd
ipv6: Avoid redoing fib6_lookup() with reachable = 0 by saving fn

This patch save the fn before doing rt6_backtrack.
Hence, without redo-ing the fib6_lookup(), saved_fn can be used
to redo rt6_select() with RT6_LOOKUP_F_REACHABLE off.

Some minor changes I think make sense to review as a single patch:
* Remove the 'out:' goto label.
* Remove the 'reachable' variable. Only use the 'strict' variable instead.

After this patch, "failing ip6_ins_rt()" should be the only case that
requires a redo of fib6_lookup().

Cc: David Miller <davem@davemloft.net>
Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/route.c