output/log: Add flush function, collapse params

Issue: 3449

Add a flush function to packet logger registration and collapse the
parameter count for registration functions.
pull/12679/head
Jeff Lucovsky 10 months ago committed by Victor Julien
parent 80dbaac206
commit 7621029507

@ -481,7 +481,15 @@ static int AlertDebugLogLogger(ThreadVars *tv, void *thread_data, const Packet *
void AlertDebugLogRegister(void)
{
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = AlertDebugLogLogger,
.FlushFunc = NULL,
.ConditionFunc = AlertDebugLogCondition,
.ThreadInitFunc = AlertDebugLogThreadInit,
.ThreadDeinitFunc = AlertDebugLogThreadDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketModule(LOGGER_ALERT_DEBUG, MODULE_NAME, "alert-debug", AlertDebugLogInitCtx,
AlertDebugLogLogger, AlertDebugLogCondition, AlertDebugLogThreadInit,
AlertDebugLogThreadDeinit);
&output_logger_functions);
}

@ -76,9 +76,17 @@ int AlertFastLogger(ThreadVars *tv, void *data, const Packet *p);
void AlertFastLogRegister(void)
{
OutputRegisterPacketModule(LOGGER_ALERT_FAST, MODULE_NAME, "fast", AlertFastLogInitCtx,
AlertFastLogger, AlertFastLogCondition, AlertFastLogThreadInit,
AlertFastLogThreadDeinit);
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = AlertFastLogger,
.FlushFunc = NULL,
.ConditionFunc = AlertFastLogCondition,
.ThreadInitFunc = AlertFastLogThreadInit,
.ThreadDeinitFunc = AlertFastLogThreadDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketModule(
LOGGER_ALERT_FAST, MODULE_NAME, "fast", AlertFastLogInitCtx, &output_logger_functions);
AlertFastLogRegisterTests();
}

@ -384,8 +384,15 @@ static int AlertSyslogLogger(ThreadVars *tv, void *thread_data, const Packet *p)
void AlertSyslogRegister (void)
{
#ifndef OS_WIN32
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = AlertSyslogLogger,
.FlushFunc = NULL,
.ConditionFunc = AlertSyslogCondition,
.ThreadInitFunc = AlertSyslogThreadInit,
.ThreadDeinitFunc = AlertSyslogThreadDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketModule(LOGGER_ALERT_SYSLOG, MODULE_NAME, "syslog", AlertSyslogInitCtx,
AlertSyslogLogger, AlertSyslogCondition, AlertSyslogThreadInit,
AlertSyslogThreadDeinit);
&output_logger_functions);
#endif /* !OS_WIN32 */
}

@ -209,8 +209,16 @@ static bool PcapLogCondition(ThreadVars *, void *, const Packet *);
void PcapLogRegister(void)
{
OutputRegisterPacketModule(LOGGER_PCAP, MODULE_NAME, "pcap-log", PcapLogInitCtx, PcapLog,
PcapLogCondition, PcapLogDataInit, PcapLogDataDeinit);
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = PcapLog,
.FlushFunc = NULL,
.ConditionFunc = PcapLogCondition,
.ThreadInitFunc = PcapLogDataInit,
.ThreadDeinitFunc = PcapLogDataDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketModule(
LOGGER_PCAP, MODULE_NAME, "pcap-log", PcapLogInitCtx, &output_logger_functions);
PcapLogProfileSetup();
SC_ATOMIC_INIT(thread_cnt);
SC_ATOMIC_SET(thread_cnt, 1); /* first id is 1 */

@ -452,7 +452,15 @@ static bool EveStreamLogCondition(ThreadVars *tv, void *data, const Packet *p)
void EveStreamLogRegister(void)
{
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = EveStreamLogger,
.FlushFunc = NULL,
.ConditionFunc = EveStreamLogCondition,
.ThreadInitFunc = EveStreamLogThreadInit,
.ThreadDeinitFunc = EveStreamLogThreadDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketSubModule(LOGGER_JSON_STREAM, "eve-log", MODULE_NAME, "eve-log.stream",
EveStreamLogInitCtxSub, EveStreamLogger, EveStreamLogCondition, EveStreamLogThreadInit,
EveStreamLogThreadDeinit);
EveStreamLogInitCtxSub, &output_logger_functions);
}

