On Thu, Apr 04, 2019 at 10:49:49AM -0700, David Ahern wrote: > From: David Ahern <dsah...@gmail.com> > > Last set of three with the end goal of enabling IPv6 gateways with IPv4 > routes. > > This set adds fib6_nh_init and release to the IPv6 stubs, and adds neighbor > helpers that IPv4 code invokes to resolve an IPv6 address. When using > an IPv6 neighbor entry the hh_cache is bypassed as it contains the wrong > ethernet header for an IPv4 packet. > > The nh_common nhc_has_gw was a temporary field used to convert existing > code from fib{6}_nh to fib_nh_common. That field is now converted to > nhc_gw_family to differentiate the address family of the gateway entry > as opposed to the address family of the container of fib_nh_common. > > Existing code for rtable and fib_config is refactored to prepare > for a v6 address and then support is added. From there various > miscellaneous functions are updated to handle a v6 gateway - from > validating the v6 address to lookups in bpf code to verifying the > nexthop state. > > Offload drivers - mlxsw and rocker - are modified to detect the v6 > gateway and reject the route as 'unsupported'. e.g., > > $ ip ro add 172.16.101.0/24 via inet6 fe80::202:ff:fe00:b dev swp1s0 > Error: mlxsw_spectrum: IPv6 gateway with IPv4 route is not supported. > > This can be removed in time once support is added to each. > > With the infrastructure changes in place, patch 17 enables it by adding > support for RTA_VIA to IPv4. RTA_VIA can be used for IPv4 addresses as > well. Only one of RTA_VIA and RTA_GATEWAY can be passed in a request. > > Patch 18 adds a few test cases to fib_tests.sh.
Reviewed-by: Ido Schimmel <ido...@mellanox.com> I also ran some tests and it looks good. Great work!