ipv6: Rename fib6_multipath_select and pass fib6_result
authorDavid Ahern <dsahern@gmail.com>
Tue, 16 Apr 2019 21:35:59 +0000 (14:35 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 18 Apr 2019 06:08:51 +0000 (23:08 -0700)
commitb1d40991506aa9f1de310a2e74ef8e3bec6ba215
tree81c208a425d0a0464bb713b78828131dd98f3eb4
parent6b0a7f84ea1fe248df96ccc4dd86e817e32ef65b
ipv6: Rename fib6_multipath_select and pass fib6_result

Add 'struct fib6_result' to hold the fib entry and fib6_nh from a fib
lookup as separate entries, similar to what IPv4 now has with fib_result.

Rename fib6_multipath_select to fib6_select_path, pass fib6_result to
it, and set f6i and nh in the result once a path selection is done.
Call fib6_select_path unconditionally for path selection which means
moving the sibling and oif check to fib6_select_path. To handle the two
different call paths (2 only call multipath_select if flowi6_oif == 0 and
the other always calls it), add a new have_oif_match that controls the
sibling walk if relevant.

Update callers of fib6_multipath_select accordingly and have them use the
fib6_info and fib6_nh from the result.

This is needed for multipath nexthop objects where a single f6i can
point to multiple fib6_nh (similar to IPv4).

Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ip6_fib.h
include/net/ipv6_stubs.h
net/core/filter.c
net/ipv6/addrconf_core.c
net/ipv6/af_inet6.c
net/ipv6/route.c