@ -1065,7 +1065,15 @@ error:
void JsonAlertLogRegister (void)
{
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = JsonAlertLogger,
.FlushFunc = NULL,
.ConditionFunc = JsonAlertLogCondition,
.ThreadInitFunc = JsonAlertLogThreadInit,
.ThreadDeinitFunc = JsonAlertLogThreadDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketSubModule(LOGGER_JSON_ALERT, "eve-log", MODULE_NAME, "eve-log.alert",
JsonAlertLogInitCtxSub, JsonAlertLogger, JsonAlertLogCondition, JsonAlertLogThreadInit,
JsonAlertLogThreadDeinit);
JsonAlertLogInitCtxSub, &output_logger_functions);
}

@ -449,9 +449,17 @@ static OutputInitResult JsonAnomalyLogInitCtxSub(ConfNode *conf, OutputCtx *pare
void JsonAnomalyLogRegister (void)
{
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = JsonAnomalyLogger,
.FlushFunc = NULL,
.ConditionFunc = JsonAnomalyLogCondition,
.ThreadInitFunc = JsonAnomalyLogThreadInit,
.ThreadDeinitFunc = JsonAnomalyLogThreadDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketSubModule(LOGGER_JSON_ANOMALY, "eve-log", MODULE_NAME, "eve-log.anomaly",
JsonAnomalyLogInitCtxSub, JsonAnomalyLogger, JsonAnomalyLogCondition,
JsonAnomalyLogThreadInit, JsonAnomalyLogThreadDeinit);
JsonAnomalyLogInitCtxSub, &output_logger_functions);
OutputRegisterTxSubModule(LOGGER_JSON_ANOMALY, "eve-log", MODULE_NAME, "eve-log.anomaly",
JsonAnomalyLogInitCtxHelper, ALPROTO_UNKNOWN, JsonAnomalyTxLogger,

@ -103,9 +103,17 @@ static bool JsonArpLogCondition(ThreadVars *tv, void *thread_data, const Packet
void JsonArpLogRegister(void)
{
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = JsonArpLogger,
.FlushFunc = NULL,
.ConditionFunc = JsonArpLogCondition,
.ThreadInitFunc = JsonLogThreadInit,
.ThreadDeinitFunc = JsonLogThreadDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketSubModule(LOGGER_JSON_ARP, "eve-log", "JsonArpLog", "eve-log.arp",
OutputJsonLogInitSub, JsonArpLogger, JsonArpLogCondition, JsonLogThreadInit,
JsonLogThreadDeinit);
OutputJsonLogInitSub, &output_logger_functions);
SCLogDebug("ARP JSON logger registered.");
}

@ -390,7 +390,15 @@ static bool JsonDropLogCondition(ThreadVars *tv, void *data, const Packet *p)
void JsonDropLogRegister (void)
{
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = JsonDropLogger,
.FlushFunc = NULL,
.ConditionFunc = JsonDropLogCondition,
.ThreadInitFunc = JsonDropLogThreadInit,
.ThreadDeinitFunc = JsonDropLogThreadDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketSubModule(LOGGER_JSON_DROP, "eve-log", MODULE_NAME, "eve-log.drop",
JsonDropLogInitCtxSub, JsonDropLogger, JsonDropLogCondition, JsonDropLogThreadInit,
JsonDropLogThreadDeinit);
JsonDropLogInitCtxSub, &output_logger_functions);
}

@ -560,7 +560,14 @@ error:
void JsonFrameLogRegister(void)
{
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = JsonFrameLogger,
.FlushFunc = NULL,
.ConditionFunc = JsonFrameLogCondition,
.ThreadInitFunc = JsonFrameLogThreadInit,
.ThreadDeinitFunc = JsonFrameLogThreadDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketSubModule(LOGGER_JSON_FRAME, "eve-log", MODULE_NAME, "eve-log.frame",
JsonFrameLogInitCtxSub, JsonFrameLogger, JsonFrameLogCondition, JsonFrameLogThreadInit,
JsonFrameLogThreadDeinit);
JsonFrameLogInitCtxSub, &output_logger_functions);
}

