[Dnsmasq-discuss] 2.68rc4: bind-interfaces, FreeBSD, IPv6 2001:... addr fails and loses error code, parallel build brittle

Matthias Andree matthias.andree at gmx.de
Wed Dec 4 01:09:35 GMT 2013

Am 03.12.2013 12:11, schrieb Simon Kelley:

>> Could you double-check iface_allowed_v6() and the network enumeration
>> code that calls it, and the code in network.c:703 that calls bind()?
>> Either needs to zero out the scope_id for non-link-local i'faces.
> That looks like a very good diagnosis: zeroing the scope_id in the
> appropriate cases should be easy. I wonder why this has just struck, the
> code has been like that for some time, and never previuosly hit a
> problem. FreeBSD change?

I don't think so - I rather suspect that this is a rare occasion and I
was the first to see and report it.  It would seem we have four
nondefault constraints for the bug to show:

1. IPv6 needs to be enabled on the external interface
2. a global IPv6 needs to be configured, either manually, or
autoconfigured from an external router
3. dnsmasq needs to be installed
4. dnsmasq needs to use --bind-interfaces.

> I'm thinking of having a small tattoo, in a visible (to me) place that
> reads "REMEMBER: IPv6 is not IPv4".


> It's not a martian problem, it's the Weak End System Model which is used
> by Linux. I don't know if that's used by FreeBSD.

I have never bothered to check, yet.

> The standard fix is to use --bind-dynamic, which can rely  on the
> existence of the extended API. Unfortunately that doesn't work on
> FreeBSD because it also relies on a a method of getting asynchronous
> events when interfaces/address come and go. Does FreeBSD have an
> equivalent of the Linux netlink socket?

I'm not aware of one, and address changes do not appear through
devctl(4).  This would best be asked on FreeBSD-hackers or similar lists.

More information about the Dnsmasq-discuss mailing list