Import dhcpcd(8) into FreeBSD base

From: Ben Woods <woodsb02_at_freebsd.org>
Date: Sun, 07 Aug 2022 05:31:42 UTC
Hi freebsd-net,

I would like to propose dhcpcd is imported into FreeBSD base.

Reason: ensure fresh installs of FreeBSD support using DHCPv6 and prefix delegation to obtain an IP address (not supported by dhclient or rtsold). Having it in ports/packages could be problematic if people cannot obtain an IPv6 address to download it.

Why dhcpcd vs other DHCPv6 clients? It’s well supported, full featured, included in NetBSD and DragonflyBSD base, and is now sandboxed with capsicum. The other DHCP clients tend to either not support DHCPv6 (dhcpleased) or are no longer actively maintained (wide-dhcpv6-client).

For those not familiar with dhcpcd, it’s a DHCP client, not server. It can be run either in master mode (single instances manages DHCPv4 and DHCPv6 on all available network interfaces unless disabled in config), or single interface mode if preferred.

This was discussed once before on this mailing list in 2019, and I’ve had a review open on phabricator for a few years. The main technical concern raised (capsicum sandboxing) was resolved upstream with the dhcpcd 9.1.0 release in May 2020. What is perhaps missing is the broader community agreement of the change and forward plan.

If accepted, I would recommend a phased implementation such as that suggested below - open to ideas.

- 14.0 (and perhaps 13.2) - dhcpcd included but off by default (WITH_DHCPCD=on, but rc.conf/network.subr continue to use dhclient/rtsold). Release notes list forward plan.

- 14.1 - switch defaults in rc.conf/network.subr to use dhcpcd instead of dhclient/rtsold. Subject to any issues being addressed prior. Release notes could list deprecation of dhclient/rtsold - this deprecation step could be done slower if desired.

- 15.0 - remove dhclient/rtsold - again, could be done slower if desired.

I’d be keen to hear the thoughts of the community. If you want to try out dhcpcd today, it’s available in ports/packages.

I should point out that I have a ports commit bit - not src. If accepted, I’d either need a src committer to land it, or approve me committing (via phabricator).

https://reviews.freebsd.org/D22012
https://github.com/NetworkConfiguration/dhcpcd

Regards,
Ben

--
From: Ben Woods
woodsb02@freebsd.org