tmm_modules[TMM_ALERTDEBUGLOG].flags = TM_FLAG_LOGAPI_TM;
OutputRegisterPacketModule(MODULE_NAME, "alert-debug",
- AlertDebugLogInitCtx, AlertDebugLogLogger, AlertDebugLogCondition);
+ AlertDebugLogInitCtx, AlertDebugLogLogger, AlertDebugLogCondition, NULL, NULL, NULL);
}
void TmModuleAlertFastLogRegister (void)
{
- tmm_modules[TMM_ALERTFASTLOG].name = MODULE_NAME;
- tmm_modules[TMM_ALERTFASTLOG].ThreadInit = AlertFastLogThreadInit;
- tmm_modules[TMM_ALERTFASTLOG].ThreadExitPrintStats = AlertFastLogExitPrintStats;
- tmm_modules[TMM_ALERTFASTLOG].ThreadDeinit = AlertFastLogThreadDeinit;
- tmm_modules[TMM_ALERTFASTLOG].RegisterTests = AlertFastLogRegisterTests;
- tmm_modules[TMM_ALERTFASTLOG].cap_flags = 0;
- tmm_modules[TMM_ALERTFASTLOG].flags = TM_FLAG_LOGAPI_TM;
-
- OutputRegisterPacketModule(MODULE_NAME, "fast",
- AlertFastLogInitCtx, AlertFastLogger, AlertFastLogCondition);
+ OutputRegisterPacketModule(MODULE_NAME, "fast", AlertFastLogInitCtx,
+ AlertFastLogger, AlertFastLogCondition, AlertFastLogThreadInit,
+ AlertFastLogThreadDeinit, AlertFastLogExitPrintStats);
+ AlertFastLogRegisterTests();
}
typedef struct AlertFastLogThread_ {
tmm_modules[TMM_ALERTSYSLOG].flags = TM_FLAG_LOGAPI_TM;
OutputRegisterPacketModule(MODULE_NAME, "syslog",
- AlertSyslogInitCtx, AlertSyslogLogger, AlertSyslogCondition);
+ AlertSyslogInitCtx, AlertSyslogLogger, AlertSyslogCondition, NULL, NULL, NULL);
#endif /* !OS_WIN32 */
}
//OutputRegisterModule(MODULE_NAME, "unified2-alert", Unified2AlertInitCtx);
OutputRegisterPacketModule(MODULE_NAME, "unified2-alert",
- Unified2AlertInitCtx, Unified2Logger, Unified2Condition);
+ Unified2AlertInitCtx, Unified2Logger, Unified2Condition, NULL, NULL, NULL);
}
/**
tmm_modules[TMM_LOGDROPLOG].flags = TM_FLAG_LOGAPI_TM;
OutputRegisterPacketModule(MODULE_NAME, "drop", LogDropLogInitCtx,
- LogDropLogger, LogDropCondition);
+ LogDropLogger, LogDropCondition, NULL, NULL, NULL);
}
tmm_modules[TMM_JSONALERTLOG].flags = TM_FLAG_LOGAPI_TM;
OutputRegisterPacketModule(MODULE_NAME, "alert-json-log",
- JsonAlertLogInitCtx, JsonAlertLogger, JsonAlertLogCondition);
+ JsonAlertLogInitCtx, JsonAlertLogger, JsonAlertLogCondition, NULL, NULL, NULL);
OutputRegisterPacketSubModule("eve-log", MODULE_NAME, "eve-log.alert",
JsonAlertLogInitCtxSub, JsonAlertLogger, JsonAlertLogCondition);
}
tmm_modules[TMM_JSONDROPLOG].flags = TM_FLAG_LOGAPI_TM;
OutputRegisterPacketModule(MODULE_NAME, "drop-json-log",
- JsonDropLogInitCtx, JsonDropLogger, JsonDropLogCondition);
+ JsonDropLogInitCtx, JsonDropLogger, JsonDropLogCondition, NULL, NULL, NULL);
OutputRegisterPacketSubModule("eve-log", MODULE_NAME, "eve-log.drop",
JsonDropLogInitCtxSub, JsonDropLogger, JsonDropLogCondition);
}
/* register as separate module */
OutputRegisterPacketModule("JsonSshLog", "ssh-json-log", OutputSshLogInit,
- JsonSshLogger, JsonSshCondition);
+ JsonSshLogger, JsonSshCondition, NULL, NULL, NULL);
/* also register as child of eve-log */
OutputRegisterPacketSubModule("eve-log", "JsonSshLog", "eve-log.ssh", OutputSshLogInitSub,
struct OutputPacketLogger_ *next;
const char *name;
TmmId module_id;
+ ThreadInitFunc ThreadInit;
+ ThreadDeinitFunc ThreadDeinit;
+ ThreadExitPrintStatsFunc ThreadExitPrintStats;
} OutputPacketLogger;
static OutputPacketLogger *list = NULL;
-int OutputRegisterPacketLogger(const char *name, PacketLogger LogFunc, PacketLogCondition ConditionFunc, OutputCtx *output_ctx)
+int OutputRegisterPacketLogger(const char *name, PacketLogger LogFunc,
+ PacketLogCondition ConditionFunc, OutputCtx *output_ctx,
+ ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats)
{
+#if 0
int module_id = TmModuleGetIdByName(name);
if (module_id < 0)
return -1;
+#endif
OutputPacketLogger *op = SCMalloc(sizeof(*op));
if (op == NULL)
op->ConditionFunc = ConditionFunc;
op->output_ctx = output_ctx;
op->name = name;
+ op->ThreadInit = ThreadInit;
+ op->ThreadDeinit = ThreadDeinit;
+ op->ThreadExitPrintStats = ThreadExitPrintStats;
+#if 0
op->module_id = (TmmId) module_id;
+#endif
if (list == NULL)
list = op;
OutputPacketLogger *logger = list;
while (logger) {
- 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);
- }
-
- if (tm_module->ThreadInit) {
+ if (logger->ThreadInit) {
void *retptr = NULL;
- if (tm_module->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));
OutputPacketLogger *logger = list;
while (logger && store) {
- 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);
- }
-
- if (tm_module->ThreadDeinit) {
- tm_module->ThreadDeinit(tv, store->thread_data);
+ if (logger->ThreadDeinit) {
+ logger->ThreadDeinit(tv, store->thread_data);
}
OutputLoggerThreadStore *next_store = store->next;
OutputPacketLogger *logger = list;
while (logger && store) {
- 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);
- }
-
- if (tm_module->ThreadExitPrintStats) {
- tm_module->ThreadExitPrintStats(tv, store->thread_data);
+ if (logger->ThreadExitPrintStats) {
+ logger->ThreadExitPrintStats(tv, store->thread_data);
}
logger = logger->next;
typedef int (*PacketLogCondition)(ThreadVars *, const Packet *);
int OutputRegisterPacketLogger(const char *name, PacketLogger LogFunc,
- PacketLogCondition ConditionFunc, OutputCtx *);
+ PacketLogCondition ConditionFunc, OutputCtx *, ThreadInitFunc,
+ ThreadDeinitFunc, ThreadExitPrintStatsFunc);
void TmModulePacketLoggerRegister (void);
int OutputRegisterTxLogger(const char *name, AppProto alproto, TxLogger LogFunc,
OutputCtx *output_ctx, int tc_log_progress,
int ts_log_progress, TxLoggerCondition LogCondition,
- TmEcode (*ThreadInit)(ThreadVars *, void *, void **),
- TmEcode (*ThreadDeinit)(ThreadVars *, void *),
+ ThreadInitFunc ThreadInit,
+ ThreadDeinitFunc ThreadDeinit,
void (*ThreadExitPrintStats)(ThreadVars *, void *))
{
#if 0
int OutputRegisterTxLogger(const char *name, AppProto alproto, TxLogger LogFunc,
OutputCtx *, int tc_log_progress, int ts_log_progress,
TxLoggerCondition LogCondition,
- TmEcode (*ThreadInit)(ThreadVars *, void *, void **),
- TmEcode (*ThreadDeinit)(ThreadVars *, void *),
+ ThreadInitFunc, ThreadDeinitFunc,
void (*ThreadExitPrintStats)(ThreadVars *, void *));
void TmModuleTxLoggerRegister (void);
void
OutputRegisterPacketModule(const char *name, const char *conf_name,
OutputCtx *(*InitFunc)(ConfNode *),
- PacketLogger PacketLogFunc, PacketLogCondition PacketConditionFunc)
+ PacketLogger PacketLogFunc, PacketLogCondition PacketConditionFunc,
+ ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats)
{
if (unlikely(PacketLogFunc == NULL || PacketConditionFunc == NULL)) {
goto error;
module->InitFunc = InitFunc;
module->PacketLogFunc = PacketLogFunc;
module->PacketConditionFunc = PacketConditionFunc;
+ module->ThreadInit = ThreadInit;
+ module->ThreadDeinit = ThreadDeinit;
+ module->ThreadExitPrintStats = ThreadExitPrintStats;
TAILQ_INSERT_TAIL(&output_modules, module, entries);
SCLogDebug("Packet logger \"%s\" registered.", name);
void OutputRegisterPacketModule(const char *name, const char *conf_name,
OutputCtx *(*InitFunc)(ConfNode *),
- PacketLogger LogFunc, PacketLogCondition ConditionFunc);
+ PacketLogger LogFunc, PacketLogCondition ConditionFunc,
+ ThreadInitFunc, ThreadDeinitFunc, ThreadExitPrintStatsFunc);
void OutputRegisterPacketSubModule(const char *parent_name, const char *name,
const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *),
PacketLogger LogFunc, PacketLogCondition ConditionFunc);
#endif
if (module->PacketLogFunc) {
- SCLogDebug("%s is a packet logger", module->name);
+ SCLogNotice("%s is a packet logger", module->name);
OutputRegisterPacketLogger(module->name, module->PacketLogFunc,
- module->PacketConditionFunc, output_ctx);
+ module->PacketConditionFunc, output_ctx, module->ThreadInit,
+ module->ThreadDeinit, module->ThreadExitPrintStats);
/* need one instance of the packet logger module */
if (pkt_logger_module == NULL) {
CASE_CODE (TMM_DECODEPCAPFILE);
CASE_CODE (TMM_RECEIVEPFRING);
CASE_CODE (TMM_DECODEPFRING);
- CASE_CODE (TMM_ALERTFASTLOG);
CASE_CODE (TMM_ALERTUNIFIED2ALERT);
CASE_CODE (TMM_ALERTPRELUDE);
CASE_CODE (TMM_ALERTDEBUGLOG);
#define TM_FLAG_MANAGEMENT_TM 0x20
#define TM_FLAG_COMMAND_TM 0x40
+typedef TmEcode (*ThreadInitFunc)(ThreadVars *, void *, void **);
+typedef TmEcode (*ThreadDeinitFunc)(ThreadVars *, void *);
+typedef void (*ThreadExitPrintStatsFunc)(ThreadVars *, void *);
+
typedef struct TmModule_ {
char *name;
TMM_DECODEPCAPFILE,
TMM_RECEIVEPFRING,
TMM_DECODEPFRING,
- TMM_ALERTFASTLOG,
TMM_ALERTUNIFIED2ALERT,
TMM_ALERTPRELUDE,
TMM_ALERTDEBUGLOG,