So after maintaining dhcpcd (an automated network configuration tool) for quite a few years now on various BSD platforms I find myself constantly amazed by their little differences. For various reasons, my code talks directly to the kernel to manipulate addresses and routes in ways it’s simply not possible using ifconfig(8) or route(8).

I’ve reported various bugs upstream, sometimes supplied patches. dhcpcd these days works pretty darned well on all BSD platforms out of the box, but there are still some caveats where dhcpcd has to work differently to do the same job. This article focuses on the big three, NetBSD, OpenBSD and FreeBSD.