新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于嵌入式Linux的3G無線視頻終端的設計與實現

        基于嵌入式Linux的3G無線視頻終端的設計與實現

        作者: 時間:2011-08-01 來源:網絡 收藏

        內核netfilter結構在/usr/src/inelude/linux/netfilter.h中定義,類似如下:
        c.jpg
        參數是:
        list
        Netfilter本身是一個鉤子鏈;它指向netfilter鉤子的頭部,通常設置為{NULL,NULL}。
        hook
        該函數在數據包碰到鉤子點時被調用。該函數與前面描述的函數相同,它必須返回NF_ACCEPT、NF_DROP或NF_QUEUE。如果返回NF_ACCEPT,則下一個鉤子將被附加到將要調用的點。如果返回NF_DROP,則數據包被丟棄。如果返回NF_QUEUE,則對數據包進行排隊。sK_buff指針被傳遞到該函數中,并用數據包信息如IP報頭、TCP報頭等進行填充,可以使用sk_buff結構指針來操作或刪除數據包(要刪除數據包,只需將skb指針設置為空即可)。
        pf
        協議簇;例如,適用于IPv4的PF_INET。
        hooknum
        鉤子的掛載點,由于本系統不需要在本地對數據包進行任何處理,因此選擇的掛在點為NF_IP_PRE_ROUTING,在對數據包進行正確性校驗后就調用鉤子函數處理數據包。Priority表明鉤子的優先級,在本系統中采用高優先級處理NF_IP_PRI_FIRST。
        內核數據處理的關鍵是鉤子函數的編寫,此函數規定了數據包在到達時需要進行的處理過程。
        鉤子函數框架如下:
        d.jpg
        設定好特定的鉤子函數之后,調用函數
        int nf_register_hook(struct nf_hook_ops*req);
        將鉤子函數注冊至內核。一旦該結構注冊到內核中,將調用這里定義的函數來處理數據包。
        使用函數
        void nf_unregister_hook(struct nf_hook_ops*req);
        可以將已經注冊入內核的鉤子函數取消,此時,接收到數據包將按照內核的默認規則來進行處理。流程如圖3所示。

        本文引用地址:http://www.104case.com/article/150415.htm

        e.jpg

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 万宁市| 南丰县| 嘉定区| 沙雅县| 扶绥县| 桐乡市| 保山市| 府谷县| 板桥市| 蛟河市| 福鼎市| 嘉荫县| 丰城市| 枞阳县| 周口市| 开封市| 通州市| 农安县| 泰宁县| 响水县| 景东| 安顺市| 济源市| 曲阳县| 金川县| 响水县| 阿坝| 许昌县| 正宁县| 福清市| 文山县| 伊金霍洛旗| 祁阳县| 拜城县| 太仆寺旗| 鄂州市| 仁化县| 凌云县| 三都| 扎赉特旗| 乐平市|