int LogTcpDataLogger(ThreadVars *tv, void *thread_data, const Flow *f, const uint8_t *data, uint32_t data_len, uint64_t tx_id, uint8_t flags);
void TmModuleLogTcpDataLogRegister (void) {
- tmm_modules[TMM_LOGTCPDATALOG].name = MODULE_NAME;
- tmm_modules[TMM_LOGTCPDATALOG].ThreadInit = LogTcpDataLogThreadInit;
- tmm_modules[TMM_LOGTCPDATALOG].ThreadExitPrintStats = LogTcpDataLogExitPrintStats;
- tmm_modules[TMM_LOGTCPDATALOG].ThreadDeinit = LogTcpDataLogThreadDeinit;
- tmm_modules[TMM_LOGTCPDATALOG].RegisterTests = NULL;
- tmm_modules[TMM_LOGTCPDATALOG].cap_flags = 0;
- tmm_modules[TMM_LOGTCPDATALOG].flags = TM_FLAG_LOGAPI_TM;
-
OutputRegisterStreamingModule(MODULE_NAME, "tcp-data", LogTcpDataLogInitCtx,
- LogTcpDataLogger, STREAMING_TCP_DATA);
- OutputRegisterStreamingModule(MODULE_NAME, "http-body-data", LogTcpDataLogInitCtx,
- LogTcpDataLogger, STREAMING_HTTP_BODIES);
+ LogTcpDataLogger, STREAMING_TCP_DATA, LogTcpDataLogThreadInit,
+ LogTcpDataLogThreadDeinit, LogTcpDataLogExitPrintStats);
+ OutputRegisterStreamingModule(MODULE_NAME, "http-body-data",
+ LogTcpDataLogInitCtx, LogTcpDataLogger, STREAMING_HTTP_BODIES,
+ LogTcpDataLogThreadInit, LogTcpDataLogThreadDeinit,
+ LogTcpDataLogExitPrintStats);
}
typedef struct LogTcpDataFileCtx_ {
const char *name;
TmmId module_id;
enum OutputStreamingType type;
+ ThreadInitFunc ThreadInit;
+ ThreadDeinitFunc ThreadDeinit;
+ ThreadExitPrintStatsFunc ThreadExitPrintStats;
} OutputStreamingLogger;
static OutputStreamingLogger *list = NULL;
int OutputRegisterStreamingLogger(const char *name, StreamingLogger LogFunc,
- OutputCtx *output_ctx, enum OutputStreamingType type )
+ OutputCtx *output_ctx, enum OutputStreamingType type,
+ ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats)
{
+#if 0
int module_id = TmModuleGetIdByName(name);
if (module_id < 0)
return -1;
+#endif
OutputStreamingLogger *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->type = type;
+ op->ThreadInit = ThreadInit;
+ op->ThreadDeinit = ThreadDeinit;
+ op->ThreadExitPrintStats = ThreadExitPrintStats;
if (list == NULL)
list = op;
OutputStreamingLogger *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));
OutputStreamingLogger *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);
}
logger = logger->next;
OutputStreamingLogger *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;
const Flow *f, const uint8_t *data, uint32_t data_len,
uint64_t tx_id, uint8_t flags);
-int OutputRegisterStreamingLogger(const char *name, StreamingLogger LogFunc, OutputCtx *,
- enum OutputStreamingType);
+int OutputRegisterStreamingLogger(const char *name, StreamingLogger LogFunc,
+ OutputCtx *, enum OutputStreamingType, ThreadInitFunc ThreadInit,
+ ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats);
void TmModuleStreamingLoggerRegister (void);
void
OutputRegisterStreamingModule(const char *name, const char *conf_name,
OutputCtx *(*InitFunc)(ConfNode *), StreamingLogger StreamingLogFunc,
- enum OutputStreamingType stream_type)
+ enum OutputStreamingType stream_type, ThreadInitFunc ThreadInit,
+ ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats)
{
if (unlikely(StreamingLogFunc == NULL)) {
goto error;
module->InitFunc = InitFunc;
module->StreamingLogFunc = StreamingLogFunc;
module->stream_type = stream_type;
+ module->ThreadInit = ThreadInit;
+ module->ThreadDeinit = ThreadDeinit;
+ module->ThreadExitPrintStats = ThreadExitPrintStats;
TAILQ_INSERT_TAIL(&output_modules, module, entries);
SCLogDebug("Streaming logger \"%s\" registered.", name);
void
OutputRegisterStreamingSubModule(const char *parent_name, const char *name,
const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *),
- StreamingLogger StreamingLogFunc, enum OutputStreamingType stream_type)
+ StreamingLogger StreamingLogFunc, enum OutputStreamingType stream_type,
+ ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats)
{
if (unlikely(StreamingLogFunc == NULL)) {
goto error;
module->InitSubFunc = InitFunc;
module->StreamingLogFunc = StreamingLogFunc;
module->stream_type = stream_type;
+ module->ThreadInit = ThreadInit;
+ module->ThreadDeinit = ThreadDeinit;
+ module->ThreadExitPrintStats = ThreadExitPrintStats;
TAILQ_INSERT_TAIL(&output_modules, module, entries);
SCLogDebug("Streaming logger \"%s\" registered.", name);
void OutputRegisterStreamingModule(const char *name, const char *conf_name,
OutputCtx *(*InitFunc)(ConfNode *), StreamingLogger StreamingLogFunc,
- enum OutputStreamingType stream_type);
+ enum OutputStreamingType stream_type, ThreadInitFunc ThreadInit,
+ ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats);
void OutputRegisterStreamingSubModule(const char *parent_name, const char *name,
const char *conf_name, OutputCtx *(*InitFunc)(ConfNode *, OutputCtx *),
- StreamingLogger StreamingLogFunc, enum OutputStreamingType stream_type);
+ StreamingLogger StreamingLogFunc, enum OutputStreamingType stream_type,
+ ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
+ ThreadExitPrintStatsFunc ThreadExitPrintStats);
void OutputRegisterStatsModule(const char *name, const char *conf_name,
OutputCtx *(*InitFunc)(ConfNode *), StatsLogger StatsLogFunc,
} else if (module->StreamingLogFunc) {
SCLogDebug("%s is a streaming logger", module->name);
OutputRegisterStreamingLogger(module->name, module->StreamingLogFunc,
- output_ctx, module->stream_type);
+ output_ctx, module->stream_type, module->ThreadInit,
+ module->ThreadDeinit, module->ThreadExitPrintStats);
/* need one instance of the streaming logger module */
if (streaming_logger_module == NULL) {
CASE_CODE (TMM_ALERTDEBUGLOG);
CASE_CODE (TMM_RESPONDREJECT);
CASE_CODE (TMM_LOGTLSLOG);
- CASE_CODE (TMM_LOGTCPDATALOG);
CASE_CODE (TMM_PCAPLOG);
CASE_CODE (TMM_DECODEIPFW);
CASE_CODE (TMM_VERDICTIPFW);
TMM_ALERTDEBUGLOG,
TMM_RESPONDREJECT,
TMM_LOGTLSLOG,
- TMM_LOGTCPDATALOG,
TMM_OUTPUTJSON,
TMM_PCAPLOG,
TMM_DECODEIPFW,