Subject: [PATCH RFC net-next 00/27] nexthops: Final patches

From: David Ahern <[email-masked]>
Date: Fri, 31 May 2019 20:35:51 -0700

From: David Ahern <[email-masked]>

This is an RFC for no other reason than it exceeds the 20'ish patch
limit. As with the development of this entire feature I have attempted
to send these in sets and an order that is both reviewable and kinder
to the reviewees.

Patches 1-7 have been posted already. This is a re-send.

Patches 8-17 iterate over each fib6_nh in a nexthop and run existing
functions. These are needed since IPv6 fib entries in the past have
only handled a single fib6_nh per entry while nexthops allow multipath
similar to what IPv4 has - one fib6_info with multiple fib6_nh.

Patches 18 and 20 wire up nexthops with fib entries. With these commits
you can actually use nexthops with routes.

Patch 19 is an optimization for IPv4 when using nexthops in the most
predominant use case.

Patches 21 handles replace of a nexthop config.

Patches 22-27 add new tests for the nexthop infrastructure and update
existing tests to use both old and new routing.

David Ahern (27):
  ipv4: Use accessors for fib_info nexthop data
  ipv4: Prepare for fib6_nh from a nexthop object
  ipv4: Plumb support for nexthop object in a fib_info
  ipv6: Plumb support for nexthop object in a fib6_info
  mlxsw: Fail attempts to use routes with nexthop objects
  mlx5: Fail attempts to use routes with nexthop objects
  rocker: Fail attempts to use routes with nexthop objects
  nexthops: Add ipv6 helper to walk all fib6_nh in a nexthop struct
  ipv6: Handle all fib6_nh in a nexthop in fib6_drop_pcpu_from
  ipv6: Handle all fib6_nh in a nexthop in rt6_device_match
  ipv6: Handle all fib6_nh in a nexthop in __find_rr_leaf
  ipv6: Handle all fib6_nh in a nexthop in rt6_nlmsg_size
  ipv6: Handle all fib6_nh in a nexthop in fib6_info_uses_dev
  ipv6: Handle all fib6_nh in a nexthop in exception handling
  ipv6: Handle all fib6_nh in a nexthop in __ip6_route_redirect
  ipv6: Handle all fib6_nh in a nexthop in rt6_do_redirect
  ipv6: Handle all fib6_nh in a nexthop in mtu updates
  ipv4: Allow routes to use nexthop objects
  ipv4: Optimization for fib_info lookup with nexthops
  ipv6: Allow routes to use nexthop objects
  nexthops: add support for replace
  selftests: Add test cases for nexthop objects
  selftests: pmtu: Move running of test into a new function
  selftests: pmtu: Move route installs to a new function
  selftests: pmtu: Add support for routing via nexthop objects
  selftests: icmp_redirect: Add support for routing via nexthop objects
  selftests: Add version of router_multipath.sh using nexthop objects

 drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c   |   33 +-
 .../net/ethernet/mellanox/mlxsw/spectrum_router.c  |   33 +-
 drivers/net/ethernet/rocker/rocker_main.c          |    4 +
 drivers/net/ethernet/rocker/rocker_ofdpa.c         |   25 +-
 include/net/ip6_fib.h                              |   12 +-
 include/net/ip6_route.h                            |   13 +-
 include/net/ip_fib.h                               |   26 +-
 include/net/nexthop.h                              |  117 +++
 net/core/filter.c                                  |    3 +-
 net/ipv4/fib_frontend.c                            |   34 +-
 net/ipv4/fib_lookup.h                              |    1 +
 net/ipv4/fib_rules.c                               |    8 +-
 net/ipv4/fib_semantics.c                           |  343 +++++--
 net/ipv4/fib_trie.c                                |   38 +-
 net/ipv4/nexthop.c                                 |  378 +++++++-
 net/ipv4/route.c                                   |    5 +-
 net/ipv6/addrconf.c                                |    5 +
 net/ipv6/ip6_fib.c                                 |   53 +-
 net/ipv6/ndisc.c                                   |    3 +-
 net/ipv6/route.c                                   |  608 +++++++++++-
 tools/testing/selftests/net/fib_nexthops.sh        | 1026 ++++++++++++++++++++
 .../selftests/net/forwarding/router_mpath_nh.sh    |  370 +++++++
 tools/testing/selftests/net/icmp_redirect.sh       |   60 ++
 tools/testing/selftests/net/pmtu.sh                |  237 +++--
 24 files changed, 3141 insertions(+), 294 deletions(-)
 create mode 100755 tools/testing/selftests/net/fib_nexthops.sh
 create mode 100755 tools/testing/selftests/net/forwarding/router_mpath_nh.sh

-- 
2.11.0