如何使用C在netfilter中打印特定IP地址的数据包信息



我正在使用此代码打印一些关于"所有"从所有IP地址接收和发送的数据包的信息包。如何只打印特定IP地址的数据包信息?

这是代码的一部分:

{
struct ethhdr *eth;
struct iphdr *ip_header;
eth = (struct ethhdr*)skb_mac_header(skb);
ip_header = (struct iphdr *)skb_network_header(skb);
if (HOST_IP_ADDR == ip_header->saddr)
return NF_ACCEPT;
printk("NF_IP_LOCAL_IN hook:n");
printk("src mac %pM, dst mac %pMn", eth->h_source, eth->h_dest);
printk("src IP addr:=%pI4n", &ip_header->saddr);
return NF_ACCEPT;
}

如果将HOST_IP_ADDR定义为字符串,则可以在要与匹配的IP地址周围使用in_aton()

ip_header = (struct iphdr *)skb_network_header(skb);
if (in_aton("192.168.1.1") == ip_header->saddr)
{
// matches 192.168.1.1
}

最新更新