udp头在哪里添加到内核代码中的数据

时间:2016-06-21 14:30:20

标签: linux-kernel network-programming udp

我在内核中编写了一个新的基于UDP的协议,所以我只是分叉了UDP代码以获得先机。我需要在头结构中除了现有结构之外的一些新字段。我为此创建了一个新结构,但是我很遗憾这个结构初始化的位置是在udp_sendmsg函数(我从udp代码中复制)发送udp帧的同时预先添加到数据中。

要清楚,我只想更改udp_sendmsg()在数据之前放置的标头。所以它应该足以知道内核代码中头部和数据的组合位置。

谢谢。

1 个答案:

答案 0 :(得分:0)

对于IPv4,一个好的切入点是net/ipv4/udp.c

event

要特别注意static int udp_send_skb(struct sk_buff *skb, struct flowi4 *fl4) { [...] * Create a UDP header */ uh = udp_hdr(skb); uh->source = inet->inet_sport; uh->dest = fl4->fl4_dport; uh->len = htons(len); uh->check = 0; ,它只会将一个记忆位置返回到skbuff。

udp_hdr