- 论坛徽章:
- 6
|
回复 1# lawrence2013
我需要在IP协议头和传输层协议头之间加一个新的协议头,我用skb_copy_expand来扩展skb。但似乎用了memcpy以后,tcp的payload发送就有问题了,对端能收到数据包,但payload接收不正确的。但其他协议,例如UDP和ICMP,通讯都正常。只要不执行memcpy操作,对端接收就没问题。请问我改如何解决这个问题?我明白skb_copy_expand本身就执行了相关的copy操作,但我希望把内容调整到所希望的位置,似乎只能再执行memcpy?我调用skb_copy_expand的相关代码如下。谢谢!
tskb = skb_copy_expand(nskb, skb_headroom(nskb), skb_tailroom(nskb) + new_len, GFP_ATOMIC);
if(tskb == NULL){
printk("Expension error\n");
}
memcpy(tskb->data, nskb->data, iph_len);
memcpy(tskb->data + iph_len + new_len, nskb->data + iph_len, nskb->len - iph_len);
Maybe need to check skb_put() function.
|
|