logging: convert fast log to a non-thread module

pull/2245/head
Jason Ish 10 years ago committed by Victor Julien
parent 637aa34610
commit b1200dba54

@ -522,5 +522,5 @@ void TmModuleAlertDebugLogRegister (void)
tmm_modules[TMM_ALERTDEBUGLOG].flags = TM_FLAG_LOGAPI_TM;
OutputRegisterPacketModule(MODULE_NAME, "alert-debug",
AlertDebugLogInitCtx, AlertDebugLogLogger, AlertDebugLogCondition);
AlertDebugLogInitCtx, AlertDebugLogLogger, AlertDebugLogCondition, NULL, NULL, NULL);
}

@ -78,16 +78,10 @@ int AlertFastLogger(ThreadVars *tv, void *data, const Packet *p);
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_ {

@ -421,7 +421,7 @@ void TmModuleAlertSyslogRegister (void)
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 */
}

@ -245,7 +245,7 @@ void TmModuleUnified2AlertRegister(void)
//OutputRegisterModule(MODULE_NAME, "unified2-alert", Unified2AlertInitCtx);
OutputRegisterPacketModule(MODULE_NAME, "unified2-alert",
Unified2AlertInitCtx, Unified2Logger, Unified2Condition);
Unified2AlertInitCtx, Unified2Logger, Unified2Condition, NULL, NULL, NULL);
}
/**

@ -506,5 +506,5 @@ void TmModuleLogDropLogRegister (void)
tmm_modules[TMM_LOGDROPLOG].flags = TM_FLAG_LOGAPI_TM;
OutputRegisterPacketModule(MODULE_NAME, "drop", LogDropLogInitCtx,
LogDropLogger, LogDropCondition);
LogDropLogger, LogDropCondition, NULL, NULL, NULL);
}

@ -748,7 +748,7 @@ void TmModuleJsonAlertLogRegister (void)
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);
}

@ -436,7 +436,7 @@ void TmModuleJsonDropLogRegister (void)
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);
}

@ -325,7 +325,7 @@ void TmModuleJsonSshLogRegister (void)
/* 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,

@ -49,15 +49,23 @@ typedef struct OutputPacketLogger_ {
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)
@ -68,7 +76,12 @@ int OutputRegisterPacketLogger(const char *name, PacketLogger LogFunc, PacketLog
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;
@ -131,16 +144,9 @@ static TmEcode OutputPacketLogThreadInit(ThreadVars *tv, void *initdata, void **
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));
@ -174,15 +180,8 @@ static TmEcode OutputPacketLogThreadDeinit(ThreadVars *tv, void *thread_data)
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;
@ -203,15 +202,8 @@ static void OutputPacketLogExitPrintStats(ThreadVars *tv, void *thread_data)
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;

@ -37,7 +37,8 @@ typedef int (*PacketLogger)(ThreadVars *, void *thread_data, const Packet *);
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);

@ -65,8 +65,8 @@ static OutputTxLogger *list = NULL;
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

@ -39,8 +39,7 @@ typedef int (*TxLoggerCondition)(ThreadVars *, const Packet *, void *state, void
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);

@ -86,7 +86,9 @@ error:
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;
@ -102,6 +104,9 @@ OutputRegisterPacketModule(const char *name, const char *conf_name,
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);

@ -73,7 +73,8 @@ void OutputRegisterModule(const char *, const char *, OutputCtx *(*)(ConfNode *)
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);

@ -607,9 +607,10 @@ static void SetupOutput(const char *name, OutputModule *module, OutputCtx *outpu
#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) {

@ -211,7 +211,6 @@ const char * TmModuleTmmIdToString(TmmId id)
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);

@ -36,6 +36,10 @@
#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;

@ -41,7 +41,6 @@ typedef enum {
TMM_DECODEPCAPFILE,
TMM_RECEIVEPFRING,
TMM_DECODEPFRING,
TMM_ALERTFASTLOG,
TMM_ALERTUNIFIED2ALERT,
TMM_ALERTPRELUDE,
TMM_ALERTDEBUGLOG,

Loading…
Cancel
Save