NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: bin/57957: dhcpcd fails to unconfigure addresses from released lease



> Date: Sun, 25 Feb 2024 16:31:10 +0000
> From: Roy Marples <roy%marples.name@localhost>
> 
> No-one has posted yet what their expected address lifetimes are and
> what they see from ifconfig.

The main point of this PR is that even after I asked dhcpcd to release
_everything_ with `dhcpcd -k' (no interface argument, because of
https://gnats.NetBSD.org/57956), it deleted all addresses _except_ for
the old DHCPv6 addresses.

That is, before all this, ifconfig showed something like this, with
everything under the old prefix 2001:db8:0:1111::/64 (sorry,
this is from memory, I don't still have the console transcript):

ure0: ...
...
        inet6 fe80::${URE_LLA}%ure0/64 flags 0 scopeid 0x2
        inet6 2001:db8:0:1111:${URE_SLAAC_GUA}/64 flags 0x40<AUTOCONF>
        inet6 fd...${URE_SLAAC_ULA}/64 flags 0x40<AUTOCONF>
        inet6 2001:db8:0:1111::1234/128 flags 0
        inet6 fd...:1234/128 flags 0
...

dhcpcd -n successfully added the new address 2001:db8:0:2220::1234, so
it looked something like this (not sure of the order of addresses, not
100% sure it excluded the old SLAAC addresses):

ure0: ...
...
        inet6 fe80::${URE_LLA}%ure0/64 flags 0 scopeid 0x2
        inet6 2001:db8:0:2220:${URE_SLAAC_GUA}/64 flags 0x40<AUTOCONF>
        inet6 fd...${URE_SLAAC_ULA}/64 flags 0x40<AUTOCONF>
        inet6 2001:db8:0:1111::1234/128 flags 0
        inet6 2001:db8:0:2220::1234/128 flags 0
        inet6 fd...:1234/128 flags 0
...

Then when I ran dhcpcd -k, ifconfig showed this:

ure0: ...
...
        inet6 fe80::${URE_LLA}%ure0/64 flags 0 scopeid 0x2
        inet6 2001:db8:0:1111::1234/128 flags 0
...

(I forget whether it also had fd...:1234 left, sorry.  But it
definitely didn't have any SLAAC addresses, or any DHCPv6 addresses
with the new prefix.)

At this point, dhcpcd was not running, and yet ure0 still had the old
address.  But it did not have the new address.

So `dhcpcd -k' succeeded in removing the new address, but failed to
remove the old address.  I expected it would remove _all_ addresses
that dhcpcd had configured for the interface.


(Now, another issue is why did the system continue to use the old
address as a source address, losing my IPv6 connectivity?  Also to be
investigated, and perhaps related -- perhaps dhcpcd forgot about it
and treated it as a manually configured address and somehow that led
to its being the default source address -- but let's keep this PR
focussed on how `dhcpcd -k' failed to unconfigure addresses it had
previously configured.)


Home | Main Index | Thread Index | Old Index