• Ido Schimmel's avatar
    mlxsw: spectrum_router: Simplify VRF enslavement · b1e45526
    Ido Schimmel authored
    When a netdev is enslaved to a VRF master, its router interface (RIF)
    needs to be destroyed (if exists) and a new one created using the
    corresponding virtual router (VR).
    
    >From the driver's perspective, the above is equivalent to an inetaddr
    event sent for this netdev. Therefore, when a port netdev (or its
    uppers) are enslaved to a VRF master, call the same function that
    would've been called had a NETDEV_UP was sent for this netdev in the
    inetaddr notification chain.
    
    This patch also fixes a bug when a LAG netdev with an existing RIF is
    enslaved to a VRF. Before this patch, each LAG port would drop the
    reference on the RIF, but would re-join the same one (in the wrong VR)
    soon after. With this patch, the corresponding RIF is first destroyed
    and a new one is created using the correct VR.
    
    Fixes: 7179eb5a ("mlxsw: spectrum_router: Add support for VRFs")
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Reviewed-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b1e45526
spectrum.h 20.6 KB