Subject: Re: [PATCH net v3] ipv6: fix multipath route replace error recovery

From: roopa <[email-masked]>
Date: Mon, 07 Sep 2015 17:42:18 -0700

On 9/6/15, 1:46 PM, Roopa Prabhu wrote:
> From: Roopa Prabhu <[email-masked]>
>
> Problem:
> The ecmp route replace support for ipv6 in the kernel, deletes the
> existing ecmp route too early, ie when it installs the first nexthop.
> If there is an error in installing the subsequent nexthops, its too late
> to recover the already deleted existing route
>
> This patch fixes the problem with the following:
> a) Changes the existing multipath route add code to a two stage process:
>    build rt6_infos + insert them
> 	ip6_route_add rt6_info creation code is moved into
> 	ip6_route_info_create.
> b) This ensures that all errors are caught during building rt6_infos
>    and we fail early
>
The other way I have been thinking of solving the problem is to mark the 
sibling routes being replaced with some state
...so they can be restored on error. Still figuring out a way to do this 
in a clean and non-intrusive way.
Or maybe  just save the sibling routes (rt6_infos) being replaced in a 
list and re-insert them on error.