AFAIK, arpd
is used to offload certain jobs and memory footprint from kernel. The arpd
process can get packets from two sockets:
- notification messages from kernel via NETLINK
- regular ARP packets such as
ARP_REPLY
from the host's neighbors, via aPF_PACKET
socket
.
My question is, how are ARP packets delivered to a userspace socket? When network stack receives an ARP packet, it passes it to arp_rcv()
and arp_process()
kernel functions, but I wasn't able to locate any code that sends packet to the PF_PACKET
socket
that arpd
registered. I am sure I missed something here..