On 21/01/14 16:19, Dave Taht wrote:
I have finally got my first-ever comcast ipv6 set of users up, and we
have a problem
with the interrelationship between addresses assigned dynamically by
dhcpv6-pd and other means in dnsmasq 2.68.
What happens now is that dhcpv6-pd works but dnsmasq 2.68 filters out the
13: sw00: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2601:X:Y:9a1::1/64 scope global dynamic
valid_lft 182420sec preferred_lft 182420sec
so sends no ras.
adding a second "stable" interface dnsmasq picks up.
inet6 2601:3:8180:9a1::2/64 scope global
valid_lft forever preferred_lft forever
this check was not in dnsmasq 2.66, and was put in later for fairly
(like you don't want to start serving RAs on a SLAAC assigned
address), but in the
dhcp-pd case or otherwise assigned by the router (6in4) case, we do.
Anyway the below patch "fixes it" but I'd like there to be some clear indicator
of where things came from somehow.
Comparing the code in bpf.c (for *BSD) and netlink.c (for Linux) I think
it's clear what's meant: exclusion of privacy addresses and addresses
installed as a result of RAs received. The patch covers the first of
those, but there doesn't seem to be a Linux equivalent of the BSD
IN6_IFF_AUTOCONF flag to detect RA-originated addresses. I looked at the
kernel source, and there's no candidate I can see.
I suspect that this patch is the best that can be done.
From 4f55df81d69d20230e18c90d772904372b2b90a4 Mon Sep 17 00:00:00 2001
From: Jonas Gorski <xx...@openwrt.org>
Date: Wed, 8 Jan 2014 11:55:08 +0100
Subject: [PATCH] allow dhcp range construction with non-permanent addresses
The linux kernel treats all addresses with a limited lifetime as being
non permanent, but when taking over the prefix livetimes from upstream
assigned prefixes through DHCP, addresses will always have a limited
Still reject temporary addresses, as they indicate autoconfigured
Contributed by T-Labs, Deutsche Telekom Innovation Laboratories
Signed-off-by: Jonas Gorski <j...@openwrt.org>
src/netlink.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/netlink.c b/src/netlink.c
index 3be94ee..d5de4ab 100644
@@ -265,7 +265,7 @@ int iface_enumerate(int family, void *parm, int
if (ifa->ifa_flags & IFA_F_DEPRECATED)
flags |= IFACE_DEPRECATED;
- if (ifa->ifa_flags & IFA_F_PERMANENT)
+ if (!(ifa->ifa_flags & IFA_F_TEMPORARY))
flags |= IFACE_PERMANENT;
if (addrp && callback_ok)
Dnsmasq-discuss mailing list