我在内核中编写了一个新的基于UDP的协议,所以我只是分叉了UDP代码以获得先机。我需要在头结构中除了现有结构之外的一些新字段。我为此创建了一个新结构,但是我很遗憾这个结构初始化的位置是在udp_sendmsg函数(我从udp代码中复制)发送udp帧的同时预先添加到数据中。
要清楚,我只想更改udp_sendmsg()在数据之前放置的标头。所以它应该足以知道内核代码中头部和数据的组合位置。
谢谢。
答案 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