Subject: Re: [PATCH] IPv6: Implement RFC 4429 Optimistic Duplicate Address Detection

From: Vlad Yasevich <[email-masked]>
Date: Fri, 02 Feb 2007 17:05:14 -0500

Brian Haley wrote:
> Hi Neil,
> 
>> @@ -830,7 +836,8 @@ retry:
>>      ift = !max_addresses ||
>>            ipv6_count_addresses(idev) < max_addresses ?         
>> ipv6_add_addr(idev, &addr, tmp_plen,
>> -                  ipv6_addr_type(&addr)&IPV6_ADDR_SCOPE_MASK,
>> IFA_F_TEMPORARY) : NULL;
>> +                  ipv6_addr_type(&addr)&IPV6_ADDR_SCOPE_MASK,
>> +                  IFA_F_TEMPORARY|IFA_F_OPTIMISTIC) : NULL;
> 

Hi Brian

> So why are you always adding these as optimistic now?  Shouldn't this be
> triggering off idev->cnf.optimistic_dad?  I know you're clearing it in
> ipv6_add_addr(), but I liked Vlad's suggestion of not setting it
> initially since this way seems backwards.

The troubling case seems to manually configured addresses (inet6_addr_add()).
If we can clearly and easily distinguish between this case of address
and all the other ones, then we can simply set the flag in ipv6_add_addr, like
we set the tentative flag.

So, we can introduce another parameter to ipv6_add_addr() or another flag that
can distinguish manual config.  Otherwise, we can keep the code as is, passing
the optimistic flag from needed callers, and clearing it inside ipv6_add_addr().

My thought was to clear it from the 'flags' parameter before ifa->flags was
set, but that  doesn't really matter.

-vlad