suricata源碼解讀-事務日志

注冊事務日志線程模塊

void TmModuleTxLoggerRegister (void)
{tmm_modules[TMM_TXLOGGER].name = "__tx_logger__";tmm_modules[TMM_TXLOGGER].ThreadInit = OutputTxLogThreadInit;tmm_modules[TMM_TXLOGGER].Func = OutputTxLog;tmm_modules[TMM_TXLOGGER].ThreadExitPrintStats = OutputTxLogExitPrintStats;tmm_modules[TMM_TXLOGGER].ThreadDeinit = OutputTxLogThreadDeinit;tmm_modules[TMM_TXLOGGER].cap_flags = 0;
}

注冊協議的線程模塊

void TmModuleJsonDnsLogRegister (void)
{tmm_modules[TMM_JSONDNSLOG].name = MODULE_NAME;tmm_modules[TMM_JSONDNSLOG].ThreadInit = LogDnsLogThreadInit;tmm_modules[TMM_JSONDNSLOG].ThreadDeinit = LogDnsLogThreadDeinit;tmm_modules[TMM_JSONDNSLOG].RegisterTests = NULL;tmm_modules[TMM_JSONDNSLOG].cap_flags = 0;tmm_modules[TMM_JSONDNSLOG].flags = TM_FLAG_LOGAPI_TM;OutputRegisterTxModule(MODULE_NAME, "dns-json-log", JsonDnsLogInitCtx,ALPROTO_DNS, JsonDnsLogger);OutputRegisterTxSubModule("eve-log", MODULE_NAME, "eve-log.dns", JsonDnsLogInitCtxSub,ALPROTO_DNS, JsonDnsLogger);
}

注冊協議的日志線程初始化和銷毀函數

注冊協議的事務日志模塊

void
/*** \brief Register a tx output module.** This function will register an output module so it can be* configured with the configuration file.** \retval Returns 0 on success, -1 on failure.*/
void
OutputRegisterTxModule(const char *name, const char *conf_name,OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto,TxLogger TxLogFunc)

注冊協議的事務日志模塊,存儲到output_modules

初始化輸出

/*** Initialize the output modules.*/
void RunModeInitializeOutputs(void)

根據配置選擇加載輸出模塊,調用SetupOutput將輸出模塊添加到OutputPacketLogger *list;

初始化TxLogger線程

/** \brief thread init for the tx logger*  This will run the thread init functions for the individual registered*  loggers */
static TmEcode OutputTxLogThreadInit(ThreadVars *tv, void *initdata, void **data)

遍歷前面添加到OutputPacketLogger *list的日志模塊,調用日志模塊對應的線程模塊的線程初始化函數,對日志模塊進行初始化。

日志輸出

static TmEcode OutputTxLog(ThreadVars *tv, Packet *p, void *thread_data, PacketQueue *pq, PacketQueue *postpq)

遍歷所有事務日志模塊OutputTxLogger *list,找到事務協議對應的日志模塊,調用日志輸出函數輸出日志。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/98127.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/98127.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/98127.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【CSS】層疊上下文和z-index

z-index 的作用范圍受“層疊上下文(stacking context)”影響。🔹 1. z-index 的基本作用 控制元素在 同一個層疊上下文(stacking context) 內的堆疊順序。值越大,顯示層級越靠上。🔹 2. 什么是層…

自動化腳本的降本增效實踐

一、自動化腳本的核心價值自動化腳本通過模擬人類操作完成重復性任務,其核心價值體現在三個維度:首先,在時間成本方面,標準化的數據處理流程可縮短90%以上的操作耗時;其次,在人力成本上,單個腳本…

【C語言】第七課 字符串與危險函數??

