]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
logging: convert eve dns logging to non-thread module
authorJason Ish <ish@unx.ca>
Fri, 27 May 2016 04:26:04 +0000 (22:26 -0600)
committerVictor Julien <victor@inliniac.net>
Mon, 19 Sep 2016 11:47:52 +0000 (13:47 +0200)
src/log-tlslog.c
src/output-json-dns.c
src/output-json-http.c
src/output-json-smtp.c
src/output-json-template.c
src/output-json-tls.c
src/output-tx.c
src/output.c
src/output.h
src/tm-modules.c
src/tm-threads-common.h

index c5fb14642d8afb991c06d63c2b312d0efcb812f8..d0274f222a542e50b5b7e5c9cd8b1dbf2e658f85 100644 (file)
@@ -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);
 }
index daa545ee0114c67b9849ac602039b77e17311a61..228d575b5d953c6e56bf41c22723953cd9e917cb 100644 (file)
@@ -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
index 2a10c4fe934accb15305dffa8fbcc679fb45a7f0..1ded557892f241bce23aab65f6f9e190982f2694 100644 (file)
@@ -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
index 37be7c1cd8c09a744c9d2490d33ec0c477edab18..1a9a46fbde837b7eb6173fed5820770001bcf5d8 100644 (file)
@@ -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
index d096d730041bafc9528b618af48b1f9f3c4b2fbd..ca49f81ecdd68667c097ac2f8dc38ae446af33c3 100644 (file)
@@ -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.");
 }
index a7512a097c2319175528c188be95beb5733e5ce4..4b0f2a0463f25723a04293eb4277da811125f41a 100644 (file)
@@ -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
index 24a5cff941451d8342f755d97a447f57ce750257..4a7934aad1cae5383b365d53f2130992318afe33 100644 (file)
@@ -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;
index b3d5c4487818df6040353a23502c5c30f83b22d7..4ffa6b081319d9e77cf086aebd0b487a4badfba7 100644 (file)
@@ -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);
 }
 
 /**
index 232db0edcf54a7a863a34f16aa6e4d61c74563e5..58f488c6c45aac21af1413c30c4a1b102cff7885 100644 (file)
@@ -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);
index 5879d3d44396623c08ee23d8a5d8088cd293d8b1..eb2ef2567cf4bf38240a72016039edd06680d744 100644 (file)
@@ -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);
index d1bc75391d3dc805853a1a4f90cca5a157a1736e..8ccfeeac5f9a31d56a8e9af1f6afb69a70401a81 100644 (file)
@@ -79,7 +79,6 @@ typedef enum {
     TMM_JSONALERTLOG,
     TMM_JSONDROPLOG,
     TMM_JSONHTTPLOG,
-    TMM_JSONDNSLOG,
     TMM_JSONSMTPLOG,
     TMM_JSONSSHLOG,
     TMM_JSONSTATSLOG,