From effe01ae7ba4c8affa49cbfcc261a7c426c3f937 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Tue, 3 Jan 2012 16:49:58 +0100 Subject: [PATCH] Add Init and DeInit calls to the thread module API. --- src/suricata.c | 4 ++++ src/tm-modules.c | 34 ++++++++++++++++++++++++++++++++++ src/tm-modules.h | 7 +++++++ 3 files changed, 45 insertions(+) diff --git a/src/suricata.c b/src/suricata.c index b1114674e9..b3f58d97bf 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -1412,6 +1412,8 @@ int main(int argc, char **argv) } #endif /* UNITTESTS */ + TmModuleRunInit(); + if (daemon == 1) { Daemonize(); if (pid_filename == NULL) { @@ -1758,6 +1760,8 @@ int main(int argc, char **argv) TmqhPacketpoolDestroy(); MagicDeinit(); + TmModuleRunDeInit(); + #ifdef PROFILING if (profiling_rules_enabled) SCProfilingDump(); diff --git a/src/tm-modules.c b/src/tm-modules.c index c9894089d2..085dcedf6a 100644 --- a/src/tm-modules.c +++ b/src/tm-modules.c @@ -153,6 +153,40 @@ int LogFileFreeCtx(LogFileCtx *lf_ctx) SCReturnInt(1); } +void TmModuleRunInit(void) { + TmModule *t; + uint16_t i; + + for (i = 0; i < TMM_SIZE; i++) { + t = &tmm_modules[i]; + + if (t->name == NULL) + continue; + + if (t->Init == NULL) + continue; + + t->Init(); + } +} + +void TmModuleRunDeInit(void) { + TmModule *t; + uint16_t i; + + for (i = 0; i < TMM_SIZE; i++) { + t = &tmm_modules[i]; + + if (t->name == NULL) + continue; + + if (t->DeInit == NULL) + continue; + + t->DeInit(); + } +} + /** \brief register all unittests for the tm modules */ void TmModuleRegisterTests(void) { #ifdef UNITTESTS diff --git a/src/tm-modules.h b/src/tm-modules.h index 5707b60b70..a244e26988 100644 --- a/src/tm-modules.h +++ b/src/tm-modules.h @@ -43,6 +43,10 @@ typedef struct TmModule_ { TmEcode (*PktAcqLoop)(ThreadVars *, void *, void *); + /** global Init/DeInit */ + TmEcode (*Init)(void); + TmEcode (*DeInit)(void); + void (*RegisterTests)(void); uint8_t cap_flags; /**< Flags to indicate the capability requierment of @@ -105,5 +109,8 @@ void TmModuleDebugList(void); void TmModuleRegisterTests(void); const char * TmModuleTmmIdToString(TmmId id); +void TmModuleRunInit(void); +void TmModuleRunDeInit(void); + #endif /* __TM_MODULES_H__ */