Updated answer
I found the ip(8)
command in the iproute2
package does exactly what you want! CONFIG_ARPD
turned out to be irrelevant to this (it was even removed from the kernel at Linux 3.12.)
Run ip monitor neigh
and watch its output.
But I felt the ARP table is changed rather frequently... (cf. Configuring ARP age timeout )
Anyways please disregard my old answer below.
Old answer
I think your Linux kernel must have the CONFIG_ARPD
option enabled (try grep CONFIG_ARPD /boot/config-*
) to support such operations. And if so, you need to write C program to receive the information.