• David Ahern's avatar
    net: ipv6: Add RT6_LOOKUP_F_IFACE flag if oif is set · 741a11d9
    David Ahern authored
    Wolfgang reported that IPv6 stack is ignoring oif in output route lookups:
    
        With ipv6, ip -6 route get always returns the specific route.
    
        $ ip -6 r
        2001:db8:e2::1 dev enp2s0  proto kernel  metric 256
        2001:db8:e2::/64 dev enp2s0  metric 1024
        2001:db8:e3::1 dev enp3s0  proto kernel  metric 256
        2001:db8:e3::/64 dev enp3s0  metric 1024
        fe80::/64 dev enp3s0  proto kernel  metric 256
        default via 2001:db8:e3::255 dev enp3s0  metric 1024
    
        $ ip -6 r get 2001:db8:e2::100
        2001:db8:e2::100 from :: dev enp2s0  src 2001:db8:e3::1  metric 0
            cache
    
        $ ip -6 r get 2001:db8:e2::100 oif enp3s0
        2001:db8:e2::100 from :: dev enp2s0  src 2001:db8:e3::1  metric 0
            cache
    
    The stack does consider the oif but a mismatch in rt6_device_match is not
    considered fatal because RT6_LOOKUP_F_IFACE is not set in the flags.
    
    Cc: Wolfgang Nothdurft <netdev@linux-dude.de>
    Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    741a11d9
route.c 90.2 KB