#include <linux/module.h>#include <linux/kernel.h>#include <linux/ip.h>#include <linux/netdevice.h>#include <linux/netfilter.h>#include <linux/netfilter_ipv4.h>#include <linux/skbuff.h>staticstructnf_hook_opsnf_ops;constchar*interface="lo";staticunsignedintmy_nf_hook(conststructnf_hook_ops*ops,structsk_buff*skb,conststructnet_device*in,conststructnet_device*out,int(*okfn)(structsk_buff*)){structiphdr*iph;if(skb->nohdr)returnNF_ACCEPT;iph=ip_hdr(skb);if(strcmp(in->name,interface)==0){printk(KERN_WARNING"drop lo packet: %pI4 -> ip %pI4, type is %d\n",&iph->saddr,&iph->daddr,iph->protocol);returnNF_DROP;}returnNF_ACCEPT;}staticint__inithello_init(void){nf_ops.hook=my_nf_hook;nf_ops.pf=PF_INET;nf_ops.hooknum=NF_INET_PRE_ROUTING;nf_ops.priority=NF_IP_PRI_FIRST;nf_register_hook(&nf_ops);return0;}staticvoid__exithello_exit(void){nf_unregister_hook(&nf_ops);}module_init(hello_init);module_exit(hello_exit);