Мне нужен некоторый код C или C++, компилируемый под Linux, чтобы иметь возможность взять список IP-адресов некоторого произвольного количества удаленных хост-компьютеров и получить MAC-адрес Ethernet для каждого из них. Эти хост-компьютеры могут находиться в одной подсети или в другой подсети за маршрутизатором. Это нормально, если MAC-адрес некоторых или всех удаленных хостов является адресом интерфейса на маршрутизаторе. В конечном счете, я хочу передать IP-адрес и MAC-адрес FPGA, который будет использовать эти фрагменты информации для форматирования и отправки пакетов UDP/IP через Ethernet на хосты. Очевидно, что FPGA также получит свой собственный MAC-адрес и IP-адрес для заполнения исходных MAC-адресов и исходных IP-адресов в пакетах.
Есть ли какой-то код, на который я могу указать, который может создавать и транслировать пакеты ARP на эти удаленные машины и получать обратно пакеты ответов ARP, чтобы можно было извлечь MAC-адреса назначения?