logging: convert eve dns logging to non-thread module

pull/2245/head
Jason Ish 9 years ago committed by Victor Julien
parent b1200dba54
commit 687602c0ca

@ -323,5 +323,6 @@ void TmModuleLogTlsLogRegister(void)
tmm_modules[TMM_LOGTLSLOG].flags = TM_FLAG_LOGAPI_TM; tmm_modules[TMM_LOGTLSLOG].flags = TM_FLAG_LOGAPI_TM;
OutputRegisterTxModuleWithProgress(MODULE_NAME, "tls-log", LogTlsLogInitCtx, 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);
} }

@ -851,42 +851,32 @@ static OutputCtx *JsonDnsLogInitCtx(ConfNode *conf)
#define MODULE_NAME "JsonDnsLog" #define MODULE_NAME "JsonDnsLog"
void TmModuleJsonDnsLogRegister (void) 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. */ /* Logger for requests. */
OutputRegisterTxModuleWithProgress(MODULE_NAME, "dns-json-log", OutputRegisterTxModuleWithProgress(MODULE_NAME, "dns-json-log",
JsonDnsLogInitCtx, ALPROTO_DNS, JsonDnsLoggerToServer, 0, 1); JsonDnsLogInitCtx, ALPROTO_DNS, JsonDnsLoggerToServer, 0, 1,
LogDnsLogThreadInit, LogDnsLogThreadDeinit, NULL);
/* Logger for replies. */ /* Logger for replies. */
OutputRegisterTxModuleWithProgress(MODULE_NAME, "dns-json-log", 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. */ /* Sub-logger for requests. */
OutputRegisterTxSubModuleWithProgress("eve-log", MODULE_NAME, "eve-log.dns", 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. */ /* Sub-logger for replies. */
OutputRegisterTxSubModuleWithProgress("eve-log", MODULE_NAME, "eve-log.dns", OutputRegisterTxSubModuleWithProgress("eve-log", MODULE_NAME, "eve-log.dns",
JsonDnsLogInitCtxSub, ALPROTO_DNS, JsonDnsLoggerToClient, 1, 1); JsonDnsLogInitCtxSub, ALPROTO_DNS, JsonDnsLoggerToClient, 1, 1,
LogDnsLogThreadInit, LogDnsLogThreadDeinit, NULL);
} }
#else #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) void TmModuleJsonDnsLogRegister (void)
{ {
tmm_modules[TMM_JSONDNSLOG].name = "JsonDnsLog"; SCLogInfo("Can't register JSON output - JSON support was disabled during build.");
tmm_modules[TMM_JSONDNSLOG].ThreadInit = OutputJsonThreadInit;
} }
#endif #endif

@ -596,8 +596,8 @@ void TmModuleJsonHttpLogRegister (void)
ALPROTO_HTTP, JsonHttpLogger, NULL, NULL, NULL); ALPROTO_HTTP, JsonHttpLogger, NULL, NULL, NULL);
/* also register as child of eve-log */ /* also register as child of eve-log */
OutputRegisterTxSubModule("eve-log", "JsonHttpLog", "eve-log.http", OutputHttpLogInitSub, OutputRegisterTxSubModule("eve-log", "JsonHttpLog", "eve-log.http",
ALPROTO_HTTP, JsonHttpLogger); OutputHttpLogInitSub, ALPROTO_HTTP, JsonHttpLogger, NULL, NULL, NULL);
} }
#else #else

@ -270,10 +270,8 @@ void TmModuleJsonSmtpLogRegister (void) {
ALPROTO_SMTP, JsonSmtpLogger, NULL, NULL, NULL); ALPROTO_SMTP, JsonSmtpLogger, NULL, NULL, NULL);
/* also register as child of eve-log */ /* also register as child of eve-log */
OutputRegisterTxSubModule("eve-log", "JsonSmtpLog", OutputRegisterTxSubModule("eve-log", "JsonSmtpLog", "eve-log.smtp",
"eve-log.smtp", OutputSmtpLogInitSub, ALPROTO_SMTP, JsonSmtpLogger, NULL, NULL, NULL);
OutputSmtpLogInitSub, ALPROTO_SMTP,
JsonSmtpLogger);
} }
#else #else

