• Vincent Bernat's avatar
    net: ipv6: fallback to full lookup if table lookup is unsuitable · a435a07f
    Vincent Bernat authored
    Commit 8c14586f ("net: ipv6: Use passed in table for nexthop
    lookups") introduced a regression: insertion of an IPv6 route in a table
    not containing the appropriate connected route for the gateway but which
    contained a non-connected route (like a default gateway) fails while it
    was previously working:
    
        $ ip link add eth0 type dummy
        $ ip link set up dev eth0
        $ ip addr add 2001:db8::1/64 dev eth0
        $ ip route add ::/0 via 2001:db8::5 dev eth0 table 20
        $ ip route add 2001:db8:cafe::1/128 via 2001:db8::6 dev eth0 table 20
        RTNETLINK answers: No route to host
        $ ip -6 route show table 20
        default via 2001:db8::5 dev eth0  metric 1024  pref medium
    
    After this patch, we get:
    
        $ ip route add 2001:db8:cafe::1/128 via 2001:db8::6 dev eth0 table 20
        $ ip -6 route show table 20
        2001:db8:cafe::1 via 2001:db8::6 dev eth0  metric 1024  pref medium
        default via 2001:db8::5 dev eth0  metric 1024  pref medium
    
    Fixes: 8c14586f ("net: ipv6: Use passed in table for nexthop lookups")
    Signed-off-by: default avatarVincent Bernat <vincent@bernat.im>
    Acked-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
    Tested-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a435a07f
route.c 92 KB