]> git.baikalelectronics.ru Git - kernel.git/commit
ipv6: do not delete previously existing ECMP routes if add fails
authorMichal Kubeček <mkubecek@suse.cz>
Mon, 18 May 2015 18:53:55 +0000 (20:53 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 May 2015 16:02:25 +0000 (12:02 -0400)
commit9bd113f96d19ee0a20fa78f736d80c7b28eaf8be
tree89234a81b657a4ad1e2ed07ab98736b8ee979e69
parent49058b0403065fb89ad478ddb409d2b25c60a741
ipv6: do not delete previously existing ECMP routes if add fails

If adding a nexthop of an IPv6 multipath route fails, comment in
ip6_route_multipath() says we are going to delete all nexthops already
added. However, current implementation deletes even the routes it
hasn't even tried to add yet. For example, running

  ip route add 1234:5678::/64 \
      nexthop via fe80::aa dev dummy1 \
      nexthop via fe80::bb dev dummy1 \
      nexthop via fe80::cc dev dummy1

twice results in removing all routes first command added.

Limit the second (delete) run to nexthops that succeeded in the first
(add) run.

Fixes: ae2659f1b0bd ("ipv6: add support of equal cost multipath (ECMP)")
Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/route.c