2 6 18核心ip hdr的問題

2021-05-04 15:53:50 字數 1057 閱讀 7949

今天在centos的虛擬機器下嘗試以前寫的核心程式《2.6核心netfilter包截獲 》,insmod 時竟然出錯。

insmod: error inserting 'simpfilter.ko': -1 unknown symbol in module

於是檢視日誌: tail /var/log/messages ,有一下字樣:

sep  9 16:06:37 vm04 kernel: simpfilter: unknown symbol ip_hdr

在http://lxr.linux.no/上查詢:「ip_hdr」,結果如下:

code search: ip_hdr

function

include/linux/ip.h, line 110

[usage... ]

明明有嘛,再在虛擬機器下查詢: /usr/src/linux/include/linux/ip.h中,並不存在函式ip_hdr的定義。奇怪了,虛擬機器的核心版本是2.6的啊!

再細看,原來虛擬機器的版本是

2.6.18-128.el5xen

而剛才在http://lxr.linux.no/查詢用的核心版本是2.6.30.6。再把各個版本都查了一下,發現這個函式是從2.6.22 版本才有的。

那麼,在《2.6核心netfilter包截獲 》中的描述:

2.6版核心的網路協議棧較2.4版有所改變,比如sk_buff結構中去掉了nh聯合體的定義。在2.6核心中我們如果要得到ip資料報的源節點位址, 需要使用const struct iphdr *iph = ip_hdr(skb); ip_hdr 的定義在linux/ip.h中定義。下面通過乙個簡單的例子介紹在2.6核心中如何在netfilter上掛載hook函式實現資料報的過濾。

就不是太準確了!

下面準備更新核心版本了2.6.30 ,哈哈!

Linux 2 6 18核心編譯

4 刪除舊的軟體,方法如下 rpm e 舊的軟體名,這裡是軟體名,不是軟體包,如mkinitrd 4.1.18 2 nodeps cd usr src 進入到 usr src目錄下,如果已經在 usr src目錄下,可不執行該命令 rm rf linux 刪除linux資料夾。值得一提的是,如果核心...

公升級linux2 4 20核心到2 6 18

本文記錄了我在winxp下的vmware5.5.3虛擬機器中公升級linux2.4.20核心到2.6.18的過程。飄揚的這篇文章寫的很詳細,只是個別地方還有瑕疵,本文主要就是以該文為藍本,修正了原文中的一些錯誤,並加入了編譯圖示的詳細說明。2 我自己以前寫的核心編譯過程筆記。一 安裝linux系統並...

虛擬機器下公升級LINUX核心到2 6 18

linux核心的編譯我已經卡了好久了,因為比較懶,所以一直拖著,最近乙個朋友離開公司了,生活突然變的單調了好多,手頭的事又不多,終於在今天把這件入門的 大事 做完了。但都是照著flyfox315所寫的文件做的,所以還有很多東西不明白 中間也遇到了一些問題,也都順利解決了。呵呵,心情還不錯!參考文章 ...