hello, 这个函数主要用来tcp发送, 如果我主动构造一个报文比如icmp, 调用这个接口可以吗?? [code] struct icmphdr *icmp; int len = 14 + 20 + sizeof(*icmp) + sizeof(*tkip); struct sk_buff *skb; skb = alloc_skb(len, GFP_KERNEL); if (unlikely(!skb)) return -ENOMEM; skb_reserve(skb, 14 + 20); icmp = (struct icmphdr *)skb_put(skb, len...
by Arthur_ - Linux环境编程 - 2009-07-10 01:06:32 阅读(2956) 回复(5)
从前面的分析可以看出,用户层以前能够进行报文的接收,修改重注入,丢弃等,下面就着重分析报文在netfilter中的流程: 1.加密包-prerouting接收,return NF_REPEAT; 2.本机发出去的包-localout接收,return NF_REPEAT; --->[1]--->[ROUTE]--->[3]--->[4]---> | ^ | | | [ROUTE] v | ...
nfnetlink和ip_queue 本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严 禁用于任何商业用途。 msn: [email=yfydz_no1@hotmail.com]yfydz_no1@hotmail.com[/email] 来源: http://yfydz.cublog.cn 1. 前言 netlink是linux中实现内核与用户空间通信的一种方法,数据以类似网络数据包的形式在两者间传输, 这和以前所介绍的/proc,ioctl和setsockopt方式是不同的,另外一个区别是以前...
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。 msn: [email=yfydz_no1@hotmail.com]yfydz_no1@hotmail.com[/email] 来源: http://yfydz.cublog.cn 1. 前言 在2.4内核中出现了ip_queue,用于将数据包从内核空间传递到用户空间,其不足之处是只能有一个应用程序接收内核数据。到了2.6.14以后,新增了nfnetlink_queue,理论上可最大可支持65536个应用程序接口...
#include
请问钩子函数和ip_queue的关系是什么?当包通过网络接口传输到内核空间时,它是否只是被传输到底三层,即ip层下;当包通过ip_queue传输给用户空间后,包是传输给用户空间的哪一层呢,是否是传输层呢,然后交互到应用层?谢谢!!
本文分析ip_queue的内核态源码。文中如有任何疏漏和差错,欢迎各位朋友指正。 本文欢迎自由转载,但请标明出处,并保证本文的完整性。 作者:Godbach Blog:http://Godbach.cublog.cn 日期:2010/01/04 本系列的前两篇文章如下: 1. Linux内核ip queue机制的分析(一)——用户态接收数据包 http://blog.chinaunix.net/u/33048/showart_1678213.html 2. Linux内核ip queue机制的分析(二)——用户态处理并回传数据...
本帖最后由 jiufei19 于 2014-03-10 18:53 编辑 内核版本v2.6.23,在阅读ip报文分段重组函数ip_frag_queue时,发现以前没有太仔细阅读如下红色代码,现在回头看时,不懂这段代码适应什么样的场景 static void ip_frag_queue(struct ipq *qp, struct sk_buff *skb) { ... if (!(ipCB(skb)->flags & ipSKB_FRAG_COMPLETE) && unlikely(ip_frag_too_far(qp)) && unlikely(ip_frag_reinit(qp))) { ipq...
请教一下,我用iptables规则iptables -A INPUT -p icmp -j queue,内核收到icmp数据包之后,就将数据返回到用户态,编写用户态程序,接收内核传过来的数据,但是就是收不到内核传过来的数据,请问是什么原因?
小弟在进行零拷贝的学习,通过ip_queue_xmit发送数据包的时候发现,如果发送速率很快的情况下,会丢包。而且没有返回值。不知道有没有哪位大大遇到过类似状况。希望有人告知如何解决。