• Amit Cohen's avatar
    net: ipv6: Emit notification when fib hardware flags are changed · 907eea48
    Amit Cohen authored
    After installing a route to the kernel, user space receives an
    acknowledgment, which means the route was installed in the kernel,
    but not necessarily in hardware.
    
    The asynchronous nature of route installation in hardware can lead
    to a routing daemon advertising a route before it was actually installed in
    hardware. This can result in packet loss or mis-routed packets until the
    route is installed in hardware.
    
    It is also possible for a route already installed in hardware to change
    its action and therefore its flags. For example, a host route that is
    trapping packets can be "promoted" to perform decapsulation following
    the installation of an IPinIP/VXLAN tunnel.
    
    Emit RTM_NEWROUTE notifications whenever RTM_F_OFFLOAD/RTM_F_TRAP flags
    are changed. The aim is to provide an indication to user-space
    (e.g., routing daemons) about the state of the route in hardware.
    
    Introduce a sysctl that controls this behavior.
    
    Keep the default value at 0 (i.e., do not emit notifications) for several
    reasons:
    - Multiple RTM_NEWROUTE notification per-route might confuse existing
      routing daemons.
    - Convergence reasons in routing daemons.
    - The extra notifications will negatively impact the insertion rate.
    - Not all users are interested in these notifications.
    
    Move fib6_info_hw_flags_set() to C file because it is no longer a short
    function.
    Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    907eea48
route.c 161 KB