當與內核模塊代碼的sk_buff處理,我看到很多代碼示例使用兩種sk_buff上的ip_hdr()是否可以保證正常工作?
(struct iphdr *)skb_network_header(skb) //skb is an instance of (struct sk_buff*)
或功能ip_hdr(),這是真的一樣(調用skb_network_header和鑄造)。這安全嗎?如果我們對sk_buff來自哪裏沒有任何假設,是否可以通過檢查來確保網絡協議確實是IP?
編輯:這可能是由於可以有一個sk_buff唯一可能的網絡協議是IP,但我仍然希望看到一個「證明」或解釋。例如,如果我在Linux內核中實現自己的協議,並且網絡協議頭可能是其他內容?我如何確保網絡傳輸協議確實是IP?