Subject: Re: [PATCH net-next 00/18] ipv4: Enable support for IPv6 gateway with IPv4 routes

From: Ido Schimmel <[email-masked]>
Date: Fri, 5 Apr 2019 15:56:43 +0000

On Thu, Apr 04, 2019 at 10:49:49AM -0700, David Ahern wrote:
> From: David Ahern <[email-masked]>
> 
> 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 <[email-masked]>

I also ran some tests and it looks good.

Great work!