• Amit Cohen's avatar
    IPv6: Add "offload failed" indication to routes · 0c5fcf9e
    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.
    
    To avoid such cases, previous patch set added the ability to emit
    RTM_NEWROUTE notifications whenever RTM_F_OFFLOAD/RTM_F_TRAP flags
    are changed, this behavior is controlled by sysctl.
    
    With the above mentioned behavior, it is possible to know from user-space
    if the route was offloaded, but if the offload fails there is no indication
    to user-space. Following a failure, a routing daemon will wait indefinitely
    for a notification that will never come.
    
    This patch adds an "offload_failed" indication to IPv6 routes, so that
    users will have better visibility into the offload process.
    
    'struct fib6_info' is extended with new field that indicates if route
    offload failed. Note that the new field is added using unused bit and
    therefore there is no need to increase struct size.
    Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0c5fcf9e
route.c 162 KB