ipif_receive
p_if->f_ipreceivefilter
filterdrecv
return( (ifdata->receive->filterentry)( ifdata->receive, packet ) );
fwinte***ce::addfwinte***ce
alerror = securityaddinte***ce(fw_context, &cwif);
sendwaitmessage( &msg, msg_n_security_inte***ce, get_security_qid() );
atmoscwmessagehandler
alcwaddinte***ce
alcwipfilterregistration
alcwinitializeinte***cetotcpip
alcwipfilterregistration
filterdata.entry = alcwipfilter;
alcwinte***cefilter
alcwipinputfilteronexternalinte***ce
alcwipoutputfilteronexternalinte***ce
alcwipinputprocessorforexternal
/*************nat*********************/
alcsfensmproces***ternalpacket /*
* translate the destination ip address and destination port number */
alcsfetranslateipaddress
以從外網傳送到路由器的ip包為例
ipif.c 中的ipif_receive()呼叫掛在該介面上的鉤子函式p_if->f_ipreceivefilter,其實就是呼叫了filterd.c中的filterdrecv()接收過濾函式
filterdrecv()函式呼叫cw_ipfilter.c中的alcwinte***cefilter(),埠過濾函式,確定ip包的流向和埠,呼叫對應介面的過濾寒暑,如,從外網發往路由的ip包,就呼叫alcwipinputfilteronexternalinte***ce(),由wan口發出的包就呼叫alcwipoutputfilteronexternalinte***ce()
alcwinte***cefilter()呼叫alcwipinputfilteronexternalinte***ce(),函式功能顧名思義,其中,會進行會話(session)管理,就像是linux中的連線跟蹤功能
再呼叫alcwipinputprocessorforexternal(),這個是真正對ip包進行處理的函式,先進行firewall規則的過濾,然後會呼叫alcsfensmprocessinternalpacket()對ip包做nat
alcsfensmprocessinternalpacket()對ip做nat的函式,呼叫alcsfetranslateipaddress(),來實現nat
在alcsfetranslateipaddress()中,會根據ip包的流向、埠的nat規則、以及ip包所屬的對話(session)來決定怎樣對它進行snat或者dnat。(值得注意的是:alcsfetranslateipaddress()只能對輸入的包進行dnat,或者對輸出的包進行snat,而不能同事進行兩種轉換)
工作筆記 小結1
如果timer定時器要每隔間隔的時間執行,實現ticker的效果,使用 func t timer reset d duration bool timer可以reset 定時器ticker 配合for迴圈為長久死迴圈定時器,開協程同時和系統休眠為定時迴圈用 package main import fm...
SAP工作筆記
sap 筆記整理 sap筆記整理 1一 abap 開發部分 21 常用tcode se80 se38 se11 se10 se93 22 se11 是abap 字典,可以查詢資料庫欄位和儲存資訊。33 se10 用來查詢開發過的程式相關資訊。34 se93 用來發布程式,給程式乙個tcode.3 5...
工作筆記(二)
對 android系統源 情景分析 書中例子 在裝置驅動程式中 開啟裝置函式比如 freg open struct inode inode,sruct file filp 它的作用實質上就是將file這個檔案結構體中的空指標成員變數private data賦上你所要訪問的裝置的結構體的位址而已。以便...