我无法理解此代码中的 .type 和 .func。
static struct packet_type ip_packet_type __read_mostly = {
.type = cpu_to_be16(ETH_P_IP),
.func = ip_rcv,};
参考文献:
净/ipv4/af_inet.c 1751 行
答案1
这将 IP 协议处理程序 ( ip_rcv
) 与以太网 IP 类型 ( ETH_P_IP
== 0x0800
) 关联。
init_inet
它被调用的代码下面的函数使用dev_add_pack()
添加ip_rcv
为以太网 IP 数据包的处理程序。