Network programming 如何在skb中放置完整的结构

Network programming 如何在skb中放置完整的结构,network-programming,linux-kernel,kernel-module,kernel,Network Programming,Linux Kernel,Kernel Module,Kernel,我正在开发一个内核模块,在这个模块中,我想通过skb传输一个结构。我可以将struct的每个数据元素放在skb中;然而,我的问题是:我能一次将完整的结构放入skb并发送出去吗?您只需获得一个指向整个结构的指针,然后将内容存储到您的缓冲区中即可 /* skb_put returns a pointer to the beginning of the data area in the skb*/ unsigned char *skb_data = skb_put(skb, size_of_data)

我正在开发一个内核模块,在这个模块中,我想通过skb传输一个结构。我可以将struct的每个数据元素放在skb中;然而,我的问题是:我能一次将完整的结构放入skb并发送出去吗?

您只需获得一个指向整个结构的指针,然后将内容存储到您的缓冲区中即可

/* skb_put returns a pointer to the beginning of the data area in the skb*/
unsigned char *skb_data = skb_put(skb, size_of_data);
unsigned char *your_data = (unsigned char *) your_struct;
memcpy(skb_data, your_data, size_of_data);
当然,要确保skb有足够的数据空间,您可以使用
skb_tailroom
功能