logging: convert pcap log to non-thread module

pull/2245/head
Jason Ish 10 years ago committed by Victor Julien
parent a093580527
commit 04a44a077d

@ -143,22 +143,19 @@ typedef struct PcapLogThreadData_ {
static PcapLogData *g_pcap_data = NULL; static PcapLogData *g_pcap_data = NULL;
static int PcapLogOpenFileCtx(PcapLogData *); static int PcapLogOpenFileCtx(PcapLogData *);
static TmEcode PcapLog(ThreadVars *, Packet *, void *, PacketQueue *, PacketQueue *); static int PcapLog(ThreadVars *, void *, const Packet *);
static TmEcode PcapLogDataInit(ThreadVars *, void *, void **); static TmEcode PcapLogDataInit(ThreadVars *, void *, void **);
static TmEcode PcapLogDataDeinit(ThreadVars *, void *); static TmEcode PcapLogDataDeinit(ThreadVars *, void *);
static void PcapLogFileDeInitCtx(OutputCtx *); static void PcapLogFileDeInitCtx(OutputCtx *);
static OutputCtx *PcapLogInitCtx(ConfNode *); static OutputCtx *PcapLogInitCtx(ConfNode *);
static void PcapLogProfilingDump(PcapLogData *); static void PcapLogProfilingDump(PcapLogData *);
static int PcapLogCondition(ThreadVars *, const Packet *);
void TmModulePcapLogRegister(void) void TmModulePcapLogRegister(void)
{ {
tmm_modules[TMM_PCAPLOG].name = MODULE_NAME; OutputRegisterPacketModule(LOGGER_PCAP, MODULE_NAME, "pcap-log",
tmm_modules[TMM_PCAPLOG].ThreadInit = PcapLogDataInit; PcapLogInitCtx, PcapLog, PcapLogCondition, PcapLogDataInit,
tmm_modules[TMM_PCAPLOG].Func = PcapLog; PcapLogDataDeinit, NULL);
tmm_modules[TMM_PCAPLOG].ThreadDeinit = PcapLogDataDeinit;
tmm_modules[TMM_PCAPLOG].RegisterTests = NULL;
OutputRegisterModule(MODULE_NAME, "pcap-log", PcapLogInitCtx);
SC_ATOMIC_INIT(thread_cnt); SC_ATOMIC_INIT(thread_cnt);
return; return;
@ -171,6 +168,17 @@ void TmModulePcapLogRegister(void)
(prof).total += (UtilCpuGetTicks() - pcaplog_profile_ticks); \ (prof).total += (UtilCpuGetTicks() - pcaplog_profile_ticks); \
(prof).cnt++ (prof).cnt++
static int PcapLogCondition(ThreadVars *tv, const Packet *p)
{
if (p->flags & PKT_PSEUDO_STREAM_END) {
return FALSE;
}
if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
return FALSE;
}
return TRUE;
}
/** /**
* \brief Function to close pcaplog file * \brief Function to close pcaplog file
* *
@ -281,7 +289,7 @@ static int PcapLogRotateFile(ThreadVars *t, PcapLogData *pl)
return 0; return 0;
} }
static int PcapLogOpenHandles(PcapLogData *pl, Packet *p) static int PcapLogOpenHandles(PcapLogData *pl, const Packet *p)
{ {
PCAPLOG_PROFILE_START; PCAPLOG_PROFILE_START;
@ -345,8 +353,7 @@ static void PcapLogUnlock(PcapLogData *pl)
* \retval TM_ECODE_OK on succes * \retval TM_ECODE_OK on succes
* \retval TM_ECODE_FAILED on serious error * \retval TM_ECODE_FAILED on serious error
*/ */
static TmEcode PcapLog (ThreadVars *t, Packet *p, void *thread_data, PacketQueue *pq, static int PcapLog (ThreadVars *t, void *thread_data, const Packet *p)
PacketQueue *postpq)
{ {
size_t len; size_t len;
int rotate = 0; int rotate = 0;
@ -572,6 +579,7 @@ static TmEcode PcapLogDataDeinit(ThreadVars *t, void *thread_data)
pl->reported = 1; pl->reported = 1;
} }
} }
SCFree(td);
return TM_ECODE_OK; return TM_ECODE_OK;
} }
@ -894,7 +902,7 @@ static void PcapLogFileDeInitCtx(OutputCtx *output_ctx)
TAILQ_FOREACH(pf, &pl->pcap_file_list, next) { TAILQ_FOREACH(pf, &pl->pcap_file_list, next) {
SCLogDebug("PCAP files left at exit: %s\n", pf->filename); SCLogDebug("PCAP files left at exit: %s\n", pf->filename);
} }
SCFree(output_ctx);
return; return;
} }

@ -369,6 +369,7 @@ typedef enum {
LOGGER_STATS, LOGGER_STATS,
LOGGER_JSON_STATS, LOGGER_JSON_STATS,
LOGGER_PRELUDE, LOGGER_PRELUDE,
LOGGER_PCAP,
LOGGER_SIZE, LOGGER_SIZE,
} LoggerId; } LoggerId;

@ -212,7 +212,6 @@ const char * TmModuleTmmIdToString(TmmId id)
CASE_CODE (TMM_RECEIVEPFRING); CASE_CODE (TMM_RECEIVEPFRING);
CASE_CODE (TMM_DECODEPFRING); CASE_CODE (TMM_DECODEPFRING);
CASE_CODE (TMM_RESPONDREJECT); CASE_CODE (TMM_RESPONDREJECT);
CASE_CODE (TMM_PCAPLOG);
CASE_CODE (TMM_DECODEIPFW); CASE_CODE (TMM_DECODEIPFW);
CASE_CODE (TMM_VERDICTIPFW); CASE_CODE (TMM_VERDICTIPFW);
CASE_CODE (TMM_RECEIVEIPFW); CASE_CODE (TMM_RECEIVEIPFW);

@ -42,7 +42,6 @@ typedef enum {
TMM_RECEIVEPFRING, TMM_RECEIVEPFRING,
TMM_DECODEPFRING, TMM_DECODEPFRING,
TMM_RESPONDREJECT, TMM_RESPONDREJECT,
TMM_PCAPLOG,
TMM_DECODEIPFW, TMM_DECODEIPFW,
TMM_VERDICTIPFW, TMM_VERDICTIPFW,
TMM_RECEIVEIPFW, TMM_RECEIVEIPFW,

@ -1278,6 +1278,7 @@ const char * PacketProfileLoggertIdToString(LoggerId id)
CASE_CODE (LOGGER_STATS); CASE_CODE (LOGGER_STATS);
CASE_CODE (LOGGER_JSON_STATS); CASE_CODE (LOGGER_JSON_STATS);
CASE_CODE (LOGGER_PRELUDE); CASE_CODE (LOGGER_PRELUDE);
CASE_CODE (LOGGER_PCAP);
default: default:
return "UNKNOWN"; return "UNKNOWN";
} }

Loading…
Cancel
Save