从ARP条目获取给定IP的MAC地址(Linux内核)

时间:2013-03-04 18:47:11

标签: c linux linux-device-driver

我正在编写内核模块,并且对于给定的IP,需要验证内核的ARP缓存中是否存在针对该IP的ARP条目。如果存在,我需要从该ARP条目中获取MAC地址。

此时我正试图理解arp_find usr/src/linux-version/net/ipv4/arp.c上的struct in_addr功能,但我不太明白......有人可以发一个例子说明如何完成此任务或直接我可以帮助我吗?我将不胜感激!

编辑:我的IP地址存储为neigh_lookup

编辑#2:我找到了答案 - 对于遇到此问题的人,请检查net/core/neighbour.c上的pkey功能。 struct in_addr参数只是指向IPv4地址({{1}})的指针。

1 个答案:

答案 0 :(得分:0)

我认为在Linux内核中,ARP缓存只存储邻居的mac地址。您可以使用arp_ioctl()或遵循arp_ioctl()方法来实现您的任务。 arp_ioctl()做了两件大事:(1)找到net_device; (2)arp lookup;