From: David Ahern <dsah...@gmail.com> First set of three with the end goal of enabling IPv6 gateways with IPv4 routes.
This set refactors ipv4 and ipv6 code to create init and release helpers for each protocol and moving common elements to a fib_nh_common struct. v3 - split the reject setting into 2 with helper to the checks. This avoids changing cfg->fc_flags in fib6_nh_init v2 - addressed Ido's comments: cleanup on failure path in nh_init helpers, ordering in fib6_nh_release, and removal of RTF_GATEWAY from fib6_info uses in mlxsw David Ahern (13): ipv4: Define fib_get_nhs when CONFIG_IP_ROUTE_MULTIPATH is disabled ipv4: Move IN_DEV_IGNORE_ROUTES_WITH_LINKDOWN to helper ipv4: Create init helper for fib_nh ipv4: Create cleanup helper for fib_nh ipv6: Create init helper for fib6_nh ipv6: Create cleanup helper for fib6_nh ipv6: Move gateway checks to a fib6_nh setting ipv6: Refactor fib6_ignore_linkdown ipv6: Change rt6_add_nexthop and rt6_nexthop_info to take fib6_nh ipv4: Rename fib_nh entries ipv6: Rename fib6_nh entries net: Add fib_nh_common and update fib_nh and fib6_nh net: Use common nexthop init and release helpers drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c | 12 +- .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 60 +-- drivers/net/ethernet/rocker/rocker_ofdpa.c | 10 +- include/linux/inetdevice.h | 14 + include/net/addrconf.h | 8 + include/net/ip6_fib.h | 18 +- include/net/ip6_route.h | 12 +- include/net/ip_fib.h | 58 ++- include/trace/events/fib.h | 7 +- include/trace/events/fib6.h | 6 +- net/core/filter.c | 16 +- net/ipv4/fib_frontend.c | 10 +- net/ipv4/fib_semantics.c | 473 +++++++++++---------- net/ipv4/fib_trie.c | 14 +- net/ipv4/route.c | 18 +- net/ipv6/addrconf.c | 27 +- net/ipv6/ip6_fib.c | 18 +- net/ipv6/ndisc.c | 8 +- net/ipv6/route.c | 456 +++++++++++--------- 19 files changed, 676 insertions(+), 569 deletions(-) -- 2.11.0