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

From: Vlad Yasevich <[email-masked]>
Date: Fri, 26 Jan 2007 15:28:40 -0500

Hi Neil

Neil Horman wrote:
> On Fri, Jan 26, 2007 at 09:13:31AM +0900, YOSHIFUJI Hideaki / 吉藤英明 wrote:
>> In article <[email-masked]> (at Thu, 25 Jan 2007 14:45:00 -0500), Neil Horman <[email-masked]> says:
> 
> 
> New patch attached with most of your suggestions incorporated.  I've a few
> comments mixed in for some of the suggestions that I think need further
> discussion
> 
>> If optimistic_dad is disabled, flags should be IFA_F_TEMPORARY,
>> not IFA_F_TEMPORARY|IFA_F_OPTIMISTIC.
>>
>> Another idea is to use IFA_F_OPTIMISTIC not
>> IFA_F_OPTIMISTIC|IFA_F_TENTATIVE until the DAD has been finished.
>>
> 
> I'm currently setting the OPTIMISTIC flag in every location that its possibly
> needed, and then clearing it in addrconf_dad_start if that interface is not
> participating in optimistic dad.  I do this because the RFC in section 3.1
> indicates that manually configured addresses should not set the optimistic flag.
> If I removed the OPTIMISTIC flag from the locations it gets set in the patch and
> then only set it for participating interfaces in addrconf_dad_start, I would
> need to have some way to tell if the address in question was manually configured
> (to avoid setting it in that case).  At present I see no clear way to do that,
> but if you have a suggestion, I'll happily change this around.

One suggestiong/question:

Instead of clearing the OPTIMISTIC flag in addrconf_dad_start(), wouldn't it be better
to simply not set the flag in ipv6_add_addr()?  Just mask that flag from the 'flags'
argument passed to that function when conditions are right.

like 

if (!idev->cnf.optimistic_dad || ipv6_devconf.forwarding) 
	flags &= ~IFA_F_OPTIMISTIC;

The ifa->rt is also set there, so if the check for that is valid, we can do it there as well.

-vlad