关于在netfilter中使用skb_copy发生的问题
时间:2010-11-23
来源:互联网
本帖最后由 anhongkui 于 2010-11-23 17:34 编辑
在NF_IP_LOCAL_OUT注册了一个hook, 想将一个包变成两个包。
复制代码
这样子,只要 insmod test.o(2.4内核),且有数据包,则直接死机
因为设备无法接显示器,所以无法查错误。
希望有人能告诉我怎么回事,谢谢啦。
编译:
复制代码
在NF_IP_LOCAL_OUT注册了一个hook, 想将一个包变成两个包。
- #ifndef __KERNEL__
- #define __KERNEL__
- #endif
-
- #ifndef MODULE
- #define MODULE
- #endif
-
- #include <linux/module.h>
- #include <linux/skbuff.h>
- #include <linux/netdevice.h>
- #include <linux/config.h>
- #include <linux/ip.h>
- #include <linux/tcp.h>
- #include <linux/udp.h>
- #include <net/ip.h>
- #include <linux/netfilter_ipv4.h>
-
-
-
- static unsigned int doit(unsigned int hooknum, struct sk_buff **skb,
- const struct net_device *in,
- const struct net_device *out,
- int (*okfn) (struct sk_buff *))
- {
-
- struct sk_buff *newskb = skb_copy(*skb, GFP_ATOMIC);
- if (newskb != NULL) {
- okfn(*skb);
- }
- return NF_ACCEPT;
- }
-
- static struct nf_hook_ops mynetfilter = {
- {NULL, NULL},
- doit,
- PF_INET,
- /* NF_IP_PRE_ROUTING, */
- NF_IP_LOCAL_OUT,
- #if 1
- INT_MIN
- #else
- NF_IP_PRI_FILTER - 1
- #endif
- };
-
- int init_module(void) //注册模块函数
- {
- return nf_register_hook(&mynetfilter);
- }
-
- void cleanup_module(void)
- {
- nf_unregister_hook(&mynetfilter);
- }
-
- MODULE_LICENSE("GPL");
因为设备无法接显示器,所以无法查错误。
希望有人能告诉我怎么回事,谢谢啦。
编译:
- gcc -c mynf.c -D__KERNEL__ -DMODULE -I /usr/src/linux-2.4/include -O -Wall
作者: anhongkui 发布时间: 2010-11-23
QUOTE:
# static unsigned int doit(unsigned int hooknum, struct sk_buff **skb,
# const struct net_device *in,
# const struct net_device *out,
# int (*okfn) (struct sk_buff *))
# {
#
# struct sk_buff *newskb = skb_copy(*skb, GFP_ATOMIC);
# if (newskb != NULL) {
# okfn(*skb);
# }
# return NF_ACCEPT;
# }
# const struct net_device *in,
# const struct net_device *out,
# int (*okfn) (struct sk_buff *))
# {
#
# struct sk_buff *newskb = skb_copy(*skb, GFP_ATOMIC);
# if (newskb != NULL) {
# okfn(*skb);
# }
# return NF_ACCEPT;
# }
你这个地方的逻辑不对, 既然你都调用 okfn 将 skb 发出去了,为什么还 return NF_ACCEPT 呢。
修改为 return NF_STOLEN 试一下
作者: Godbach 发布时间: 2010-11-23
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28