pf-handler: Accept loopback interfaces as packet source

In some setups the responses from the DHCP server are sent via lo, which
does not have an address of type `ARPHRD_ETHER` (the address length is
the same, though, just all zeros, by default).  Note that the dhcp plugin
doesn't actually care for the MAC address or interface details, that's
only used by the farp plugin.

Fixes: 187c72d1af ("dhcp: Port the plugin to FreeBSD/macOS")
This commit is contained in:
Tobias Brunner
2025-01-31 11:19:42 +01:00
parent 543a4c86f9
commit abbf9d28b0
+2 -1
View File
@@ -176,7 +176,8 @@ static cached_iface_t *find_interface(private_pf_handler_t *this, int fd,
if (ioctl(fd, SIOCGIFNAME, &req) == 0 &&
ioctl(fd, SIOCGIFHWADDR, &req) == 0 &&
req.ifr_hwaddr.sa_family == ARPHRD_ETHER)
(req.ifr_hwaddr.sa_family == ARPHRD_ETHER ||
req.ifr_hwaddr.sa_family == ARPHRD_LOOPBACK))
{
idx = find_least_used_cache_entry(this);