使用Linux。 给定一个特定的目标IP地址,我需要使用其下一跳MAC地址和接口填充ARP缓存。 我的软件项目中的其他机制将获取此MAC地址并将其推送到FPGA。
如果我打开到该地址的TCP连接,它将被解析并发送TCP握手包。如果我打开UDP套接字并将其“连接”到地址,则无法解析。如果我通过连接的UDP套接字发送一个数据包,它就会被解析。
arp(7) documentation解释了这一点:“......只有在排队等待发送的数据时才会发送请求。”
我无法直接调用'arp'实用程序。
我的问题:有没有办法通过在后台发送ARP而不需要实际发送数据包来说服系统填充地址? 我希望有一些ioctl或setsockopt。
我更喜欢通用解决方案,它也适用于IPv6邻居解析。
谢谢, 古尔