debugnet: Respond to broadcast ARP requests

The in-tree netdump code has always ignored non-directed ARP requests, and
that seems to work most of the time for netdump.

In my work and testing on NetGDB, it seems like sometimes the remote FreeBSD
conversant (the non-panic system) will send broadcast-destination ARP
requests to the debugnet kernel; without this change, those are dropped and
the remote will see EHOSTDOWN "Host is down" errors from the userspace
interface of the network stack.

Discussed with:	markj
This commit is contained in:
Conrad Meyer 2019-10-17 17:48:32 +00:00
parent d39756c142
commit 6d567ec2da
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=353689

View File

@ -434,7 +434,8 @@ debugnet_pkt_in(struct ifnet *ifp, struct mbuf *m)
goto done;
}
if (memcmp(ifr.ifr_addr.sa_data, eh->ether_dhost,
ETHER_ADDR_LEN) != 0) {
ETHER_ADDR_LEN) != 0 &&
(etype != ETHERTYPE_ARP || !ETHER_IS_BROADCAST(eh->ether_dhost))) {
DNETDEBUG_IF(ifp,
"discard frame with incorrect destination addr\n");
goto done;