在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
-