On 23/01/14 02:31, Vladislav Grishenko wrote:
- if (ifa->ifa_flags& IFA_F_PERMANENT)
+ if (!(ifa->ifa_flags& IFA_F_TEMPORARY))
IFA_F_TEMPORARY flag used only if privacy extensions are enabled in kernel,
in all other cases it makes no sense and will not be there.
That means condition will be always evaluated as TRUE for any kind of
address, including event tentative, and any address but privacy-generated
will get permanent flag.
Meanwhile, construct_worker() has no protection against tentative, temporary
and so on flags, so, after patch, it will work for any address on linux.
Was it really intended?
The problem is that there's no way, using the existing flags, for
distinguish between an address created as a result of RA and one created
by the dhcpv6-pd client or 6in4 . That's right Dave? Linux is missing
the IN6_IFF_AUTOCONF flag that BSD has that marks RA-created flags.
So, the above should probably be extended to eliminate dadfailed
(deprecated is already filtered out) but there's no way to avoid RA,
except for going back to the rule that the host-identifier part of the
address must be equal to the first or last address in the dhcp-range.
Unless anyone has any bright ideas.
Dnsmasq-discuss mailing list