亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3653 | 回復(fù): 6
打印 上一主題 下一主題

[內(nèi)核入門] 注冊了hook鉤子為什么還要用NF_HOOK調(diào)用一次呢? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-08-17 11:27 |只看該作者 |倒序瀏覽
  我自己做實驗,在nf_register_hooks將自己定義的、包含了hook函數(shù),hook點的nf_hook_ops結(jié)構(gòu)體注冊到系統(tǒng)中后,一旦有符合條件的包出現(xiàn),系統(tǒng)都會打印出相應(yīng)的語句。

  但是在看源碼的時候,經(jīng)常看到有如下的調(diào)用方法:       
    return NF_HOOK(PF_INET, NF_INET_PRE_ROUTING, skb, dev, NULL, ip_rcv_finish);

  很不理解。難道 ip_rcv_finish 沒有用 nf_register_hooks 注冊進(jìn)系統(tǒng)嗎?
  如果注冊了,應(yīng)該就直接到了hook點,該函數(shù)就會來檢查一次數(shù)據(jù)包,不用再用NF_HOOK再調(diào)用一次?

  多謝各位大俠賜教!

論壇徽章:
36
IT運維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
2 [報告]
發(fā)表于 2012-08-17 13:22 |只看該作者
回復(fù) 1# jiahehao01

ip_rcv_finish 是數(shù)據(jù)包必經(jīng)的處理函數(shù)。有 hook 函數(shù)了就先走 hook,沒有的話,就直接到 ip_rcv_finish 了

   

論壇徽章:
0
3 [報告]
發(fā)表于 2012-08-17 13:44 |只看該作者
Godbach 發(fā)表于 2012-08-17 13:22
回復(fù) 1# jiahehao01

ip_rcv_finish 是數(shù)據(jù)包必經(jīng)的處理函數(shù)。有 hook 函數(shù)了就先走 hook,沒有的話,就 ...


  那如果沒有NF_HOOK這一句,也是象版主說的那個效果啊。到了NF_INET_PRE_ROUTING點,就會把這個點上掛著的hook函數(shù)全都過一遍。
  其中自然會包括ip_rcv_finish 函數(shù)。
  我是覺得NF_HOOK這句很多余啊。

論壇徽章:
36
IT運維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
4 [報告]
發(fā)表于 2012-08-17 14:46 |只看該作者
回復(fù) 3# jiahehao01
return 的那一句是必須的。
如果你的內(nèi)核配置文件沒有配置 Netfilter 的話,NF_HOOK 的定義應(yīng)該是下面這樣子的
  1. #else /* !CONFIG_NETFILTER */
  2. #define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb)
復(fù)制代碼
這樣就相當(dāng)于直接調(diào)用 ip_rcv_finish 了


   

論壇徽章:
0
5 [報告]
發(fā)表于 2012-08-17 15:42 |只看該作者
    版主,我覺得你上面的說法有點問題。
 我做了一次全局搜索,發(fā)現(xiàn)ip_rcv_finish函數(shù)只有兩個地方有引用,一個是聲明的時候,一個是NF_HOOK。
 這就說明,它根本沒有用nf_register_hooks將自己注冊到系統(tǒng)中去。
 那么,到了NF_INET_PRE_ROUTING這個hook點,ip_rcv_finish函數(shù)是不會被調(diào)用的。所以在上文是用NF_HOOK做了一次顯示調(diào)用。

 那這種NF_HOOK調(diào)用和直接調(diào)用有啥區(qū)別呢?我想大概是用NF_HOOK調(diào)用,能利用linux已有的一些框架的功能吧。。。。。。

論壇徽章:
36
IT運維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
6 [報告]
發(fā)表于 2012-08-17 23:02 |只看該作者
jiahehao01 發(fā)表于 2012-08-17 15:42
版主,我覺得你上面的說法有點問題。
 我做了一次全局搜索,發(fā)現(xiàn)ip_rcv_finish函數(shù)只有兩個地方有引用 ...

建議你深入看一下 NF_HOOK 的實現(xiàn),這是基本的 C 語言的知識。

論壇徽章:
0
7 [報告]
發(fā)表于 2012-08-20 09:48 |只看該作者
#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb)

   很慚愧,我開始認(rèn)為是這一個函數(shù)指針。。。。但又覺得這不符合正常的函數(shù)指針的聲明方式。
 正常的應(yīng)該是這樣:
  typedef int (*fun_ptr)(int,int);

 所以,我對NF_HOOK的定義并不理解。。。。。請各位兄臺賜教。
 學(xué)藝不精,讓大家見笑了。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP