当前位置: 技术问答>linux和unix
关于skb->data是只读的??
来源: 互联网 发布时间:2016-01-25
本文导语: 各位大虾请帮忙: 我看到很多资料都说sk_buff的data域是只读的,甚至还有函数:skb_make_writable().来让使它可读,再修改数据... 可是为什么,我直接对其中data域进行赋值却没有错误呢/?? 我想再确认一下:: skb->data[0] = 'a' ; ...
各位大虾请帮忙:
我看到很多资料都说sk_buff的data域是只读的,甚至还有函数:skb_make_writable().来让使它可读,再修改数据...
可是为什么,我直接对其中data域进行赋值却没有错误呢/??
我想再确认一下:: skb->data[0] = 'a' ; 倒底会不会引起错误??
谢谢>!>
我看到很多资料都说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指针。
我想再确认一下:: skb->data[0] = 'a' ; 倒底会不会引起错误??
这个目前我没有资格回答!我还没有做过。你这是要改变网卡上传过来的数据了。
这有危险。你要确定你的len和tail指针。