Subject: Re: [PATCH iproute2 2/2] ip: remove NLM_F_EXCL in case of ECMPv6 routes

From: Nicolas Dichtel <[email-masked]>
Date: Thu, 25 Oct 2012 18:20:49 +0200

Le 25/10/2012 18:06, Stephen Hemminger a écrit :
> On Tue, 23 Oct 2012 14:42:56 +0200
> Nicolas Dichtel <[email-masked]> wrote:
>
>> ECMPv6 routes are added each one after the other by the kernel, so we should
>> avoid to set the flag NLM_F_EXCL.
>>
>> Signed-off-by: Nicolas Dichtel <[email-masked]>
>> ---
>>   ip/iproute.c | 5 ++++-
>>   1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/ip/iproute.c b/ip/iproute.c
>> index c60156f..799a70e 100644
>> --- a/ip/iproute.c
>> +++ b/ip/iproute.c
>> @@ -694,8 +694,11 @@ int parse_nexthops(struct nlmsghdr *n, struct rtmsg *r, int argc, char **argv)
>>   		rtnh = RTNH_NEXT(rtnh);
>>   	}
>>
>> -	if (rta->rta_len > RTA_LENGTH(0))
>> +	if (rta->rta_len > RTA_LENGTH(0)) {
>>   		addattr_l(n, 1024, RTA_MULTIPATH, RTA_DATA(rta), RTA_PAYLOAD(rta));
>> +		if (r->rtm_family == AF_INET6)
>> +			n->nlmsg_flags &= ~NLM_F_EXCL;
>> +	}
>>   	return 0;
>>   }
>>
>
> Shouldn't this be true for multipath IPv4 as well?
>
In IPv4, the message is treating in one shot, because all nexthops are added in 
the route. In IPv6, each nexthop is added like a single route and then they are 
linked together.