深入理解Linux内核网络技术内幕之关键数据结构--skbuff

1、 skb->users 与skb->dataref的区别
skb->users:当引用数目增加时,该值和skb->dataref都会增加
skb->dataref:当skb被clone时,只有skb->dataref会增加,而被clone的skb的skb->users=1
2、 pskb->copy与skb->copy
pskb->copy:只拷贝skb数据结构,不拷贝缓冲区内容
skb->copy :拷贝skb数据结构也会拷贝缓冲区内容
3、 skb的操作函数:reverse,put,push,pull,实际上只是修改了指针,并未真正的添加或者删除数据
put: 移动 skb->tail, skb->tail + n, 一般作用是添加数据
reverse: 这个函数移动了skb->data 和skb->tail指针,主要的作用是强制对齐,经常在分配完skb后会立刻被调用
push: 移动 skb->data指针, skb->data - n, 一般作用是 添加协议首部
pull: 移动 skb->data指针, skb->data + n, 一般作用是 删除协议首部
4、 skb 的链表操作函数
skb_queue_head_init: 初始化双向链表
skb_queue_head, skb_queue_tail: 把缓冲区分别添加到队列的头和尾
skb_dequeue, skb_dequeue_tail:把一个元素从队列的首部或者尾部删除
skb_queue_purge: 把队列变为空队列
skb_queue_walk:依次循环运行队列中的每个元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值