[Dnsmasq-discuss] Better IPv6 DAD support

Simon Kelley simon at thekelleys.org.uk
Wed Sep 14 09:55:44 BST 2011


On 13/09/11 18:51, Stephen Hemminger wrote:
> There is an issue with libvirt, IPV6 and bridging.
> Basically, a recent change to the kernel to not bring carrier up if
> bridge port is down breaks things like dnsmasq because IPV6 doesn't
> show addresses as available.
>
> Ideally, dnsmasq would just wait until IPv6 addresses were good.
>
> Looking at dnsmasq source, this is what I think needs to happen:
>
> 1. Add check for tentative addresses here, and ignore them.
>     This is similar to a fix which was needed in ntp.
>
> diff --git a/src/netlink.c b/src/netlink.c
> index df3585f..b2f4cd9 100644
> --- a/src/netlink.c
> +++ b/src/netlink.c
> @@ -213,6 +213,12 @@ int iface_enumerate(int family, void *parm, int (*callback)
>                  else if (ifa->ifa_family == AF_INET6)
>                    {
>                      struct in6_addr *addrp = NULL;
> +
> +                   /* An interface may have an IPv6 address which is still
> +                      undergoing DAD.  If so, ignore it. */
> +                   if (ifa->ifa_flags&  IFA_F_TENTATIVE)
> +                           return 0;
> +
>                      while (RTA_OK(rta, len1))
>                        {
>                          if (rta->rta_type == IFA_ADDRESS)
>
> 2. You could then remove the dad_count sleep loop in network.c as well.
>
> 3. Make dnsmasq handle address hot plug, by listening for IPV6 address changes
>     as well as ROUTE changes. Not sure if the code is ready to deal with this.

Ok, I'll take a look. This is what gets me about IPv6, the massive 
seconds-system effect. Let's increase the size of IP addresses, and 
whilst we're at it make the world a whole lot more complex for no good 
reason.

>
> 4. The dnsmasq server should also be listening for hot plug interfaces on netlink
>     as well, or do you rely on dbus for that?
>
Not sure I quite understand this question.


Cheers,

Simon.







More information about the Dnsmasq-discuss mailing list