@ -94,12 +94,19 @@ static bool JsonMetadataLogCondition(ThreadVars *tv, void *data, const Packet *p
void JsonMetadataLogRegister (void)
{
OutputPacketLoggerFunctions output_logger_functions = {
.LogFunc = JsonMetadataLogger,
.FlushFunc = NULL,
.ConditionFunc = JsonMetadataLogCondition,
.ThreadInitFunc = JsonLogThreadInit,
.ThreadDeinitFunc = JsonLogThreadDeinit,
.ThreadExitPrintStatsFunc = NULL,
};
OutputRegisterPacketSubModule(LOGGER_JSON_METADATA, "eve-log", MODULE_NAME, "eve-log.metadata",
OutputJsonLogInitSub, JsonMetadataLogger, JsonMetadataLogCondition, JsonLogThreadInit,
JsonLogThreadDeinit);
OutputJsonLogInitSub, &output_logger_functions);
/* Kept for compatibility. */
OutputRegisterPacketSubModule(LOGGER_JSON_METADATA, "eve-log", MODULE_NAME, "eve-log.vars",
OutputJsonLogInitSub, JsonMetadataLogger, JsonMetadataLogCondition, JsonLogThreadInit,
JsonLogThreadDeinit);
OutputJsonLogInitSub, &output_logger_functions);
}

