Hi Vlad,

Vlad Yasevich wrote:
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.

Right, I guess maybe I'm trying to figure out what idev->cnf.optimistic_dad means:

1. Interface supports OPTIMISTIC addresses
2. All auto-configured addresses on interface are OPTIMISTIC
3. ???

All other addresses are created w/out OPTIMISTIC set.

I think manually-configured addresses can be tagged as OPTIMISTIC just like MIPv6 Home Addresses are if we just change this line in inet6_rtm_newaddr():

< ifa_flags = ifm->ifa_flags & (IFA_F_NODAD | IFA_F_HOMEADDRESS);
--
> ifa_flags = ifm->ifa_flags & (IFA_F_NODAD | IFA_F_HOMEADDRESS | IFA_F_OPTIMISTIC);

and tweak the rest of the code, but that doesn't cover the addrconf_add_ifaddr() codepath via ioctl(SIOCSIFADDR).

I can generate a patch based-on Neil's, but it will take me until Monday to get it out.

-Brian
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to