+ -
当前位置:首页 → 问答吧 → 急求帮助,,内核模块如何发送数据到网络??

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

时间:2006-03-19

来源:互联网

想编一内核模块,基本功能是在netfilter下的一个钩子下注册一个处理函数,
此函数会把上层的包拦住,让后请求服务器作出应答,如果应答1,则该包放行
o则抛弃,
问题:如何在内核模块构建udp包发送到网络并等待回应。。。。。???
急呀!!

作者: macping   发布时间: 2006-03-19

效率太低了。怎么帖子发了一个晚上都没有回。。。。。
艾。。。。。。。。。。。。。。

作者: macping   发布时间: 2006-03-19

用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(一个内核发包模块)就明白了.

另: 人家回答你的问题是自愿的, 不要报怨.

作者: JBug   发布时间: 2006-03-28