IPv6 addresses not released when routes change

Max Laier max.laier at tm.uka.de
Tue Mar 4 04:20:16 PST 2008


Am Di, 4.03.2008, 06:44, schrieb Kevin Oberman:
> At a recent networking conference an IPv6 hour took place where IPv6
> only was available. It was an interesting experience. On the whole,
> things worked well, but I hit one problem.
>
> When I brought up my system, I associated with the main conference SSID
> and received an IPv6 address prior to the IPv6 hour. Everything was
> working fine. At the appointed time, all of the SSIDs for IPv4/IPv6 were
> disabled. (No, I was not expecting that) and I re-associated with the
> IPv6 only SSID, the interface retained the old address in a different
> /64. It added the new address in a different /64, but did not remove the
> old address, even though there was no router to it.
>
> Worse, it continued to originate connections with the old address as the
> source. I had to manually delete the old address before I could open a
> connection.
>
> I've been thinking about what software should handle this. It needs to
> be some software that is aware that the router that assigned the the
> prefix is no longer available. There is nothing wrong with an IPv6
> interfaces having several active addresses, so you can't delete one
> just because another is assigned.

sys/netinet6/nd6_rtr.c::pfxlist_onlink_check() should take care of that. 
ndp(8) can be used to view the in-kernel state of things.  The prefix-
(ndp -p) and "default router"-lists (ndp -r) are esp. interesting.  Bad
parameters in the RA can slow down the process, but eventually the kernel
should figure out that the router is no longer reachable and mark the
prefixes as such.

-- 
/"\  Best regards,                      | mlaier at freebsd.org
\ /  Max Laier                          | ICQ #67774661
 X   http://pf4freebsd.love2party.net/  | mlaier at EFnet
/ \  ASCII Ribbon Campaign              | Against HTML Mail and News


More information about the freebsd-net mailing list