2.6.18核心ip_hdr的問題

來源:互聯網
上載者:User

 

今天在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
,哈哈!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.