You want dhcpcd-4.0.0-rc3

28 Jul 2008 • 2 min read

Hmmmm, all my blogs appear to be about dhcpcd these days. No bad thing though eh? Anyway, if you've been using dhcpcd-4.0.0-rc1 or rc2, you should update to rc3 as it fixes an issue with infinite leases and a potential issue with lease time overflowing time_t (as uint32_t is greater than time_t on 32-bit platforms). To get around this issue, we simply treat any unusable leases as infinite. This shouldn't be a problem as we base all our times around a monotonic clock instead of the actual time which means that when dhcpcd restarts you can handle leases of up to 67 years ahead. As dhcpcd runs, the maximum lease length it can handle starts to decrease. On 64-bit platforms, this issue is pretty much irrelevant as time_t is a lot bigger than uint32_t so they can handle any lease time you throw at it.

But this should be viewed as a non issue as in the real world, leases just are not that long. beta9 did not suffer from this as it used a decreasing timeout, but this proved to be inaccurate. Also for IPv4LL compliance we needed to introduce a second time, and for being able to exit on time for the userland a third time. Moving to a monotonic clock approach is much easier to manage, but did cause the above two bugs introduced in rc1.

NetBSD has also imported rc3 into -current (4.99.71) 😃 NetworkManager svn (0.7.0) also supports rc3, but it needs to be configured for it if both dhcpcd and dhclient are on the same box.

./configure --with-dhcp-client=dhcpcd