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

时间:2013-07-06 21:29:53

标签: network-programming linux-kernel kernel-module kernel

我正在研究一个内核模块,我希望通过skb传输一个结构。我可以通过将struct的每个数据元素放在skb中来实现;但是我的问题是:我可以一次性将整个结构放入skb中并将其发送出去吗?

1 个答案:

答案 0 :(得分:1)

您只需获取指向整个结构的指针,然后将内容存储到缓冲区。

/* 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函数执行此操作。