skb-4

来源:互联网 发布:广州525孕妇摄影淘宝网 编辑:程序博客网 时间:2024/04/30 14:53
unsigned char *data = skb_put(skb, user_data_len);int err = 0;skb->csum = csum_and_copy_from_user(user_pointer, data,    user_data_len, 0, &err);if (err)goto user_fault;


This is what a new SKB looks like right after the user datais added.

skb_put() advances 'skb->tail' by the specified number ofbytes, it also increments 'skb->len' by that number of bytes as well.This routine must not be called on a SKB that has any paged data.You must also be sure that there is enough tail room in the SKB forthe amount of bytes you are trying to put. Both of these conditionsare checked for byskb_put() and an assertion failure willtrigger if either rule is violated.

The computed checksum is remembered in 'skb->csum'. Now, it's time tobuild the protocol headers. We'll build a UDP header, then one forIPV4.

Layout of SKB after skb_reserve()
0 0
原创粉丝点击