• David Ahern's avatar
    net: ipv6: Fixup device for anycast routes during copy · 98d11291
    David Ahern authored
    Florian reported a breakage with anycast routes due to commit
    4832c30d ("net: ipv6: put host and anycast routes on device with
    address"). Prior to this commit anycast routes were added against the
    loopback device causing repetitive route entries with no insight into
    why they existed. e.g.:
      $ ip -6 ro ls  table local type anycast
      anycast 2001:db8:1:: dev lo proto kernel metric 0 pref medium
      anycast 2001:db8:2:: dev lo proto kernel metric 0 pref medium
      anycast fe80:: dev lo proto kernel metric 0 pref medium
      anycast fe80:: dev lo proto kernel metric 0 pref medium
    
    The point of commit 4832c30d is to add the routes using the device
    with the address which is causing the route to be added. e.g.,:
      $ ip -6 ro ls  table local type anycast
      anycast 2001:db8:1:: dev eth1 proto kernel metric 0 pref medium
      anycast 2001:db8:2:: dev eth2 proto kernel metric 0 pref medium
      anycast fe80:: dev eth2 proto kernel metric 0 pref medium
      anycast fe80:: dev eth1 proto kernel metric 0 pref medium
    
    For traffic to work as it did before, the dst device needs to be switched
    to the loopback when the copy is created similar to local routes.
    
    Fixes: 4832c30d ("net: ipv6: put host and anycast routes on device with address")
    Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    98d11291
route.c 118 KB