skb操作中的预留和对齐操作主要由skb_put、skb_push、skb_pull、skb_reserve完成;这几个函数的区别通过下面图(图片来自:深入理解linux网络技术内幕)可以清晰的区分;另外,需要注意的是skb_reserve只能操作空skb,即在分配了空间,尚未填充数据时调用; 以下为四个函数的源码分析; 1/**2* skb_put - add data to a...
return skb->data;} skb_pull: 将某个协议头从数据有效区移出 staticinlineunsignedchar*__skb_pull(structsk_buff *skb,unsignedintlen) { skb->len -= len;BUG_ON(skb->len < skb->data_len);returnskb->data += len; }staticinlineunsignedchar*skb_pull(structsk_buff *skb,unsignedintlen){return...
skb_pull()通过将data指针往下移动,在数据区首部忽略len字节长度的数据,通常用于接收到数据包后在各层间由下往上传递时,上层忽略下层的首部。调用skb_pull()前后,SKB结构变化如图3-18所示。 图3-18 skb_pull()示意 a) 调用前 b) 调用后
类型指派人员状态 审查 进行中(0/1人) 此Pull Request 暂不能合并,一些审核尚未通过 ci-robot关联了src-openeuler/kernel Issue I9REA22024年05月29日 展开全部操作日志 openeuler-ci-bot成员2024年05月29日 Hici-robot, welcome to the openEuler Community. ...
lgtmwas added to this pull request by:yuehaibing_planb. NOTE:If this pull request is not merged while all conditions are met, comment "/check-pr" to try again. 表态 openeuler-ci-bot移除了 ci_processing 标签2024年05月29日 openeuler-ci-bot成员2024年05月29日 ...
数据预留和对齐主要由skb_reserve()、skb_put()、skb_push()以及skb_pull()这几个函数来完成。 1.skb_reserve() skb_reserve()在数据缓存区头部预留一定的空间,通常被用来在数据缓存区中插入协议首部或者在某个边界上对齐。它并没有把数据移出或移入数据缓存区,而只是简单地更新了数据缓存区的两个指针-分别指...
skb_pull skb_push skb_put unsigned char *skb_pull(struct sk_buff *skb, int len) 该函数将 data 指针向数据区的末尾移动,减少了len 字段的长度。该函数可用于从接收到的数据头上移去数据或协议头。 unsigned char *skb_push(struct sk_buff *skb, int len)...
此Pull Request 需要通过一些审核项 类型指派人员状态 审查 进行中(0/1人) 此Pull Request 暂不能合并,一些审核尚未通过 评论6提交1文件1检查代码问题0 ci-robot关联了src-openeuler/kernel Issue I9REA22024年05月29日 展开全部操作日志 openeuler-ci-bot成员2024年05月29日 ...