|
#define __KERNEL__
#define MODULE
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/ip.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/skbuff.h>
#include <linux/udp.h>
#include <linux/tcp.h>
#include <net/tcp.h>
#include <linux/in.h>
MODULE_LICENSE("GPL");
//每经过一个数据包就会调用这个函数一次。
unsigned int pb_hook( unsigned int hooknum,
struct sk_buff **pskb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff*) )
{
printk("receive one pkt\n");
return NF_ACCEPT;
}
static struct nf_hook_ops nfo_ip_local_in = {
{NULL,NULL},
pb_hook,
PF_INET,
NF_IP_LOCAL_IN,
NF_IP_PRI_FIRST
};
static int __init pb_test_init(void)
{
return nf_register_hook(&nfo_ip_local_in);
}
module_init(pb_test_init);
static void __exit pb_test_exit(void)
{
nf_unregister_hook(&nfo_ip_local_in);
}
module_exit(pb_test_exit);
2.4下完全正常 |
|