void TmModuleLogFilestoreRegister (void)
{
- tmm_modules[TMM_FILESTORE].name = MODULE_NAME;
- tmm_modules[TMM_FILESTORE].ThreadInit = LogFilestoreLogThreadInit;
- tmm_modules[TMM_FILESTORE].Func = NULL;
- tmm_modules[TMM_FILESTORE].ThreadExitPrintStats = LogFilestoreLogExitPrintStats;
- tmm_modules[TMM_FILESTORE].ThreadDeinit = LogFilestoreLogThreadDeinit;
- tmm_modules[TMM_FILESTORE].RegisterTests = NULL;
- tmm_modules[TMM_FILESTORE].cap_flags = 0;
- tmm_modules[TMM_FILESTORE].flags = TM_FLAG_LOGAPI_TM;
- tmm_modules[TMM_FILESTORE].priority = 10;
-
OutputRegisterFiledataModule(MODULE_NAME, "file", LogFilestoreLogInitCtx,
- LogFilestoreLogger);
- OutputRegisterFiledataModule(MODULE_NAME, "file-store", LogFilestoreLogInitCtx,
- LogFilestoreLogger);
+ LogFilestoreLogger, LogFilestoreLogThreadInit,
+ LogFilestoreLogThreadDeinit, LogFilestoreLogExitPrintStats);
+ OutputRegisterFiledataModule(MODULE_NAME, "file-store",
+ LogFilestoreLogInitCtx, LogFilestoreLogger, LogFilestoreLogThreadInit,
+ LogFilestoreLogThreadDeinit, LogFilestoreLogExitPrintStats);
SCLogDebug("registered");
}
struct OutputFiledataLogger_ *next;
const char *name;
TmmId module_id;
+ ThreadInitFunc ThreadInit;
+ ThreadDeinitFunc ThreadDeinit;
+ ThreadExitPrintStatsFunc ThreadExitPrintStats;
} OutputFiledataLogger;
static OutputFiledataLogger *list = NULL;
static int g_waldo_init = 0;
static int g_waldo_deinit = 0;
-int OutputRegisterFiledataLogger(const char *name, FiledataLogger LogFunc, OutputCtx *output_ctx)
+int OutputRegisterFiledataLogger(const char *name, FiledataLogger LogFunc,
+ OutputCtx *output_ctx, ThreadInitFunc ThreadInit,
+ ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats)
{
+#if 0
int module_id = TmModuleGetIdByName(name);
if (module_id < 0)
return -1;
+#endif
OutputFiledataLogger *op = SCMalloc(sizeof(*op));
if (op == NULL)
op->LogFunc = LogFunc;
op->output_ctx = output_ctx;
op->name = name;
+#if 0
op->module_id = (TmmId) module_id;
+#endif
+ op->ThreadInit = ThreadInit;
+ op->ThreadDeinit = ThreadDeinit;
+ op->ThreadExitPrintStats = ThreadExitPrintStats;
if (list == NULL)
list = op;
OutputFiledataLogger *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));
OutputFiledataLogger *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;
OutputFiledataLogger *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 (*TxLogCondition)(ThreadVars *, const Packet *);
-int OutputRegisterFiledataLogger(const char *name, FiledataLogger LogFunc, OutputCtx *);
+int OutputRegisterFiledataLogger(const char *name, FiledataLogger LogFunc,
+ OutputCtx *, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats);
void TmModuleFiledataLoggerRegister (void);
*/
void
OutputRegisterFiledataModule(const char *name, const char *conf_name,
- OutputCtx *(*InitFunc)(ConfNode *), FiledataLogger FiledataLogFunc)
+ OutputCtx *(*InitFunc)(ConfNode *), FiledataLogger FiledataLogFunc,
+ ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats)
{
if (unlikely(FiledataLogFunc == NULL)) {
goto error;
module->conf_name = conf_name;
module->InitFunc = InitFunc;
module->FiledataLogFunc = FiledataLogFunc;
+ module->ThreadInit = ThreadInit;
+ module->ThreadDeinit = ThreadDeinit;
+ module->ThreadExitPrintStats = ThreadExitPrintStats;
TAILQ_INSERT_TAIL(&output_modules, module, entries);
SCLogDebug("Filedata logger \"%s\" registered.", name);
void
OutputRegisterFiledataSubModule(const char *parent_name, const char *name,
const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *),
- FiledataLogger FiledataLogFunc)
+ FiledataLogger FiledataLogFunc, ThreadInitFunc ThreadInit,
+ ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats)
{
if (unlikely(FiledataLogFunc == NULL)) {
goto error;
module->parent_name = parent_name;
module->InitSubFunc = InitFunc;
module->FiledataLogFunc = FiledataLogFunc;
+ module->ThreadInit = ThreadInit;
+ module->ThreadDeinit = ThreadDeinit;
+ module->ThreadExitPrintStats = ThreadExitPrintStats;
TAILQ_INSERT_TAIL(&output_modules, module, entries);
SCLogDebug("Filedata logger \"%s\" registered.", name);
ThreadExitPrintStatsFunc ThreadExitPrintStats);
void OutputRegisterFiledataModule(const char *name, const char *conf_name,
- OutputCtx *(*InitFunc)(ConfNode *), FiledataLogger FiledataLogFunc);
+ OutputCtx *(*InitFunc)(ConfNode *), FiledataLogger FiledataLogFunc,
+ ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats);
void OutputRegisterFiledataSubModule(const char *parent_name, const char *name,
const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *),
- FiledataLogger FiledataLogFunc);
+ FiledataLogger FiledataLogFunc, ThreadInitFunc ThreadInit,
+ ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats);
void OutputRegisterFlowModule(const char *name, const char *conf_name,
OutputCtx *(*InitFunc)(ConfNode *), FlowLogger FlowLogFunc,
}
} else if (module->FiledataLogFunc) {
SCLogDebug("%s is a filedata logger", module->name);
- OutputRegisterFiledataLogger(module->name, module->FiledataLogFunc, output_ctx);
+ OutputRegisterFiledataLogger(module->name, module->FiledataLogFunc,
+ output_ctx, module->ThreadInit, module->ThreadDeinit,
+ module->ThreadExitPrintStats);
/* need one instance of the tx logger module */
if (filedata_logger_module == NULL) {
CASE_CODE (TMM_LOGTLSLOG);
CASE_CODE (TMM_LOGTCPDATALOG);
CASE_CODE (TMM_PCAPLOG);
- CASE_CODE (TMM_FILESTORE);
CASE_CODE (TMM_DECODEIPFW);
CASE_CODE (TMM_VERDICTIPFW);
CASE_CODE (TMM_RECEIVEIPFW);
TMM_LOGTCPDATALOG,
TMM_OUTPUTJSON,
TMM_PCAPLOG,
- TMM_FILESTORE,
TMM_DECODEIPFW,
TMM_VERDICTIPFW,
TMM_RECEIVEIPFW,