skb_headlen() //即大哥长度,线性长度。和skb_headroom()不一样,这个是只头部空间剩余长度。 skb_pagelen() //大哥和小弟的总和,即线性数据长度和页面碎片的长度,不包括分片skb队列长度。 1. 2. 3. 4.
skb->len 是data长度,包含所带分片长度 skb->data_len 是paged data长度, 即分片数据的长度,也就是skb_shared_info中的长度 skb_headlen skb->len - skb->data_len 是当前片(unpaged data)长度
结构体sk_buff是Linux内核网络子系统的一个基本结构体,关于它的长度有很多定义和操作,非常容易弄混,这里给出一个简单的说明。 下面这幅图是《深入理解Linux网络技术内幕》里面的图,一个skb用于存储一个报文,如果一个报文特别大的话,线性存储区放不下就需要多个skb来存储,这就是下面frag_list的作用,保存连续的skb,...