#include #include static unsigned int my_nf_hookfn(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { /* process packet */ //... return NF_ACCEPT; } static struct nf_hook_ops my_nfho = { .owner = THIS_MODULE, .hook = my_nf_hookfn, .hooknum = NF_IP_LOCAL_IN, .pf = PF_INET, .priority = NF_IP_PRI_FIRST }; int __init my_hook_init(void) { return nf_register_hook(&my_nfho); } void __exit my_hook_exit(void) { nf_unregister_hook(&my_nfho); } module_init(my_hook_init); module_exit(my_hook_exit);