#include #include #include #include #include static int conntrack_event(struct notifier_block *this, unsigned long events, void *ptr) { struct ip_conntrack *ct = (struct ip_conntrack *)ptr; if (events & IPCT_DESTROY) printk("protonum=%d\n", ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum); return 0; } static struct notifier_block ctnl_notifier = { .notifier_call = conntrack_event, }; static int __init hello_init(void) { int ret; need_conntrack(); ret = ip_conntrack_register_notifier(&ctnl_notifier); if (ret < 0) printk("ipaddr_init: cannot register notifier.\n"); return ret; } module_init(hello_init); MODULE_LICENSE("GPL");