@ -85,6 +85,7 @@
typedef struct RootLogger_ {
OutputLogFunc LogFunc;
OutputFlushFunc FlushFunc;
ThreadInitFunc ThreadInit;
ThreadDeinitFunc ThreadDeinit;
OutputGetActiveCountFunc ActiveCntFunc;
@ -167,10 +168,10 @@ error:
* \retval Returns 0 on success, -1 on failure.
*/
void OutputRegisterPacketModule(LoggerId id, const char *name, const char *conf_name,
OutputInitFunc InitFunc, PacketLogger PacketLogFunc, PacketLogCondition PacketConditionFunc,
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
OutputInitFunc InitFunc, OutputPacketLoggerFunctions *output_module_functions)
{
if (unlikely(PacketLogFunc == NULL || PacketConditionFunc == NULL)) {
if (unlikely(output_module_functions->LogFunc == NULL ||
output_module_functions->ConditionFunc == NULL)) {
goto error;
}
@ -183,10 +184,11 @@ void OutputRegisterPacketModule(LoggerId id, const char *name, const char *conf_
module->name = name;
module->conf_name = conf_name;
module->InitFunc = InitFunc;
module->PacketLogFunc = PacketLogFunc;
module->PacketConditionFunc = PacketConditionFunc;
module->ThreadInit = ThreadInit;
module->ThreadDeinit = ThreadDeinit;
module->PacketLogFunc = output_module_functions->LogFunc;
module->PacketFlushFunc = output_module_functions->FlushFunc;
module->PacketConditionFunc = output_module_functions->ConditionFunc;
module->ThreadInit = output_module_functions->ThreadInitFunc;
module->ThreadDeinit = output_module_functions->ThreadDeinitFunc;
TAILQ_INSERT_TAIL(&output_modules, module, entries);
SCLogDebug("Packet logger \"%s\" registered.", name);
@ -204,11 +206,11 @@ error:
* \retval Returns 0 on success, -1 on failure.
*/
void OutputRegisterPacketSubModule(LoggerId id, const char *parent_name, const char *name,
const char *conf_name, OutputInitSubFunc InitFunc, PacketLogger PacketLogFunc,
PacketLogCondition PacketConditionFunc, ThreadInitFunc ThreadInit,
ThreadDeinitFunc ThreadDeinit)
const char *conf_name, OutputInitSubFunc InitFunc,
OutputPacketLoggerFunctions *output_logger_functions)
{
if (unlikely(PacketLogFunc == NULL || PacketConditionFunc == NULL)) {
if (unlikely(output_logger_functions->LogFunc == NULL ||
output_logger_functions->ConditionFunc == NULL)) {
goto error;
}
@ -222,10 +224,11 @@ void OutputRegisterPacketSubModule(LoggerId id, const char *parent_name, const c
module->conf_name = conf_name;
module->parent_name = parent_name;
module->InitSubFunc = InitFunc;
module->PacketLogFunc = PacketLogFunc;
module->PacketConditionFunc = PacketConditionFunc;
module->ThreadInit = ThreadInit;
module->ThreadDeinit = ThreadDeinit;
module->PacketLogFunc = output_logger_functions->LogFunc;
module->PacketFlushFunc = output_logger_functions->FlushFunc;
module->PacketConditionFunc = output_logger_functions->ConditionFunc;
module->ThreadInit = output_logger_functions->ThreadInitFunc;
module->ThreadDeinit = output_logger_functions->ThreadDeinitFunc;
TAILQ_INSERT_TAIL(&output_modules, module, entries);
SCLogDebug("Packet logger \"%s\" registered.", name);

@ -51,6 +51,7 @@ typedef struct OutputInitResult_ {
typedef OutputInitResult (*OutputInitFunc)(ConfNode *);
typedef OutputInitResult (*OutputInitSubFunc)(ConfNode *, OutputCtx *);
typedef TmEcode (*OutputLogFunc)(ThreadVars *, Packet *, void *);
typedef TmEcode (*OutputFlushFunc)(ThreadVars *, Packet *, void *);
typedef uint32_t (*OutputGetActiveCountFunc)(void);
typedef struct OutputModule_ {
@ -65,6 +66,7 @@ typedef struct OutputModule_ {
ThreadDeinitFunc ThreadDeinit;
PacketLogger PacketLogFunc;
PacketLogger PacketFlushFunc;
PacketLogCondition PacketConditionFunc;
TxLogger TxLogFunc;
TxLoggerCondition TxLogCondition;
@ -81,17 +83,25 @@ typedef struct OutputModule_ {
TAILQ_ENTRY(OutputModule_) entries;
} OutputModule;
/* struct for packet module and packet sub-module registration */
typedef struct OutputPacketLoggerFunctions_ {
PacketLogger LogFunc;
PacketLogger FlushFunc;
PacketLogCondition ConditionFunc;
ThreadInitFunc ThreadInitFunc;
ThreadDeinitFunc ThreadDeinitFunc;
ThreadExitPrintStatsFunc ThreadExitPrintStatsFunc;
} OutputPacketLoggerFunctions;
typedef TAILQ_HEAD(OutputModuleList_, OutputModule_) OutputModuleList;
extern OutputModuleList output_modules;
void OutputRegisterModule(const char *, const char *, OutputInitFunc);
void OutputRegisterPacketModule(LoggerId id, const char *name, const char *conf_name,
OutputInitFunc InitFunc, PacketLogger LogFunc, PacketLogCondition ConditionFunc,
ThreadInitFunc, ThreadDeinitFunc);
OutputInitFunc InitFunc, OutputPacketLoggerFunctions *);
void OutputRegisterPacketSubModule(LoggerId id, const char *parent_name, const char *name,
const char *conf_name, OutputInitSubFunc InitFunc, PacketLogger LogFunc,
PacketLogCondition ConditionFunc, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit);
const char *conf_name, OutputInitSubFunc InitFunc, OutputPacketLoggerFunctions *);
void OutputRegisterTxModule(LoggerId id, const char *name, const char *conf_name,
OutputInitFunc InitFunc, AppProto alproto, TxLogger TxLogFunc, ThreadInitFunc ThreadInit,

Loading…
Cancel
Save