C語言中的字符串處理既是基礎,也是安全漏洞的重災區。理解C風格字符串的底層原理及其危險函數的運作方式,對于編寫安全代碼和進行逆向工程分析至關重要。 🧩 C風格字符串的本質 C風格字符串本質上是以空字符\0(ASCII值為0&#xf…

Mac安裝hadoop

1.在terminal中檢查是否安裝brew命令 brew --version 如果沒有安裝,在terminal中執行命令,安裝brew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 安裝完成后,再重新打…

多語言編碼Agent解決方案(4)-Eclipse插件實現

Eclipse插件實現:支持多語言的編碼Agent集成 本部分包含Eclipse插件的完整實現,包括多語言支持、命令注冊、API調用和UI集成。插件使用Java開發,基于Eclipse Plugin Development Environment (PDE)。 1. Eclipse插件目錄結構 eclipse-plugin/…

風險規則引擎-RPA 作為自動化依賴業務決策流程的強大工具

機器人流程自動化(RPA)聽起來好像跟機器人統治世界似的,但其實不是那么回事。RPA 就是一套能在電腦上運行的程序,能快速、高效地自動完成日常重復的工作。RPA 讓你能夠設置一些軟件“機器人”來執行特定的任務。RPA 的一個大好處就…

漏洞無效化學習

一、基礎概念與原理1. 核心定義漏洞無效化(Vulnerability Mitigation):并非直接修補漏洞本身,而是通過技術手段降低漏洞被成功利用的概率。其目標是讓攻擊者即使發現漏洞也無法達成攻擊目的。 關鍵思路:通過訪問控制、…

「Vue 項目中實現智能時間選擇:帶業務規則的級聯選擇器」

#創作靈感公司業務需要,某個時間節點前可以選擇到月,某個時間節點后只能選擇季度vue2 Vant2javascriptimport { Cascader, Field, Form, Popup, Button } from vant; import vant/lib/index.css;export default {name: CascaderPage,components: {VanCa…

day1———Qt———應用程序界面設置

1&#xff0c;定義一個Mystring類代替string的功能#include <iostream> #include <string.h>using namespace std; class Mystring {friend ostream &operator<<(ostream &cout,const Mystring &s);friend istream &operator>>(istrea…

apache實現LAMP+apache(URL重定向)

1.apache實現LAMPLAMP是指一組通常一起使用來運行動態網站的自由軟件名稱首字母的縮寫a.L是指Linux操作系統b,.A是指Apache&#xff0c;用來提供Web服務c.M指MySQL&#xff0c;用來提供數據庫服務d.P指PHP&#xff0c;是動態網站的一種開發語言1.1php運行方式說明php是腳本語言…

SAConv可切換空洞卷積

SAConv可切換空洞卷積 帶來的改進機制時可切換的空洞卷積 是一種創新型卷積網絡 專門為增強物體檢測和分割任務&#xff0c;中特征提取去設計 SAC核心時相同的輸入兒子應用到不同空洞率去進行卷積&#xff0c;設計特別開關函數融合這些不同卷積的成果 該方法可讓網絡更靈活的適…

基于Matlab的霧霾天氣和夜間車牌識別系統

在復雜天氣和低光照環境下&#xff0c;車牌識別系統的準確率和穩定性顯著下降&#xff0c;嚴重影響交通管理與智能監控的可靠性。本文針對霧霾天氣和夜間環境下車牌圖像特征模糊、對比度低、噪聲干擾嚴重的問題&#xff0c;提出了一種融合圖像增強與模板匹配的車牌識別方法。系…

華為云/本地化部署K8S-查看容器日志

華為云日志查看 目前工作的大部分情況下&#xff0c;通過華為云LTS云日志服務就可以滿足日常需求。 不過上線時過來支援的開發老哥更習慣于從容器里查看日志&#xff0c;也一并記錄下以備不時之需。 1.登錄服務節點服務器 點擊左側三個橫線&#xff0c;選擇 應用服務-云容器引擎…

【MySQL 死鎖:從 “業務卡頓“ 到 “根因定位“ 的實戰指南】

MySQL 死鎖&#xff1a;從 “業務卡頓” 到 “根因定位” 的實戰指南 后端開發必看&#xff1a;MySQL死鎖排查與預防全攻略線上系統突然報出Deadlock found when trying to get lock; try restarting transaction&#xff0c;用戶操作卡頓甚至超時&#xff0c;排查時卻對著一堆…

從虛擬化基石到云原生架構的降維打擊:用dd/mkfs玩轉namespace隔離,解鎖Docker/K8S資源密碼,看透物理機到云服務器的進化之路

本篇摘要 本文圍繞虛擬化與容器化技術展開&#xff0c;涵蓋架構演進、Docker/K8S優勢與挑戰、namespace隔離實操&#xff08;如主機名/PID隔離&#xff09;、磁盤操作&#xff08;dd/mkfs/df/mount&#xff09;等&#xff0c;對比虛擬機與容器差異&#xff0c;闡明技術原理與架…

自動化測試的概念

文章目錄自動化測試能夠取代人工測試嗎&#xff1f;回歸測試自動化分類自動化測試金字塔為啥單元測試的性價比這么高呢&#xff1f;那為啥UI自動化測試的性價比沒有組件測試的高呢&#xff1f;web自動化測試舉例引入自動化測試的準備工作自動化測試的簡單示例自動化測試能夠取代…

OSPF故障排查實戰:如何通過一條命令精準定位網絡掩碼不匹配問題

掌握display ospf error命令的解讀技巧&#xff0c;快速解決OSPF鄰接關系建立失敗難題。一、問題背景與場景引入 在網絡運維工作中&#xff0c;OSPF&#xff08;開放最短路徑優先&#xff09;協議作為主流的內部網關協議&#xff0c;其穩定運行至關重要。然而&#xff0c;在實際…

Redis----如何引入分布式鎖

一、概述首先引入分布式鎖指的是應用程序引入&#xff0c;不是Redis本身引入&#xff0c;Redis作為中間件可以作為分布式鎖的一個典型實現方案&#xff0c;同時也有一些其他的實現方案。分布式鎖指的是一個/組程序&#xff0c;使用Redis實現的話就是通過添加一個特殊的Key-Valu…

prometheus-2.42.0.linux-amd64.tar.gz 安裝配置展示

一、prometheus 1.1解壓文件 # tar -xzvf prometheus-2.42.0.linux-amd64.tar.gz -C ~/apps/ prometheus-2.42.0.linux-amd64/ prometheus-2.42.0.linux-amd64/NOTICE prometheus-2.42.0.linux-amd64/consoles/ prometheus-2.42.0.linux-amd64/consoles/index.html.example p…

Linux 標準輸入 標準輸出 標準錯誤

目錄一. 簡介二. 常見用法2.1 輸出重定向2.2 錯誤重定向2.3 同時重定向標準輸出 錯誤2.4 輸入重定向2.5 特殊設備三. 這樣設計的好處3.1 區分正常信息和錯誤信息3.2 方便調用方腳本處理3.3 與管道結合時更清晰四. 案例4.1 if判斷4.2 ls查詢一. 簡介 ?在 Linux/Unix 中&#…