@ -206,7 +206,8 @@ void TmModuleJsonTemplateLogRegister(void)
/* Register as an eve sub-module. */ /* Register as an eve sub-module. */
OutputRegisterTxSubModule("eve-log", "JsonTemplateLog", "eve-log.template", OutputRegisterTxSubModule("eve-log", "JsonTemplateLog", "eve-log.template",
OutputTemplateLogInitSub, ALPROTO_TEMPLATE, JsonTemplateLogger); OutputTemplateLogInitSub, ALPROTO_TEMPLATE, JsonTemplateLogger, NULL,
NULL, NULL);
SCLogNotice("Template JSON logger registered."); SCLogNotice("Template JSON logger registered.");
} }

@ -320,12 +320,12 @@ void TmModuleJsonTlsLogRegister (void)
/* register as separate module */ /* register as separate module */
OutputRegisterTxModuleWithProgress("JsonTlsLog", "tls-json-log", OutputRegisterTxModuleWithProgress("JsonTlsLog", "tls-json-log",
OutputTlsLogInit, ALPROTO_TLS, JsonTlsLogger, TLS_HANDSHAKE_DONE, OutputTlsLogInit, ALPROTO_TLS, JsonTlsLogger, TLS_HANDSHAKE_DONE,
TLS_HANDSHAKE_DONE); TLS_HANDSHAKE_DONE, NULL, NULL, NULL);
/* also register as child of eve-log */ /* also register as child of eve-log */
OutputRegisterTxSubModuleWithProgress("eve-log", "JsonTlsLog", OutputRegisterTxSubModuleWithProgress("eve-log", "JsonTlsLog",
"eve-log.tls", OutputTlsLogInitSub, ALPROTO_TLS, JsonTlsLogger, "eve-log.tls", OutputTlsLogInitSub, ALPROTO_TLS, JsonTlsLogger,
TLS_HANDSHAKE_DONE, TLS_HANDSHAKE_DONE); TLS_HANDSHAKE_DONE, TLS_HANDSHAKE_DONE, NULL, NULL, NULL);
} }
#else #else

