我正在编写一个内核模块,对于给定的 IP,需要验证该 IP 的内核 ARP 缓存中是否存在 ARP 条目。如果存在,我需要从该 ARP 条目中获取 MAC 地址。
我现在正在尝试理解 usr/src/linux-version/net/ipv4/arp.c
上的 arp_find
函数,但我不太明白明白了...有人可以发布一个示例,说明我如何完成此任务或指导我做一些可以帮助我的事情吗?我将不胜感激!
编辑:我的 IP 地址存储为 struct in_addr
编辑#2:我找到了答案 - 对于那些遇到此问题的人,请检查 net/core/neighbour.c< 上的函数
。 neigh_lookup
/pkey
参数只是指向您的 IPv4 地址 (struct in_addr
) 的指针。
最佳答案
我认为在Linux内核中,ARP缓存只存储邻居的MAC地址。您可以使用 arp_ioctl() 或遵循 arp_ioctl() 方法来实现您的任务。 arp_ioctl()主要做两件事:(1)查找net_device; (2)arp查找;
关于c - 从 ARP 条目获取给定 IP 的 MAC 地址(Linux 内核),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15208792/