LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1493|回复: 2

急求帮助,,内核模块如何发送数据到网络??

[复制链接]
发表于 2006-3-18 21:47:07 | 显示全部楼层 |阅读模式
想编一内核模块,基本功能是在netfilter下的一个钩子下注册一个处理函数,
此函数会把上层的包拦住,让后请求服务器作出应答,如果应答1,则该包放行
o则抛弃,
问题:如何在内核模块构建udp包发送到网络并等待回应。。。。。???
急呀!!
 楼主| 发表于 2006-3-19 09:28:27 | 显示全部楼层
效率太低了。怎么帖子发了一个晚上都没有回。。。。。
艾。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2006-3-27 23:00:22 | 显示全部楼层
用sock_create_kern(PF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock)
创建socket结构.
用kernel_sendmsg(sock, &msg, &vec, x, xxx)发送数据包,
内核态的bsd socket和用户态的socket基本相同, 不过内核态用socket结构, 用户态用文件描述符, 内核的bind/connect/listen函数都用socket->ops->bind/connect/listen... 等, 发包和收包用kernel_sendmsg和kernel_recvmsg, 不过注意, kernel用kvec, 用户态用iovec, 不过他们可以相互转换. 用sourcenavigator看packetgen.c(一个内核发包模块)就明白了.

另: 人家回答你的问题是自愿的, 不要报怨.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表