dhcp merge requestshttps://gitlab.isc.org/isc-projects/dhcp/-/merge_requests2022-08-10T12:56:20Zhttps://gitlab.isc.org/isc-projects/dhcp/-/merge_requests/62Faster server startup under FreeBSD with thousands of addresses/interfaces2022-08-10T12:56:20ZNick RogersFaster server startup under FreeBSD with thousands of addresses/interfacesThis addresses a server performance issue under FreeBSD, where the interface hardware address discovery process (`get_hw_addr`) is quite slow when there are hundreds or thousands of addresses/interfaces. The slowness is because the BPF c...This addresses a server performance issue under FreeBSD, where the interface hardware address discovery process (`get_hw_addr`) is quite slow when there are hundreds or thousands of addresses/interfaces. The slowness is because the BPF code iterates `getifaddrs()` entirely for each interface. `getifaddrs` returns all interface aliases, so you end up with a bad O(n^2) performance situation when there are hundreds or thousands of network interfaces (i.e. VLANs). This MR leverages the fact that `if_nametoindex` is a fast lookup, which can be passed to a sysctl that returns a single struct containing the MAC address.
Fixes #125.
I realize this is probably an exceptional corner case, however I have many production systems in this configuration, and I am willing to help get some kind of appropriate fix upstreamed.
Thanks!