On 1/30/17 4:13 AM, Nicolas Dichtel wrote:
> Le 30/01/2017 à 03:57, David Ahern a écrit :
>> On 1/29/17 7:20 PM, Roopa Prabhu wrote:
>>>> 2. Delete - 1 notification for each hop for all combinations of delete 
>>>> commands
>>>
>>> here I was trying to say, for people deleting the full multipath route, you 
>>> should send a RTA_MULTIPATH.
>>
>> The only way to do that is to call inet6_rt_notify() *before* the route 
>> delete work has been done in fib6_del_route. Right now it is called at the 
>> end - after all sibling associations have been dropped, a time in which it 
>> can no longer fill in RTA_MULTIPATH.
>>
>> fib6_del_route function does not have any failure paths and is called with 
>> the write lock held, so moving the notification might be ok. But it also 
>> means ignoring all subsequent failures from fib6_del, again which might be 
>> ok since the only failure is ENOENT which can not happen if we are walking 
>> the sibling list.
> Is it not possible to prepare the RTA_MULTIPATH attribute during the deletion
> (when needed information are still available) and to use/copy it later when 
> the
> notification is done?

What I outlined above has the least complexity and does not require copies. And 
it is only proper for the 1 case where a multipath route is deleted by prefix 
and length -- the ability enabled by Patch 2.

> 
> Or at least, having RTA_MUTLTIPATH with one nexthop only, so that the user 
> knows
> that this route was part of an ECMP routes?
> 

For the ip6_route_multipath_del path, sure the nexthops deleted can be wrapped 
in RTA_MULTIPATH if the nexthop indeed has siblings, but does it help 
userspace? If all attributes outside of the nexthops are identical, then 
userspace would match the route without it.

Reply via email to