網卡接收的幀將由驅動程序處理,然後由Linux內核傳遞到協議棧的上層。如何防止內核傳遞數據包到網絡層?
有沒有一種簡單的方法來防止內核傳遞數據包到網絡層?這樣我就可以從數據鏈路層接收幀並自行處理所有數據包(也許應用層程序將被重寫)?
我認爲重新編譯內核是必要的,應該通過修改softirq中的代碼還是像netif_rx或每個cpu的列表隊列中的函數來完成代碼?
事實上,一些同學和我正試圖在用戶空間中實現一個簡化版的TCP/IP協議棧來進行練習,而我們剛剛開始。我正在閱讀一些書籍,如UNP,APUE2,TCP/IP插圖v1,v2,Linux網絡架構,linux源代碼等等。我還有其他一些問題,我是否需要發佈另一個問題?
你想做什麼?改變內核可能並不那麼容易。 – prehistoricpenguin
你真的應該描述你試圖解決的問題。下面的答案之一表明netfilter。另一種選擇可能是使用pcap庫直接獲取原始數據包。直到我們知道你真正想要解決什麼問題時,我們纔會知道你的正確答案。 – chetan
我編輯了我的問題,真的期待一些進一步的建議。 –