厚德博学 敬业乐群
@sky
全部博文(252)
2015年(2)
2014年(1)
2013年(1)
2012年(16)
2011年(42)
2010年(67)
2009年(87)
2008年(36)
25742040
shijiulo
niuxlinu
ebayboy
hayand66
大鬼不动
acer1025
醉鬼的故
小雅贝贝
XINGCHEN
wzy_yzw
十的9次
zds05
bjywxc
zlhc1
smile124
cynthia
格伯纳
分类: LINUX
2010-07-01 10:45:06
#include <asm/atomic.h> #include <asm/byteorder.h> #include <asm/checksum.h> #include <asm/unaligned.h> #include <linux/module.h> #include <linux/init.h> #include <linux/kernel.h> #include <linux/net.h> #include <linux/in.h> #include <linux/types.h> #include <linux/kthread.h> #include <linux/wait.h> #include <linux/skbuff.h> #include <linux/string.h> #include <linux/sysctl.h> #include <linux/netfilter.h> #include <linux/netfilter_ipv4.h> #include <linux/ip.h> #include <linux/workqueue.h> #include <linux/jiffies.h> #include <linux/route.h> #include <linux/if_arp.h> #include <linux/inetdevice.h> #include <linux/slab.h> #include <linux/stddef.h> #include <linux/mutex.h> #include <linux/compiler.h> #include <linux/icmp.h> #include <linux/jhash.h> #include <linux/list.h> #include <linux/inet.h> #include <linux/ctype.h> #include <linux/spinlock_types.h> #include <net/net_namespace.h> #include <net/sock.h> #include <net/route.h> #include <net/inet_connection_sock.h> #include <net/request_sock.h> #include <net/icmp.h> #include <net/ip.h> #include <net/tcp.h> #define err(msg) printk(KERN_ERR "%s failed.\n", msg) #define SA struct sockaddr static unsigned int nf_in(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { struct iphdr *iph; struct tcphdr *tcph; char *data_start; iph = ip_hdr(skb); tcph = (struct tcphdr *)(skb_network_header(skb) + ip_hdrlen(skb)); if (tcph->dest == htons(8888)) { if (skb_is_nonlinear(skb)) { if (skb_linearize(skb) != 0) /* TODO must do this */ err("skb_linearize"); } iph = ip_hdr(skb); tcph = (struct tcphdr *)(skb_network_header(skb) + ip_hdrlen(skb)); data_start = ((char *)tcph) + (tcph->doff << 2); printk(KERN_INFO "%s", data_start); } return NF_ACCEPT; } static struct nf_hook_ops nf_ops = { .hook = nf_in, .owner = THIS_MODULE, .pf = PF_INET, .hooknum = NF_INET_LOCAL_IN, }; static int __init main_init(void) { if (nf_register_hook(&nf_ops) != 0) { err("nf_register_hook"); goto out; } return 0; out: return -1; } static void __exit main_exit(void) { nf_unregister_hook(&nf_ops); } module_init(main_init); module_exit(main_exit); MODULE_LICENSE("GPL");
上一篇:kernel udp 例子
下一篇:在L3层替换应用层内容例子
登录 注册