All of lore.kernel.org
 help / color / mirror / Atom feed
From: roopa <roopa@cumulusnetworks.com>
To: Michal Kubecek <mkubecek@suse.cz>
Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>,
	"David S. Miller" <davem@davemloft.net>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	James Morris <jmorris@namei.org>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	Patrick McHardy <kaber@trash.net>
Subject: Re: [PATCH net 1/2] ipv6: do not delete previously existing ECMP routes if add fails
Date: Wed, 13 May 2015 06:30:20 -0700	[thread overview]
Message-ID: <555351EC.9050805@cumulusnetworks.com> (raw)
In-Reply-To: <20150513124940.GB27366@unicorn.suse.cz>

On 5/13/15, 5:49 AM, Michal Kubecek wrote:
> On Wed, May 13, 2015 at 02:28:57PM +0200, Nicolas Dichtel wrote:
>> Le 13/05/2015 11:50, Michal Kubecek a écrit :
>>> 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: 51ebd3181572 ("ipv6: add support of equal cost multipath (ECMP)")
>>> Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
>>> ---
>>>   net/ipv6/route.c | 1 +
>>>   1 file changed, 1 insertion(+)
>>>
>>> diff --git a/net/ipv6/route.c b/net/ipv6/route.c
>>> index d3588885f097..18b92c05b541 100644
>>> --- a/net/ipv6/route.c
>>> +++ b/net/ipv6/route.c
>>> @@ -2536,6 +2536,7 @@ beginning:
>>>   				 * next hops that have been already added.
>>>   				 */
>>>   				add = 0;
>>> +				remaining = cfg->fc_mp_len - remaining;
>>>   				goto beginning;
>> Not sure to understand your fix. At the label beginning, the code is:
>>
>> beginning:
>>          rtnh = (struct rtnexthop *)cfg->fc_mp;
>>          remaining = cfg->fc_mp_len;
>>
>> Hence, 'remaining' will be overridden. How does your patch work?
> It does not, sorry. I'm still trying to find out what did I wrong while
> testing. I'll need to move the initialization of remaining above the
> label.
>
This looks like a similar bug i was trying to fix some time back:
http://patchwork.ozlabs.org/patch/362296/

(I am not sure if my full patch is still valid. I was thinking of 
re-spining it sometime soon. If you are interested in trying it out, 
please do)

  reply	other threads:[~2015-05-13 13:30 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-13  9:50 [PATCH net 0/2] IPv6 ECMP route add/replace fixes Michal Kubecek
2015-05-13  9:50 ` [PATCH net 1/2] ipv6: do not delete previously existing ECMP routes if add fails Michal Kubecek
2015-05-13 12:28   ` Nicolas Dichtel
2015-05-13 12:49     ` Michal Kubecek
2015-05-13 13:30       ` roopa [this message]
2015-05-13 20:06         ` Michal Kubecek
2015-05-13 19:59       ` [PATCH net v2 0/2] IPv6 ECMP route add/replace fixes Michal Kubecek
2015-05-13 19:59         ` [PATCH net v2 1/2] ipv6: do not delete previously existing ECMP routes if add fails Michal Kubecek
2015-05-14 18:54           ` Nicolas Dichtel
2015-05-13 19:59         ` [PATCH net v2 2/2] ipv6: fix ECMP route replacement Michal Kubecek
2015-05-14 18:58           ` Nicolas Dichtel
2015-05-14 21:49             ` Michal Kubecek
2015-05-15  8:51               ` Michal Kubecek
2015-05-15 16:12                 ` David Miller
2015-05-15 17:41                   ` Michal Kubecek
2015-05-16 21:18                     ` David Miller
2015-05-18 18:53                       ` [PATCH net v3 0/2] IPv6 ECMP route add/replace fixes Michal Kubecek
2015-05-18 18:53                         ` [PATCH net v3 1/2] ipv6: do not delete previously existing ECMP routes if add fails Michal Kubecek
2015-05-18 18:54                         ` [PATCH net v3 2/2] ipv6: fix ECMP route replacement Michal Kubecek
2015-05-19 20:51                           ` David Miller
2015-05-20  8:56                           ` Nicolas Dichtel
2015-05-20 16:03                         ` [PATCH net v3 0/2] IPv6 ECMP route add/replace fixes David Miller
2015-05-13  9:50 ` [PATCH net 2/2] ipv6: fix ECMP route replacement Michal Kubecek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=555351EC.9050805@cumulusnetworks.com \
    --to=roopa@cumulusnetworks.com \
    --cc=davem@davemloft.net \
    --cc=jmorris@namei.org \
    --cc=kaber@trash.net \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkubecek@suse.cz \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas.dichtel@6wind.com \
    --cc=yoshfuji@linux-ipv6.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.