suricata初始化流程

2021-10-02 19:41:48 字數 1593 閱讀 6429

suricata是一款高效能的ids、ips和網路安全監測引擎。採用多執行緒模式,利用多核優勢。支援多種協議:例如ip4、ip6、tcp、udp、http、ftp、pop3等協議。可以動態載入過濾規則。

(1)呼叫runmoderegisterrunmodes函式註冊執行模式

runmodeidspcapregister();      // ids+pcap

runmodefilepcapregister();     // file+pcap

runmodeidspfringregister();    // ids+pfring

runmodeipsipfwregister();      // ips+ipfw

runmodeipsnfqregister();       // ips+nfq

runmodeerffileregister();      // erf+file

runmodeerfdagregister();       // erf+dag

runmodenapatechregister();     // napatech

runmodeidsafpregister();       // ids+afp

runmodeunixsocketregister();   // unixsocket

每種執行模式呼叫runmoderegisternewrunmode註冊,

runmoderegisternewrunmode(runmode_pcap_dev, "single",

"single threaded pcap live mode",

runmodeidspcapsingle);

執行模式名字、執行模式執行函式、執行模式描述儲存到全域性陣列runmodes。

(2)呼叫registerallmodules註冊各模組

/* commanders */

tmmoduleunixmanagerregister();

.......

模組儲存到tmmodule tmm_modules[tmm_size];

typedef struct tmmodule_ tmmodule;

(3)模組初始化,呼叫tmmoduleruninit()執行tmmodule tmm_modules[tmm_size]中的全域性初始化模組函式。

(4)runmodedispatch()函式呼叫,根據配置獲取執行模式,然後根據執行模式執行全域性陣列runmodes中的執行模式執行函式。

(5)執行模式執行函式

例如:runmodefilepcapsingle()

通用模組初始化runmodeinitialize

建立tv例項tmthreadcreatepackethandler

從tmm_modules中獲得模組tmmodulegetbyname

插入槽slot

tmthreadspawn真正建立執行緒函式

執行模式註冊,設定執行函式

所有模組註冊,設定模組相關函式

所有模組初始化

從配置獲取執行模式型別,執行函式

建立執行緒

根據模組名稱從全域性陣列tmm_modules中得到模組指標

插入執行緒槽slot

MTK Phonebook初始化流程

開機之後,初始化時,設定如下三個ps訊息cback函式 initializeall mmi phb init protocol setprotocoleventhandler mmi phb ind startup finish,prt phb startup finish ind setproto...

SD初始化流程

sd初始化流程 當host上電後,使所有的卡裝置處於卡識別模式,完成設定有效操作電壓範圍,卡識別和請求卡相對位址等操作。1 傳送指令cmd0使卡裝置處於idle狀態 2 傳送指令cmd8,如果卡裝置有response,說明此卡為sd2.0以上 3 傳送指令cmd55 acmd41,該指令是用來探測卡...

WorldWind初始化流程

這篇post是基於ww1.3.5.0的 寫的,1.4的 如有變化我會及時更新 建立程式版本號 通過version類 保證只有乙個worldwind例項在執行 5.1.判斷是否需要執行配置嚮導 5.2.建立啟動畫面 splash類,是乙個form的派生類 5.3.配置快取 5.4.設定配置檔案路徑並讀...