dhcpcd-8.1.2 has been released with the following changes:
- hooks: STOPPED is now run on timeout and exit
- musl: Fix build
- Linux: Validate RTM_NEWADDR/RTM_DELADDR messages
- BSD: Use IP_REVCIF rather than IN_PKTINFO
- build: address sanitisation is enabled for debug builds
- build: Improve detection of dlsym requirements
- DHCP: When rebinding, ensure we have a DHCP ARP state
- RA: Sort routers when reachability changes
- RA: Apply hoplimit, reachable and retrans timer values to kernel
- RA: Warn if advertised MTU > interface MTU
- OpenBSD: Fix carrier detection for OpenBSD-6.6
- dhcpcd: Report SSID connection to when we gain carrier
- DHCP: Fix corruption of address flags when renewing
The last issue was the cause of the recent report about dhcpcd pegging a CPU, so this is quite an important upgrade from 8.1.1
dhcpcd-8.1.1 has been released with the following changes:
- IPv6: Fix a potential crash when udevs marks an interface ready.
- Linux: compat shim added for setproctitle(3).
- arc4random: fixed UB in compat shim.
- DHCP: Fix fallout from dhcpcd-8.1.0 for checksum calculation.
The last fix involved a lot a people, quite a few different fixes and played havoc with gcc-9.2 but should now be resolved.
So, dhcpcd was added to DragonFlyBSD almost a year ago. Recently I've become a DragonFlyBSD committer with the express purpose of easing dhcpcd into the role of the default DHCP client.
All of the really needed kernel improvements are now in and dhcpcd doesn't log any more compile warnings, but there is more work to be done such as RFC 5227 support, restarting DaD on link state up and denying the use of an address until validated. I'm quite enjoying working on DragonFlyBSD ... their SMP approach is very interesting and in many ways much easier to work with than NetBSDs fine grained locking approach.
And then out of the blue, a discussion crops up on the FreeBSD mailing list about putting dhcpcd into the FreeBSD base system! This has led into me working on Priviledge Seperation which seems to be the only show stopper for FreeBSD acceptance. I have a reasonable idea on how this should work and hopefully this will be enough.
With the following changes:
- DragonFlyBSD: Improved rc.d handling
- Fix carrier status after a route socket overflow
- Allow domain spaced options
- DHCP: Allow not sending Force Renew Nonce or Reconf Accept
- IPv4LL: Now passes Apple Bonjour test versions 1.4 and 1.5
- ARP: Fix a typo and remove pragma (thus working with old gcc)
- DHCP6: Fix a cosmetic issue with infinite leases
- DHCP6: SLA 0 and Prefix Len 0 will now add a delegated /64 address
- Ignore some virtual interfaces such as Tap and Bridge by default
- BPF: Move validation logic out of BPF and back into dhcpcd
With the following changes:
- inet6: Fix default route not being installed
- DHCP: If root fs is network mounted, enable last lease extend
- man: Fix lint errors.
- BSD: avoid RTF_WASCLONED routes
- DHCP: Give a better message when packet validation fails
- DHCP: Ensure we have enough data to checksum IP and UDP
The last change fixes a potential DoS attack introduced in dhcpcd-8.0.3 when the checksuming code was changed to accomodate variable length IP headers. The commit says since 7.2.0, but I've now decided that's not the case.