我有一個網絡設備,其中以太網交換機芯片的端口連接到CPU的網絡控制器。交換芯片將來自其他端口的數據包轉發到CPU端口,並在包含諸如入口端口等信息的特殊報頭(在MAC報頭之前)等。Linux用戶空間L2控制協議
我可以在網絡控制器驅動程序中接收數據包時去掉報頭,因此Linux網絡堆棧可以以正常方式與交換機通信。然而,我的目標是將特殊頭文件中的一些信息傳遞給用戶空間第2層控制協議套件。
在我的情況下,第2層控制協議通常會使用原始套接字來接收其控制幀。例如,生成樹協議必須能夠確定數據包來自哪個交換機端口。
另外,諸如http,telnet服務器等服務應該能夠使用相同的網絡接口。
是否有任何Linux內置的手段將這些信息從驅動程序傳遞到用戶空間網絡服務器/客戶端? 如果沒有,關於實施這個的任何建議?
我可以實現一個簡單的ioctl調用來查詢驅動程序關於讀取的最後一個數據包的頭信息。但是,不保證該設備未被recv()
和ioctl()
之間的其他進程使用。
聽起來很有希望,我會試試看:) – LRipa