From: Jason Ish Date: Fri, 27 May 2016 04:26:04 +0000 (-0600) Subject: logging: convert eve dns logging to non-thread module X-Git-Tag: suricata-3.2beta1~386 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=687602c0ca2517f6e1c74f3d1b36aa494f085dce;p=thirdparty%2Fsuricata.git logging: convert eve dns logging to non-thread module --- diff --git a/src/log-tlslog.c b/src/log-tlslog.c index c5fb14642d..d0274f222a 100644 --- a/src/log-tlslog.c +++ b/src/log-tlslog.c @@ -323,5 +323,6 @@ void TmModuleLogTlsLogRegister(void) tmm_modules[TMM_LOGTLSLOG].flags = TM_FLAG_LOGAPI_TM; OutputRegisterTxModuleWithProgress(MODULE_NAME, "tls-log", LogTlsLogInitCtx, - ALPROTO_TLS, LogTlsLogger, TLS_HANDSHAKE_DONE, TLS_HANDSHAKE_DONE); + ALPROTO_TLS, LogTlsLogger, TLS_HANDSHAKE_DONE, TLS_HANDSHAKE_DONE, + NULL, NULL, NULL); } diff --git a/src/output-json-dns.c b/src/output-json-dns.c index daa545ee01..228d575b5d 100644 --- a/src/output-json-dns.c +++ b/src/output-json-dns.c @@ -851,42 +851,32 @@ static OutputCtx *JsonDnsLogInitCtx(ConfNode *conf) #define MODULE_NAME "JsonDnsLog" 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; - /* Logger for requests. */ OutputRegisterTxModuleWithProgress(MODULE_NAME, "dns-json-log", - JsonDnsLogInitCtx, ALPROTO_DNS, JsonDnsLoggerToServer, 0, 1); + JsonDnsLogInitCtx, ALPROTO_DNS, JsonDnsLoggerToServer, 0, 1, + LogDnsLogThreadInit, LogDnsLogThreadDeinit, NULL); /* Logger for replies. */ OutputRegisterTxModuleWithProgress(MODULE_NAME, "dns-json-log", - JsonDnsLogInitCtx, ALPROTO_DNS, JsonDnsLoggerToClient, 1, 1); + JsonDnsLogInitCtx, ALPROTO_DNS, JsonDnsLoggerToClient, 1, 1, + LogDnsLogThreadInit, LogDnsLogThreadDeinit, NULL); /* Sub-logger for requests. */ OutputRegisterTxSubModuleWithProgress("eve-log", MODULE_NAME, "eve-log.dns", - JsonDnsLogInitCtxSub, ALPROTO_DNS, JsonDnsLoggerToServer, 0, 1); + JsonDnsLogInitCtxSub, ALPROTO_DNS, JsonDnsLoggerToServer, 0, 1, + LogDnsLogThreadInit, LogDnsLogThreadDeinit, NULL); /* Sub-logger for replies. */ OutputRegisterTxSubModuleWithProgress("eve-log", MODULE_NAME, "eve-log.dns", - JsonDnsLogInitCtxSub, ALPROTO_DNS, JsonDnsLoggerToClient, 1, 1); + JsonDnsLogInitCtxSub, ALPROTO_DNS, JsonDnsLoggerToClient, 1, 1, + LogDnsLogThreadInit, LogDnsLogThreadDeinit, NULL); } #else -static TmEcode OutputJsonThreadInit(ThreadVars *t, void *initdata, void **data) -{ - SCLogInfo("Can't init JSON output - JSON support was disabled during build."); - return TM_ECODE_FAILED; -} - void TmModuleJsonDnsLogRegister (void) { - tmm_modules[TMM_JSONDNSLOG].name = "JsonDnsLog"; - tmm_modules[TMM_JSONDNSLOG].ThreadInit = OutputJsonThreadInit; + SCLogInfo("Can't register JSON output - JSON support was disabled during build."); } #endif diff --git a/src/output-json-http.c b/src/output-json-http.c index 2a10c4fe93..1ded557892 100644 --- a/src/output-json-http.c +++ b/src/output-json-http.c @@ -596,8 +596,8 @@ void TmModuleJsonHttpLogRegister (void) ALPROTO_HTTP, JsonHttpLogger, NULL, NULL, NULL); /* also register as child of eve-log */ - OutputRegisterTxSubModule("eve-log", "JsonHttpLog", "eve-log.http", OutputHttpLogInitSub, - ALPROTO_HTTP, JsonHttpLogger); + OutputRegisterTxSubModule("eve-log", "JsonHttpLog", "eve-log.http", + OutputHttpLogInitSub, ALPROTO_HTTP, JsonHttpLogger, NULL, NULL, NULL); } #else diff --git a/src/output-json-smtp.c b/src/output-json-smtp.c index 37be7c1cd8..1a9a46fbde 100644 --- a/src/output-json-smtp.c +++ b/src/output-json-smtp.c @@ -270,10 +270,8 @@ void TmModuleJsonSmtpLogRegister (void) { ALPROTO_SMTP, JsonSmtpLogger, NULL, NULL, NULL); /* also register as child of eve-log */ - OutputRegisterTxSubModule("eve-log", "JsonSmtpLog", - "eve-log.smtp", - OutputSmtpLogInitSub, ALPROTO_SMTP, - JsonSmtpLogger); + OutputRegisterTxSubModule("eve-log", "JsonSmtpLog", "eve-log.smtp", + OutputSmtpLogInitSub, ALPROTO_SMTP, JsonSmtpLogger, NULL, NULL, NULL); } #else diff --git a/src/output-json-template.c b/src/output-json-template.c index d096d73004..ca49f81ecd 100644 --- a/src/output-json-template.c +++ b/src/output-json-template.c @@ -206,7 +206,8 @@ void TmModuleJsonTemplateLogRegister(void) /* Register as an eve sub-module. */ OutputRegisterTxSubModule("eve-log", "JsonTemplateLog", "eve-log.template", - OutputTemplateLogInitSub, ALPROTO_TEMPLATE, JsonTemplateLogger); + OutputTemplateLogInitSub, ALPROTO_TEMPLATE, JsonTemplateLogger, NULL, + NULL, NULL); SCLogNotice("Template JSON logger registered."); } diff --git a/src/output-json-tls.c b/src/output-json-tls.c index a7512a097c..4b0f2a0463 100644 --- a/src/output-json-tls.c +++ b/src/output-json-tls.c @@ -320,12 +320,12 @@ void TmModuleJsonTlsLogRegister (void) /* register as separate module */ OutputRegisterTxModuleWithProgress("JsonTlsLog", "tls-json-log", OutputTlsLogInit, ALPROTO_TLS, JsonTlsLogger, TLS_HANDSHAKE_DONE, - TLS_HANDSHAKE_DONE); + TLS_HANDSHAKE_DONE, NULL, NULL, NULL); /* also register as child of eve-log */ OutputRegisterTxSubModuleWithProgress("eve-log", "JsonTlsLog", "eve-log.tls", OutputTlsLogInitSub, ALPROTO_TLS, JsonTlsLogger, - TLS_HANDSHAKE_DONE, TLS_HANDSHAKE_DONE); + TLS_HANDSHAKE_DONE, TLS_HANDSHAKE_DONE, NULL, NULL, NULL); } #else diff --git a/src/output-tx.c b/src/output-tx.c index 24a5cff941..4a7934aad1 100644 --- a/src/output-tx.c +++ b/src/output-tx.c @@ -273,29 +273,9 @@ static TmEcode OutputTxLogThreadInit(ThreadVars *tv, void *initdata, void **data OutputTxLogger *logger = list; while (logger) { - - TmEcode (*ThreadInit)(ThreadVars *, void *, void **) = NULL; - if (logger->ThreadInit) { - SCLogNotice("Logger %s has ThreadInit.", logger->name); - ThreadInit = logger->ThreadInit; - } else { - SCLogNotice("Logger %s DOES NOT have ThreadInit.", logger->name); - } - - if (ThreadInit == NULL) { - TmModule *tm_module = TmModuleGetByName((char *)logger->name); - if (tm_module == NULL) { - SCLogError(SC_ERR_INVALID_ARGUMENT, - "TmModuleGetByName for %s failed", logger->name); - exit(EXIT_FAILURE); - } - ThreadInit = tm_module->ThreadInit; - } - - if (ThreadInit) { void *retptr = NULL; - if (ThreadInit(tv, (void *)logger->output_ctx, &retptr) == TM_ECODE_OK) { + if (logger->ThreadInit(tv, (void *)logger->output_ctx, &retptr) == TM_ECODE_OK) { OutputLoggerThreadStore *ts = SCMalloc(sizeof(*ts)); /* todo */ BUG_ON(ts == NULL); memset(ts, 0x00, sizeof(*ts)); @@ -329,24 +309,8 @@ static TmEcode OutputTxLogThreadDeinit(ThreadVars *tv, void *thread_data) OutputTxLogger *logger = list; while (logger && store) { - TmEcode (*ThreadDeinit)(ThreadVars *, void *) = NULL; - if (logger->ThreadDeinit) { - ThreadDeinit = logger->ThreadDeinit; - } - - if (ThreadDeinit == NULL) { - TmModule *tm_module = TmModuleGetByName((char *)logger->name); - if (tm_module == NULL) { - SCLogError(SC_ERR_INVALID_ARGUMENT, - "TmModuleGetByName for %s failed", logger->name); - exit(EXIT_FAILURE); - } - ThreadDeinit = tm_module->ThreadDeinit; - } - - if (ThreadDeinit) { - ThreadDeinit(tv, store->thread_data); + logger->ThreadDeinit(tv, store->thread_data); } OutputLoggerThreadStore *next_store = store->next; @@ -366,24 +330,8 @@ static void OutputTxLogExitPrintStats(ThreadVars *tv, void *thread_data) OutputTxLogger *logger = list; while (logger && store) { - void (*ThreadExitPrintStats)(ThreadVars *, void *) = NULL; - if (logger->ThreadExitPrintStats) { - ThreadExitPrintStats = logger->ThreadExitPrintStats; - } - - if (ThreadExitPrintStats == NULL) { - TmModule *tm_module = TmModuleGetByName((char *)logger->name); - if (tm_module == NULL) { - SCLogError(SC_ERR_INVALID_ARGUMENT, - "TmModuleGetByName for %s failed", logger->name); - exit(EXIT_FAILURE); - } - ThreadExitPrintStats = tm_module->ThreadExitPrintStats; - } - - if (ThreadExitPrintStats) { - ThreadExitPrintStats(tv, store->thread_data); + logger->ThreadExitPrintStats(tv, store->thread_data); } logger = logger->next; diff --git a/src/output.c b/src/output.c index b3d5c44878..4ffa6b0813 100644 --- a/src/output.c +++ b/src/output.c @@ -202,7 +202,10 @@ void OutputRegisterTxSubModuleWrapper(const char *parent_name, const char *name, const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), AppProto alproto, TxLogger TxLogFunc, int tc_log_progress, int ts_log_progress, - TxLoggerCondition TxLogCondition) + TxLoggerCondition TxLogCondition, + ThreadInitFunc ThreadInit, + ThreadDeinitFunc ThreadDeinit, + ThreadExitPrintStatsFunc ThreadExitPrintStats) { if (unlikely(TxLogFunc == NULL)) { goto error; @@ -222,6 +225,9 @@ void OutputRegisterTxSubModuleWrapper(const char *parent_name, module->alproto = alproto; module->tc_log_progress = tc_log_progress; module->ts_log_progress = ts_log_progress; + module->ThreadInit = ThreadInit; + module->ThreadDeinit = ThreadDeinit; + module->ThreadExitPrintStats = ThreadExitPrintStats; TAILQ_INSERT_TAIL(&output_modules, module, entries); SCLogDebug("Tx logger \"%s\" registered.", name); @@ -255,7 +261,7 @@ void OutputRegisterTxSubModuleWithCondition(const char *parent_name, { OutputRegisterTxSubModuleWrapper(parent_name, name, conf_name, InitFunc, alproto, TxLogFunc, -1, -1, - TxLogCondition); + TxLogCondition, NULL, NULL, NULL); } /** @@ -267,22 +273,27 @@ void OutputRegisterTxSubModuleWithCondition(const char *parent_name, * \retval Returns 0 on success, -1 on failure. */ void OutputRegisterTxModuleWithProgress(const char *name, const char *conf_name, - OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto, - TxLogger TxLogFunc, int tc_log_progress, int ts_log_progress) + OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto, + TxLogger TxLogFunc, int tc_log_progress, int ts_log_progress, + ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit, + ThreadExitPrintStatsFunc ThreadExitPrintStats) { OutputRegisterTxModuleWrapper(name, conf_name, InitFunc, alproto, - TxLogFunc, tc_log_progress, ts_log_progress, - NULL, NULL, NULL, NULL); + TxLogFunc, tc_log_progress, ts_log_progress, NULL, ThreadInit, + ThreadDeinit, ThreadExitPrintStats); } void OutputRegisterTxSubModuleWithProgress(const char *parent_name, - const char *name, const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, - OutputCtx *parent_ctx), AppProto alproto, TxLogger TxLogFunc, - int tc_log_progress, int ts_log_progress) + const char *name, const char *conf_name, + OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), + AppProto alproto, TxLogger TxLogFunc, int tc_log_progress, + int ts_log_progress, ThreadInitFunc ThreadInit, + ThreadDeinitFunc ThreadDeinit, + ThreadExitPrintStatsFunc ThreadExitPrintStats) { OutputRegisterTxSubModuleWrapper(parent_name, name, conf_name, InitFunc, - alproto, TxLogFunc, tc_log_progress, - ts_log_progress, NULL); + alproto, TxLogFunc, tc_log_progress, ts_log_progress, NULL, ThreadInit, + ThreadDeinit, ThreadExitPrintStats); } /** @@ -305,13 +316,17 @@ OutputRegisterTxModule(const char *name, const char *conf_name, ThreadDeinit, ThreadExitPrintStats); } -void -OutputRegisterTxSubModule(const char *parent_name, const char *name, - const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), - AppProto alproto, TxLogger TxLogFunc) +void OutputRegisterTxSubModule(const char *parent_name, const char *name, + const char *conf_name, + OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), + AppProto alproto, TxLogger TxLogFunc, ThreadInitFunc ThreadInit, + ThreadDeinitFunc ThreadDeinit, + ThreadExitPrintStatsFunc ThreadExitPrintStats) { OutputRegisterTxSubModuleWrapper(parent_name, name, conf_name, - InitFunc, alproto, TxLogFunc, -1, -1, NULL); + InitFunc, alproto, TxLogFunc, -1, -1, NULL, + ThreadInit, ThreadDeinit, + ThreadExitPrintStats); } /** diff --git a/src/output.h b/src/output.h index 232db0edcf..58f488c6c4 100644 --- a/src/output.h +++ b/src/output.h @@ -86,8 +86,11 @@ void OutputRegisterTxModule(const char *name, const char *conf_name, void (*ThreadExitPrintStats)(ThreadVars *, void *)); void OutputRegisterTxSubModule(const char *parent_name, const char *name, - const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), - AppProto alproto, TxLogger TxLogFunc); + const char *conf_name, + OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), + AppProto alproto, TxLogger TxLogFunc, + ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit, + ThreadExitPrintStatsFunc ThreadExitPrintStats); void OutputRegisterTxModuleWithCondition(const char *name, const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto, @@ -98,11 +101,17 @@ void OutputRegisterTxSubModuleWithCondition(const char *parent_name, TxLoggerCondition TxLogCondition); void OutputRegisterTxModuleWithProgress(const char *name, const char *conf_name, - OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto, - TxLogger TxLogFunc, int tc_log_progress, int ts_log_progress); -void OutputRegisterTxSubModuleWithProgress(const char *parent_name, const char *name, - const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), - AppProto alproto, TxLogger TxLogFunc, int tc_log_progress, int ts_log_progress); + OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto, TxLogger TxLogFunc, + int tc_log_progress, int ts_log_progress, ThreadInitFunc ThreadInit, + ThreadDeinitFunc ThreadDeinit, + ThreadExitPrintStatsFunc ThreadExitPrintStats); +void OutputRegisterTxSubModuleWithProgress(const char *parent_name, + const char *name, const char *conf_name, + OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), + AppProto alproto, TxLogger TxLogFunc, int tc_log_progress, + int ts_log_progress, ThreadInitFunc ThreadInit, + ThreadDeinitFunc ThreadDeinit, + ThreadExitPrintStatsFunc ThreadExitPrintStats); void OutputRegisterFileModule(const char *name, const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *), FileLogger FileLogFunc); diff --git a/src/tm-modules.c b/src/tm-modules.c index 5879d3d443..eb2ef2567c 100644 --- a/src/tm-modules.c +++ b/src/tm-modules.c @@ -245,7 +245,6 @@ const char * TmModuleTmmIdToString(TmmId id) CASE_CODE (TMM_STREAMINGLOGGER); CASE_CODE (TMM_JSONALERTLOG); CASE_CODE (TMM_JSONDROPLOG); - CASE_CODE (TMM_JSONDNSLOG); CASE_CODE (TMM_JSONHTTPLOG); CASE_CODE (TMM_JSONFILELOG); CASE_CODE (TMM_JSONFLOWLOG); diff --git a/src/tm-threads-common.h b/src/tm-threads-common.h index d1bc75391d..8ccfeeac5f 100644 --- a/src/tm-threads-common.h +++ b/src/tm-threads-common.h @@ -79,7 +79,6 @@ typedef enum { TMM_JSONALERTLOG, TMM_JSONDROPLOG, TMM_JSONHTTPLOG, - TMM_JSONDNSLOG, TMM_JSONSMTPLOG, TMM_JSONSSHLOG, TMM_JSONSTATSLOG,