Skip to content
Snippets Groups Projects
Select Git revision
  • a1a22c12060e4b9c52f45d4b3460f614e00162a2
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

route.c

  • David Ahern's avatar
    a1a22c12
    net: ipv6: Keep nexthop of multipath route on admin down · a1a22c12
    David Ahern authored
    
    IPv6 deletes route entries associated with multipath routes on an
    admin down where IPv4 does not. For example:
        $ ip ro ls vrf red
        unreachable default metric 8192
        1.1.1.0/24 metric 64
                nexthop via 10.100.1.254  dev eth1 weight 1
                nexthop via 10.100.2.254  dev eth2 weight 1
        10.100.1.0/24 dev eth1 proto kernel scope link src 10.100.1.4
        10.100.2.0/24 dev eth2 proto kernel scope link src 10.100.2.4
    
        $ ip -6 ro ls vrf red
        2001:db8:1::/120 dev eth1 proto kernel metric 256  pref medium
        2001:db8:2:: dev red proto none metric 0  pref medium
        2001:db8:2::/120 dev eth2 proto kernel metric 256  pref medium
        2001:db8:11::/120 via 2001:db8:1::16 dev eth1 metric 1024  pref medium
        2001:db8:11::/120 via 2001:db8:2::17 dev eth2 metric 1024  pref medium
        ...
    
    Set link down:
        $ ip li set eth1 down
    
    IPv4 retains the multihop route but flags eth1 route as dead:
    
        $ ip ro ls vrf red
        unreachable default metric 8192
        1.1.1.0/24
                nexthop via 10.100.1.16  dev eth1 weight 1 dead linkdown
                nexthop via 10.100.2.16  dev eth2 weight 1
        10.100.2.0/24 dev eth2 proto kernel scope link src 10.100.2.4
    
    and IPv6 deletes the route as part of flushing all routes for the device:
    
        $ ip -6 ro ls vrf red
        2001:db8:2:: dev red proto none metric 0  pref medium
        2001:db8:2::/120 dev eth2 proto kernel metric 256  pref medium
        2001:db8:11::/120 via 2001:db8:2::17 dev eth2 metric 1024  pref medium
        ...
    
    Worse, on admin up of the device the multipath route has to be deleted
    to get this leg of the route re-added.
    
    This patch keeps routes that are part of a multipath route if
    ignore_routes_with_linkdown is set with the dead and linkdown flags
    enabling consistency between IPv4 and IPv6:
    
        $ ip -6 ro ls vrf red
        2001:db8:2:: dev red proto none metric 0  pref medium
        2001:db8:2::/120 dev eth2 proto kernel metric 256  pref medium
        2001:db8:11::/120 via 2001:db8:1::16 dev eth1 metric 1024 dead linkdown  pref medium
        2001:db8:11::/120 via 2001:db8:2::17 dev eth2 metric 1024  pref medium
        ...
    
    Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a1a22c12
    History
    net: ipv6: Keep nexthop of multipath route on admin down
    David Ahern authored
    
    IPv6 deletes route entries associated with multipath routes on an
    admin down where IPv4 does not. For example:
        $ ip ro ls vrf red
        unreachable default metric 8192
        1.1.1.0/24 metric 64
                nexthop via 10.100.1.254  dev eth1 weight 1
                nexthop via 10.100.2.254  dev eth2 weight 1
        10.100.1.0/24 dev eth1 proto kernel scope link src 10.100.1.4
        10.100.2.0/24 dev eth2 proto kernel scope link src 10.100.2.4
    
        $ ip -6 ro ls vrf red
        2001:db8:1::/120 dev eth1 proto kernel metric 256  pref medium
        2001:db8:2:: dev red proto none metric 0  pref medium
        2001:db8:2::/120 dev eth2 proto kernel metric 256  pref medium
        2001:db8:11::/120 via 2001:db8:1::16 dev eth1 metric 1024  pref medium
        2001:db8:11::/120 via 2001:db8:2::17 dev eth2 metric 1024  pref medium
        ...
    
    Set link down:
        $ ip li set eth1 down
    
    IPv4 retains the multihop route but flags eth1 route as dead:
    
        $ ip ro ls vrf red
        unreachable default metric 8192
        1.1.1.0/24
                nexthop via 10.100.1.16  dev eth1 weight 1 dead linkdown
                nexthop via 10.100.2.16  dev eth2 weight 1
        10.100.2.0/24 dev eth2 proto kernel scope link src 10.100.2.4
    
    and IPv6 deletes the route as part of flushing all routes for the device:
    
        $ ip -6 ro ls vrf red
        2001:db8:2:: dev red proto none metric 0  pref medium
        2001:db8:2::/120 dev eth2 proto kernel metric 256  pref medium
        2001:db8:11::/120 via 2001:db8:2::17 dev eth2 metric 1024  pref medium
        ...
    
    Worse, on admin up of the device the multipath route has to be deleted
    to get this leg of the route re-added.
    
    This patch keeps routes that are part of a multipath route if
    ignore_routes_with_linkdown is set with the dead and linkdown flags
    enabling consistency between IPv4 and IPv6:
    
        $ ip -6 ro ls vrf red
        2001:db8:2:: dev red proto none metric 0  pref medium
        2001:db8:2::/120 dev eth2 proto kernel metric 256  pref medium
        2001:db8:11::/120 via 2001:db8:1::16 dev eth1 metric 1024 dead linkdown  pref medium
        2001:db8:11::/120 via 2001:db8:2::17 dev eth2 metric 1024  pref medium
        ...
    
    Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>