在Linux内核中开发自定义协议族需要深入理解网络协议栈的分层模型。net_device_ops
、proto_ops
和net_proto_family
是三个关键结构体,分别作用于不同的层次。本文将详细解析它们的作用、交互关系及实现方法,并提供一个完整的开发框架。
一、核心结构体的作用与层级关系
-
struct net_device_ops
-
层级:网络设备驱动层(数据链路层)
-
职责:定义物理/虚拟网络设备的操作函数,如初始化、数据包发送(
ndo_start_xmit
)、接收中断处理等。 -
示例场景:当内核需要将IP层的SKB(Socket Buffer)发送到网卡时,最终会调用
ndo_start_xmit
。 -
代码示例:
static const struct net_device_ops mydev_ops = { .ndo_open = m
-