日期:2014-05-16  浏览次数:20883 次

关于skb->data是只读的??
各位大虾请帮忙:

我看到很多资料都说sk_buff的data域是只读的,甚至还有函数:skb_make_writable().来让使它可读,再修改数据...

可是为什么,我直接对其中data域进行赋值却没有错误呢/??

我想再确认一下::   skb-> data[0]   =   'a '   ;   倒底会不会引起错误??

谢谢> !>

------解决方案--------------------
确实是只读的,我上次已经做过实验了,不信你可以在没有将原始的skb拷贝给其他的ks_buff结构之前试试这个函数skb_pull();如果是在内核区编程的话保证你死机,这个我已经深有体会了。不过好像udp的data域是可以改变的。可能这正好符合了tcp保证准确性,而udp考虑传输效率。

我想再确认一下:: skb-> data[0] = 'a ' ; 倒底会不会引起错误??

这个目前我没有资格回答!我还没有做过。你这是要改变网卡上传过来的数据了。
这有危险。你要确定你的len和tail指针。