• Ido Schimmel's avatar
    ipv4: Fix route deletion when nexthop info is not specified · d5082d38
    Ido Schimmel authored
    When the kernel receives a route deletion request from user space it
    tries to delete a route that matches the route attributes specified in
    the request.
    
    If only prefix information is specified in the request, the kernel
    should delete the first matching FIB alias regardless of its associated
    FIB info. However, an error is currently returned when the FIB info is
    backed by a nexthop object:
    
     # ip nexthop add id 1 via 192.0.2.2 dev dummy10
     # ip route add 198.51.100.0/24 nhid 1
     # ip route del 198.51.100.0/24
     RTNETLINK answers: No such process
    
    Fix by matching on such a FIB info when legacy nexthop attributes are
    not specified in the request. An earlier check already covers the case
    where a nexthop ID is specified in the request.
    
    Add tests that cover these flows. Before the fix:
    
     # ./fib_nexthops.sh -t ipv4_fcnal
     ...
     TEST: Delete route when not specifying nexthop attributes           [FAIL]
    
     Tests passed:  11
     Tests failed:   1
    
    After the fix:
    
     # ./fib_nexthops.sh -t ipv4_fcnal
     ...
     TEST: Delete route when not specifying nexthop attributes           [ OK ]
    
     Tests passed:  12
     Tests failed:   0
    
    No regressions in other tests:
    
     # ./fib_nexthops.sh
     ...
     Tests passed: 228
     Tests failed:   0
    
     # ./fib_tests.sh
     ...
     Tests passed: 186
     Tests failed:   0
    
    Cc: stable@vger.kernel.org
    Reported-by: default avatarJonas Gorski <jonas.gorski@gmail.com>
    Tested-by: default avatarJonas Gorski <jonas.gorski@gmail.com>
    Fixes: 493ced1a ("ipv4: Allow routes to use nexthop objects")
    Fixes: 6bf92d70 ("net: ipv4: fix route with nexthop object delete warning")
    Fixes: 61b91eb3 ("ipv4: Handle attempt to delete multipath route when fib_info contains an nh reference")
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Reviewed-by: default avatarNikolay Aleksandrov <razor@blackwall.org>
    Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20221124210932.2470010-1-idosch@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    d5082d38
fib_nexthops.sh 68.7 KB