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);
}
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();
}
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 */
}
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 */
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);
}
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);
}
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,
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.");
}
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);
}
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);
}
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);
}
typedef struct RootLogger_ {
OutputLogFunc LogFunc;
+ OutputFlushFunc FlushFunc;
ThreadInitFunc ThreadInit;
ThreadDeinitFunc ThreadDeinit;
OutputGetActiveCountFunc ActiveCntFunc;
* \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;
}
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);
* \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;
}
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);
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_ {
ThreadDeinitFunc ThreadDeinit;
PacketLogger PacketLogFunc;
+ PacketLogger PacketFlushFunc;
PacketLogCondition PacketConditionFunc;
TxLogger TxLogFunc;
TxLoggerCondition TxLogCondition;
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,