当前位置:  技术问答>linux和unix

关于skb的问题

    来源: 互联网  发布时间:2016-06-21

    本文导语:  有个问题,我在NF_IP_POST_ROUTING这个钩子点写了个模块,要在原有基础上加上自己的一段数据。如果tailroom不足,我会重新创建一个sk_buff结果,代码如下: struct sk_buff* new_skb; new_skb = alloc_skb(skb_headroom(*pskb) + (*pskb)->l...

有个问题,我在NF_IP_POST_ROUTING这个钩子点写了个模块,要在原有基础上加上自己的一段数据。如果tailroom不足,我会重新创建一个sk_buff结果,代码如下:
struct sk_buff* new_skb;
new_skb = alloc_skb(skb_headroom(*pskb) + (*pskb)->len + SIZE + sizeof(ch) , GFP_ATOMIC);
skb_reserve(new_skb,skb_headroom(*pskb));
if(!new_skb){
printk("Skb allocation is failed!n");
return NF_ACCEPT;
}
memcpy(skb_put(new_skb, (*pskb)->len),(*pskb)->data,(*pskb)->len);
kfree_skb((*pskb));
*pskb = new_skb;

*pskb 指向的是原来的一个sk_buff包。
SIZE 是我要传输的数据大小。
我这么创建以后,内核无法正常运行了,会发出OOPS信息。我觉得是我新创建的sk_buff结构没有保留原来结构的某些信息所导致的,请问哪些sk_buff的信息是我新结构应该保留的呢?

|
你的第一条语句是什么意思?
不是要增加size的数据吗?
我没记错的话,skb_trim这个函数应该是减小尾部空间的吧?

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • skb_copy和skb_clone
  • 关于skb->data是只读的??
  • ip_rcv 中用skb_share_check是什么目的?
  • 关于skb的构造,高手能否谈谈看法?
  • skb中有个dst,注释是FIXME。这是什么意思啊!
  • 求skb开发的建议!
  • 各位哥哥姐姐:如何zip压缩算法来压缩SKB里面的数据部分
  • 发送IP包时,skb->dev是在哪里被设置的
  • 本来可以修改skb里tcp数据的,突然不能修改了,为什么?
  • struct sock *sk和 struct sk_buff *skb之间的关系
  • netif_rx(skb)成功,但无法收到数据包是怎么回事呀
  • ((*(skb->data)) & 0x0f) * 4是什么意思?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3