@ -273,29 +273,9 @@ static TmEcode OutputTxLogThreadInit(ThreadVars *tv, void *initdata, void **data
OutputTxLogger *logger = list; OutputTxLogger *logger = list;
while (logger) { while (logger) {
TmEcode (*ThreadInit)(ThreadVars *, void *, void **) = NULL;
if (logger->ThreadInit) { 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; 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)); OutputLoggerThreadStore *ts = SCMalloc(sizeof(*ts));
/* todo */ BUG_ON(ts == NULL); /* todo */ BUG_ON(ts == NULL);
memset(ts, 0x00, sizeof(*ts)); memset(ts, 0x00, sizeof(*ts));
@ -329,24 +309,8 @@ static TmEcode OutputTxLogThreadDeinit(ThreadVars *tv, void *thread_data)
OutputTxLogger *logger = list; OutputTxLogger *logger = list;
while (logger && store) { while (logger && store) {
TmEcode (*ThreadDeinit)(ThreadVars *, void *) = NULL;
if (logger->ThreadDeinit) { if (logger->ThreadDeinit) {
ThreadDeinit = logger->ThreadDeinit; logger->ThreadDeinit(tv, store->thread_data);
}
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);
} }
OutputLoggerThreadStore *next_store = store->next; OutputLoggerThreadStore *next_store = store->next;
@ -366,24 +330,8 @@ static void OutputTxLogExitPrintStats(ThreadVars *tv, void *thread_data)
OutputTxLogger *logger = list; OutputTxLogger *logger = list;
while (logger && store) { while (logger && store) {
void (*ThreadExitPrintStats)(ThreadVars *, void *) = NULL;
if (logger->ThreadExitPrintStats) { if (logger->ThreadExitPrintStats) {
ThreadExitPrintStats = logger->ThreadExitPrintStats; logger->ThreadExitPrintStats(tv, store->thread_data);
}
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 = logger->next; logger = logger->next;

@ -202,7 +202,10 @@ void OutputRegisterTxSubModuleWrapper(const char *parent_name,
const char *name, const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, const char *name, const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *,
OutputCtx *parent_ctx), AppProto alproto, TxLogger TxLogFunc, OutputCtx *parent_ctx), AppProto alproto, TxLogger TxLogFunc,
int tc_log_progress, int ts_log_progress, int tc_log_progress, int ts_log_progress,
TxLoggerCondition TxLogCondition) TxLoggerCondition TxLogCondition,
ThreadInitFunc ThreadInit,
ThreadDeinitFunc ThreadDeinit,
ThreadExitPrintStatsFunc ThreadExitPrintStats)
{ {
if (unlikely(TxLogFunc == NULL)) { if (unlikely(TxLogFunc == NULL)) {
goto error; goto error;
@ -222,6 +225,9 @@ void OutputRegisterTxSubModuleWrapper(const char *parent_name,
module->alproto = alproto; module->alproto = alproto;
module->tc_log_progress = tc_log_progress; module->tc_log_progress = tc_log_progress;
module->ts_log_progress = ts_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); TAILQ_INSERT_TAIL(&output_modules, module, entries);
SCLogDebug("Tx logger \"%s\" registered.", name); SCLogDebug("Tx logger \"%s\" registered.", name);
@ -255,7 +261,7 @@ void OutputRegisterTxSubModuleWithCondition(const char *parent_name,
{ {
OutputRegisterTxSubModuleWrapper(parent_name, name, conf_name, InitFunc, OutputRegisterTxSubModuleWrapper(parent_name, name, conf_name, InitFunc,
alproto, TxLogFunc, -1, -1, alproto, TxLogFunc, -1, -1,
TxLogCondition); TxLogCondition, NULL, NULL, NULL);
} }
/** /**
@ -268,21 +274,26 @@ void OutputRegisterTxSubModuleWithCondition(const char *parent_name,
*/ */
void OutputRegisterTxModuleWithProgress(const char *name, const char *conf_name, void OutputRegisterTxModuleWithProgress(const char *name, const char *conf_name,
OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto, OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto,
TxLogger TxLogFunc, int tc_log_progress, int ts_log_progress) TxLogger TxLogFunc, int tc_log_progress, int ts_log_progress,
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
ThreadExitPrintStatsFunc ThreadExitPrintStats)
{ {
OutputRegisterTxModuleWrapper(name, conf_name, InitFunc, alproto, OutputRegisterTxModuleWrapper(name, conf_name, InitFunc, alproto,
TxLogFunc, tc_log_progress, ts_log_progress, TxLogFunc, tc_log_progress, ts_log_progress, NULL, ThreadInit,
NULL, NULL, NULL, NULL); ThreadDeinit, ThreadExitPrintStats);
} }
void OutputRegisterTxSubModuleWithProgress(const char *parent_name, void OutputRegisterTxSubModuleWithProgress(const char *parent_name,
const char *name, const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, const char *name, const char *conf_name,
OutputCtx *parent_ctx), AppProto alproto, TxLogger TxLogFunc, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx),
int tc_log_progress, int ts_log_progress) 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, OutputRegisterTxSubModuleWrapper(parent_name, name, conf_name, InitFunc,
alproto, TxLogFunc, tc_log_progress, alproto, TxLogFunc, tc_log_progress, ts_log_progress, NULL, ThreadInit,
ts_log_progress, NULL); ThreadDeinit, ThreadExitPrintStats);
} }
/** /**
@ -305,13 +316,17 @@ OutputRegisterTxModule(const char *name, const char *conf_name,
ThreadDeinit, ThreadExitPrintStats); ThreadDeinit, ThreadExitPrintStats);
} }
void void OutputRegisterTxSubModule(const char *parent_name, const char *name,
OutputRegisterTxSubModule(const char *parent_name, const char *name, const char *conf_name,
const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx),
AppProto alproto, TxLogger TxLogFunc) AppProto alproto, TxLogger TxLogFunc, ThreadInitFunc ThreadInit,
ThreadDeinitFunc ThreadDeinit,
ThreadExitPrintStatsFunc ThreadExitPrintStats)
{ {
OutputRegisterTxSubModuleWrapper(parent_name, name, conf_name, OutputRegisterTxSubModuleWrapper(parent_name, name, conf_name,
InitFunc, alproto, TxLogFunc, -1, -1, NULL); InitFunc, alproto, TxLogFunc, -1, -1, NULL,
ThreadInit, ThreadDeinit,
ThreadExitPrintStats);
} }
/** /**

@ -86,8 +86,11 @@ void OutputRegisterTxModule(const char *name, const char *conf_name,
void (*ThreadExitPrintStats)(ThreadVars *, void *)); void (*ThreadExitPrintStats)(ThreadVars *, void *));
void OutputRegisterTxSubModule(const char *parent_name, const char *name, void OutputRegisterTxSubModule(const char *parent_name, const char *name,
const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), const char *conf_name,
AppProto alproto, TxLogger TxLogFunc); 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, void OutputRegisterTxModuleWithCondition(const char *name, const char *conf_name,
OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto, OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto,
@ -98,11 +101,17 @@ void OutputRegisterTxSubModuleWithCondition(const char *parent_name,
TxLoggerCondition TxLogCondition); TxLoggerCondition TxLogCondition);
void OutputRegisterTxModuleWithProgress(const char *name, const char *conf_name, void OutputRegisterTxModuleWithProgress(const char *name, const char *conf_name,
OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto, OutputCtx *(*InitFunc)(ConfNode *), AppProto alproto, TxLogger TxLogFunc,
TxLogger TxLogFunc, int tc_log_progress, int ts_log_progress); int tc_log_progress, int ts_log_progress, ThreadInitFunc ThreadInit,
void OutputRegisterTxSubModuleWithProgress(const char *parent_name, const char *name, ThreadDeinitFunc ThreadDeinit,
const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *parent_ctx), ThreadExitPrintStatsFunc ThreadExitPrintStats);
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, ThreadInitFunc ThreadInit,
ThreadDeinitFunc ThreadDeinit,
ThreadExitPrintStatsFunc ThreadExitPrintStats);
void OutputRegisterFileModule(const char *name, const char *conf_name, void OutputRegisterFileModule(const char *name, const char *conf_name,
OutputCtx *(*InitFunc)(ConfNode *), FileLogger FileLogFunc); OutputCtx *(*InitFunc)(ConfNode *), FileLogger FileLogFunc);

@ -245,7 +245,6 @@ const char * TmModuleTmmIdToString(TmmId id)
CASE_CODE (TMM_STREAMINGLOGGER); CASE_CODE (TMM_STREAMINGLOGGER);
CASE_CODE (TMM_JSONALERTLOG); CASE_CODE (TMM_JSONALERTLOG);
CASE_CODE (TMM_JSONDROPLOG); CASE_CODE (TMM_JSONDROPLOG);
CASE_CODE (TMM_JSONDNSLOG);
CASE_CODE (TMM_JSONHTTPLOG); CASE_CODE (TMM_JSONHTTPLOG);
CASE_CODE (TMM_JSONFILELOG); CASE_CODE (TMM_JSONFILELOG);
CASE_CODE (TMM_JSONFLOWLOG); CASE_CODE (TMM_JSONFLOWLOG);

@ -79,7 +79,6 @@ typedef enum {
TMM_JSONALERTLOG, TMM_JSONALERTLOG,
TMM_JSONDROPLOG, TMM_JSONDROPLOG,
TMM_JSONHTTPLOG, TMM_JSONHTTPLOG,
TMM_JSONDNSLOG,
TMM_JSONSMTPLOG, TMM_JSONSMTPLOG,
TMM_JSONSSHLOG, TMM_JSONSSHLOG,
TMM_JSONSTATSLOG, TMM_JSONSTATSLOG,

Loading…
Cancel
Save