在Linux中,ARP缓存默认的过期时间是60秒。当一个ARP条目到达其过期时间时,内核会将其从缓存中删除。
以下是用C语言实现arp路由老化代码的示例:
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <linux/if_ether.h>
#include <linux/if_packet.h>
#include <linux/if_arp.h>
int main() {
int sockfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ARP));
struct ifreq ifr;
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);
ioctl(sockfd, SIOCGIFINDEX, &ifr);
struct arpreq arp;
memset(&arp, 0, sizeof(arp));
arp.arp_pa.sa_family = AF_INET;
inet_pton(AF_INET, "192.168.0.1", &((struct sockaddr_in *)&arp.arp_pa)->sin_addr);
memcpy(&ifr.ifr_ifru.ifru_arpreq, &arp, sizeof(struct arpreq));
ioctl(sockfd, SIOCDARP, &ifr);
return 0;
}
这段代码演示了如何使用SIOCDARP
命令删除ARP缓存。它将名为“eth0”的网络接口上指定IP地址的ARP条目从缓存中删除。
内容由零声教学AI助手提供,问题来源于学员提问