#include "app-layer.h"
#include "app-layer-parser.h"
#include "detect-filemagic.h"
+#include "util-profiling.h"
typedef struct OutputLoggerThreadStore_ {
void *thread_data;
OutputCtx *output_ctx;
struct OutputFileLogger_ *next;
const char *name;
+ TmmId module_id;
} OutputFileLogger;
static OutputFileLogger *list = NULL;
int OutputRegisterFileLogger(const char *name, FileLogger LogFunc, OutputCtx *output_ctx)
{
+ int module_id = TmModuleGetIdByName(name);
+ if (module_id < 0)
+ return -1;
+
OutputFileLogger *op = SCMalloc(sizeof(*op));
if (op == NULL)
return -1;
op->LogFunc = LogFunc;
op->output_ctx = output_ctx;
op->name = name;
+ op->module_id = (TmmId) module_id;
if (list == NULL)
list = op;
BUG_ON(logger->LogFunc == NULL);
SCLogDebug("logger %p", logger);
+ PACKET_PROFILING_TMM_START(p, logger->module_id);
logger->LogFunc(tv, store->thread_data, (const Packet *)p, (const File *)ff);
+ PACKET_PROFILING_TMM_END(p, logger->module_id);
file_logged = 1;
logger = logger->next;
#include "app-layer-parser.h"
#include "detect-filemagic.h"
#include "conf.h"
+#include "util-profiling.h"
typedef struct OutputLoggerThreadStore_ {
void *thread_data;
OutputCtx *output_ctx;
struct OutputFiledataLogger_ *next;
const char *name;
+ TmmId module_id;
} OutputFiledataLogger;
static OutputFiledataLogger *list = NULL;
int OutputRegisterFiledataLogger(const char *name, FiledataLogger LogFunc, OutputCtx *output_ctx)
{
+ int module_id = TmModuleGetIdByName(name);
+ if (module_id < 0)
+ return -1;
+
OutputFiledataLogger *op = SCMalloc(sizeof(*op));
if (op == NULL)
return -1;
op->LogFunc = LogFunc;
op->output_ctx = output_ctx;
op->name = name;
+ op->module_id = (TmmId) module_id;
if (list == NULL)
list = op;
BUG_ON(logger->LogFunc == NULL);
SCLogDebug("logger %p", logger);
+ PACKET_PROFILING_TMM_START(p, logger->module_id);
logger->LogFunc(tv, store->thread_data, (const Packet *)p, (const File *)ff,
(const FileData *)write_ffd, flags);
+ PACKET_PROFILING_TMM_END(p, logger->module_id);
file_logged = 1;
logger = logger->next;
#include "suricata-common.h"
#include "tm-modules.h"
#include "output-packet.h"
+#include "util-profiling.h"
typedef struct OutputLoggerThreadStore_ {
void *thread_data;
OutputCtx *output_ctx;
struct OutputPacketLogger_ *next;
const char *name;
+ TmmId module_id;
} OutputPacketLogger;
static OutputPacketLogger *list = NULL;
int OutputRegisterPacketLogger(const char *name, PacketLogger LogFunc, PacketLogCondition ConditionFunc, OutputCtx *output_ctx) {
+ int module_id = TmModuleGetIdByName(name);
+ if (module_id < 0)
+ return -1;
+
OutputPacketLogger *op = SCMalloc(sizeof(*op));
if (op == NULL)
return -1;
op->ConditionFunc = ConditionFunc;
op->output_ctx = output_ctx;
op->name = name;
+ op->module_id = (TmmId) module_id;
if (list == NULL)
list = op;
BUG_ON(logger->LogFunc == NULL || logger->ConditionFunc == NULL);
if ((logger->ConditionFunc(tv, (const Packet *)p)) == TRUE) {
+ PACKET_PROFILING_TMM_START(p, logger->module_id);
logger->LogFunc(tv, store->thread_data, (const Packet *)p);
+ PACKET_PROFILING_TMM_END(p, logger->module_id);
}
logger = logger->next;
#include "output-tx.h"
#include "app-layer.h"
#include "app-layer-parser.h"
+#include "util-profiling.h"
typedef struct OutputLoggerThreadStore_ {
void *thread_data;
OutputCtx *output_ctx;
struct OutputTxLogger_ *next;
const char *name;
+ TmmId module_id;
} OutputTxLogger;
static OutputTxLogger *list = NULL;
int OutputRegisterTxLogger(const char *name, AppProto alproto, TxLogger LogFunc, OutputCtx *output_ctx)
{
+ int module_id = TmModuleGetIdByName(name);
+ if (module_id < 0)
+ return -1;
+
OutputTxLogger *op = SCMalloc(sizeof(*op));
if (op == NULL)
return -1;
op->LogFunc = LogFunc;
op->output_ctx = output_ctx;
op->name = name;
+ op->module_id = (TmmId) module_id;
if (list == NULL)
list = op;
SCLogDebug("logger %p", logger);
if (logger->alproto == alproto) {
SCLogDebug("alproto match, logging tx_id %ju", tx_id);
+ PACKET_PROFILING_TMM_START(p, logger->module_id);
logger->LogFunc(tv, store->thread_data, p, f, alstate, tx, tx_id);
+ PACKET_PROFILING_TMM_END(p, logger->module_id);
proto_logged = 1;
}