mlxsw: spectrum_router: Abort on source-specific routes
authorIdo Schimmel <idosch@mellanox.com>
Thu, 3 Aug 2017 11:28:30 +0000 (13:28 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Aug 2017 22:36:01 +0000 (15:36 -0700)
Without resorting to ACLs, the device performs route lookup solely based
on the destination IP address.

In case source-specific routing is needed, an error is returned and the
abort mechanism is activated, thus allowing the kernel to take over
forwarding decisions.

Instead of aborting, we can trap specific destination prefixes where
source-specific routes are present, but this will result in a lot more
code that is unlikely to ever be used.

Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c

index cded8e8039bd838cdc06aaee030f28a4cf8c3416..45cf32ca4126091656045b586a0a7ad9200212cf 100644 (file)
@@ -3528,6 +3528,9 @@ static int mlxsw_sp_router_fib6_add(struct mlxsw_sp *mlxsw_sp,
        if (mlxsw_sp->router->aborted)
                return 0;
 
+       if (rt->rt6i_src.plen)
+               return -EINVAL;
+
        if (mlxsw_sp_fib6_rt_should_ignore(rt))
                return 0;