2

我正在尝试在 Linux 内核中实现 QUIC 协议。由于 QUIC 在 UDP 之上工作,我一直使用 UDP 代码作为学习基础。现在我想为 QUIC 协议注册协议处理程序,但我不明白如何以及在哪里做,因为我在 UDP 源文件中找不到相关的代码片段。我在 Internet 上进行了搜索,但所有示例都讨论了为 IPv4 注册处理程序,而我在 UDP(或 TCP)中找不到类似的实现。有人可以指出如何注册 UDP 协议处理程序吗?这将帮助我用 QUIC 做同样的事情。

4

1 回答 1

1

UDP 协议在inet_init()函数中注册(在net/ipv4/af_inet.c文件中):

if (inet_add_protocol(&udp_protocol, IPPROTO_UDP) < 0)
    pr_crit("%s: Cannot add UDP protocol\n", __func__);

UDP协议处理程序是结构中的.handler字段udp_protocol

static const struct net_protocol udp_protocol = {
    .early_demux =  udp_v4_early_demux,
    .handler =      udp_rcv,
    .err_handler =  udp_err,
    .no_policy =    1,
    .netns_ok =     1,
};
于 2016-06-06T15:41:17.463 回答