一。skbuff的结构图如下
二.Basic functions for sk_buff
- skb_headroom(), skb_tailroom()
- Prototype / Description
- bytes at buffer head
- bytes at buffer
int skb_headroom(const struct sk_buff *skb);
int skb_tailroom(const struct sk_buff *skb);
Image
skb_reserve()- Prototype
void skb_reserve(struct sk_buff *skb, unsigned int len);
Description- adjust headroom Image
skb_push()- Prototype
unsigned char *skb_push(struct sk_buff *skb, unsigned int len);
Description- add data to the start of a buffer Image
skb_pull()- Prototype
unsigned char *skb_pull(struct sk_buff *skb, unsigned int len);
Description- remove data from the start of a buffer Image
skb_put()- Prototype
unsigned char *skb_put(struct sk_buff *skb, unsigned int len);
Description- add data to a buffer Image
skb_trim()void skb_trim(struct sk_buff *skb, unsigned int len);
Description- remove end from a buffer Image
- get queue length
- get pointer to the head element
- get pointer to the tail element
- Image
-
- queue a buffer at the list ta
- Prototype
__u32 skb_queue_len(const struct sk_buff_head *list_);
struct sk_buff *skb_peek(struct sk_buff_head *list);
struct sk_buff *skb_peek_tail(struct sk_buff_head *list);
void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk);
Description queue a buffer at the list head Imagevoid skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk);
DescriptionImage
- Prototype
struct sk_buff *skb_dequeue(struct sk_buff_head *list);
Description- remove from the head of the queue Image
- skb_dequeue()
- Prototype
struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list);
Description- remove from the tail of the queue Image
- skb_dequeue_tail()
- Prototype
void skb_insert(struct sk_buff *old, struct sk_buff *newsk);
Description- insert a buffer Image
- skb_insert()
- Prototype
void skb_append(struct sk_buff *old, struct sk_buff *newsk);
Description- append a buffer Image
- skb_append()
void skb_unlink(struct sk_buff *skb);
Description remove a buffer from a listImage