sk_buffer结构分析
标签:
skblinux杂谈 |
分类: 系统结构 |
关于skb结构的文章有很多,这几天涉及到这方面的内容,就稍微总结了一下。其中主要是对share_info部分进行简单的总结,因为发现网上这部分内容还不是很清楚。
这是skb数据结构的定义,因为我是在Xen的场景下对该结构体进行研究,所以代码中可能有关于Xen的特殊定义,可以忽略掉。其中对于部分变量我进行了简单的解释说明。
skb结构:
struct sk_buff {
struct
sk_buff
*next;
//下一个skb地址
struct
sk_buff
*prev;
//前一个skb地址链表
struct
sock
*sk;
//此报文所属的sock结构,此值在本机发出的报文中有效,从网络设备收到的报文此值为空。
struct
skb_timeval
tstamp;
//时间戳
struct
net_device
*dev;
//收到报文的网络设备
struct
net_device
*input_dev;
//输入设备,应该是指skbuff里面数据的输入设备吧
union
{
struct
tcphdr
*th;
struct
udphdr
*uh;
struct
icmphdr
*icmph;
struct
igmphdr
*igmph;
struct
iphdr
*ipiph;
struct
ipv6hdr
*ipv6h;
unsigned
char
*raw;
}
h;
//各种头文件指针,主要是传输层
union
{
struct
iphdr
*iph;
struct
ipv6hdr
这是skb数据结构的定义,因为我是在Xen的场景下对该结构体进行研究,所以代码中可能有关于Xen的特殊定义,可以忽略掉。其中对于部分变量我进行了简单的解释说明。
skb结构:
struct sk_buff {

加载中…