diff --git a/src/alert-fastlog.c b/src/alert-fastlog.c index 20b9a013c9..b8481d25ea 100644 --- a/src/alert-fastlog.c +++ b/src/alert-fastlog.c @@ -44,6 +44,7 @@ void TmModuleAlertFastlogRegister (void) { tmm_modules[TMM_ALERTFASTLOG].Init = AlertFastlogThreadInit; tmm_modules[TMM_ALERTFASTLOG].Func = AlertFastlog; tmm_modules[TMM_ALERTFASTLOG].Deinit = AlertFastlogThreadDeinit; + tmm_modules[TMM_ALERTFASTLOG].RegisterTests = NULL; } void TmModuleAlertFastlogIPv4Register (void) { @@ -51,6 +52,7 @@ void TmModuleAlertFastlogIPv4Register (void) { tmm_modules[TMM_ALERTFASTLOG4].Init = AlertFastlogThreadInit; tmm_modules[TMM_ALERTFASTLOG4].Func = AlertFastlogIPv4; tmm_modules[TMM_ALERTFASTLOG4].Deinit = AlertFastlogThreadDeinit; + tmm_modules[TMM_ALERTFASTLOG4].RegisterTests = NULL; } void TmModuleAlertFastlogIPv6Register (void) { @@ -58,6 +60,7 @@ void TmModuleAlertFastlogIPv6Register (void) { tmm_modules[TMM_ALERTFASTLOG6].Init = AlertFastlogThreadInit; tmm_modules[TMM_ALERTFASTLOG6].Func = AlertFastlogIPv6; tmm_modules[TMM_ALERTFASTLOG6].Deinit = AlertFastlogThreadDeinit; + tmm_modules[TMM_ALERTFASTLOG6].RegisterTests = NULL; } typedef struct _AlertFastlogThread { diff --git a/src/alert-unified-alert.c b/src/alert-unified-alert.c index ecb9ef16d2..8d15460fbc 100644 --- a/src/alert-unified-alert.c +++ b/src/alert-unified-alert.c @@ -42,6 +42,7 @@ void TmModuleAlertUnifiedAlertRegister (void) { tmm_modules[TMM_ALERTUNIFIEDALERT].Init = AlertUnifiedAlertThreadInit; tmm_modules[TMM_ALERTUNIFIEDALERT].Func = AlertUnifiedAlert; tmm_modules[TMM_ALERTUNIFIEDALERT].Deinit = AlertUnifiedAlertThreadDeinit; + tmm_modules[TMM_ALERTUNIFIEDALERT].RegisterTests = NULL; } typedef struct _AlertUnifiedAlertThread { diff --git a/src/alert-unified-log.c b/src/alert-unified-log.c index b7db84cf4a..8d812e10ab 100644 --- a/src/alert-unified-log.c +++ b/src/alert-unified-log.c @@ -42,6 +42,7 @@ void TmModuleAlertUnifiedLogRegister (void) { tmm_modules[TMM_ALERTUNIFIEDLOG].Init = AlertUnifiedLogThreadInit; tmm_modules[TMM_ALERTUNIFIEDLOG].Func = AlertUnifiedLog; tmm_modules[TMM_ALERTUNIFIEDLOG].Deinit = AlertUnifiedLogThreadDeinit; + tmm_modules[TMM_ALERTUNIFIEDLOG].RegisterTests = NULL; } typedef struct _AlertUnifiedLogThread { diff --git a/src/detect.c b/src/detect.c index 30354e01fb..1b3cf5e8da 100644 --- a/src/detect.c +++ b/src/detect.c @@ -75,6 +75,7 @@ void TmModuleDetectRegister (void) { tmm_modules[TMM_DETECT].Init = DetectThreadInit; tmm_modules[TMM_DETECT].Func = Detect; tmm_modules[TMM_DETECT].Deinit = DetectThreadDeinit; + tmm_modules[TMM_DETECT].RegisterTests = NULL; } Signature *sig_tree_proto[256]; diff --git a/src/source-nfq.c b/src/source-nfq.c index 257802ffeb..035e126c0d 100644 --- a/src/source-nfq.c +++ b/src/source-nfq.c @@ -28,6 +28,7 @@ void TmModuleReceiveNFQRegister (void) { tmm_modules[TMM_RECEIVENFQ].Init = NULL; tmm_modules[TMM_RECEIVENFQ].Func = ReceiveNFQ; tmm_modules[TMM_RECEIVENFQ].Deinit = NULL; + tmm_modules[TMM_RECEIVENFQ].RegisterTests = NULL; } void TmModuleVerdictNFQRegister (void) { @@ -35,6 +36,7 @@ void TmModuleVerdictNFQRegister (void) { tmm_modules[TMM_VERDICTNFQ].Init = NULL; tmm_modules[TMM_VERDICTNFQ].Func = VerdictNFQ; tmm_modules[TMM_VERDICTNFQ].Deinit = NULL; + tmm_modules[TMM_VERDICTNFQ].RegisterTests = NULL; } void TmModuleDecodeNFQRegister (void) { @@ -42,6 +44,7 @@ void TmModuleDecodeNFQRegister (void) { tmm_modules[TMM_DECODENFQ].Init = NULL; tmm_modules[TMM_DECODENFQ].Func = DecodeNFQ; tmm_modules[TMM_DECODENFQ].Deinit = NULL; + tmm_modules[TMM_DECODENFQ].RegisterTests = NULL; } void NFQSetupPkt (Packet *p, void *data) diff --git a/src/tm-modules.c b/src/tm-modules.c index 181d07629d..f437712dba 100644 --- a/src/tm-modules.c +++ b/src/tm-modules.c @@ -32,3 +32,19 @@ TmModule *TmModuleGetByName(char *name) { return NULL; } +void TmModuleRegisterTests(void) { + TmModule *t; + u_int16_t i; + + for (i = 0; i < TMM_SIZE; i++) { + t = &tmm_modules[i]; + + if (t->RegisterTests == NULL) { + printf("Warning: threading module %s has no unittest " + "registration function.\n", t->name); + } else { + t->RegisterTests(); + } + } +} + diff --git a/src/tm-modules.h b/src/tm-modules.h index 2a2175937a..13681cda8c 100644 --- a/src/tm-modules.h +++ b/src/tm-modules.h @@ -6,6 +6,7 @@ typedef struct _TmModule { int (*Init)(ThreadVars *, void **); int (*Func)(ThreadVars *, Packet *, void *); int (*Deinit)(ThreadVars *, void *); + void (*RegisterTests)(void); } TmModule; enum { @@ -27,6 +28,7 @@ TmModule tmm_modules[TMM_SIZE]; TmModule *TmModuleGetByName(char *name); int TmModuleRegister(char *name, int (*module_func)(ThreadVars *, Packet *, void *)); void TmModuleDebugList(void); +void TmModuleRegisterTests(void); #endif /* __TM_MODULES_H__ */ diff --git a/src/vips.c b/src/vips.c index f9eb51d622..91e4dd9b39 100644 --- a/src/vips.c +++ b/src/vips.c @@ -289,9 +289,21 @@ int main(int argc, char **argv) BinSearchInit(); CIDRInit(); + TmModuleReceiveNFQRegister(); + TmModuleVerdictNFQRegister(); + TmModuleDecodeNFQRegister(); + TmModuleDetectRegister(); + TmModuleAlertFastlogRegister(); + TmModuleAlertFastlogIPv4Register(); + TmModuleAlertFastlogIPv6Register(); + TmModuleAlertUnifiedLogRegister(); + TmModuleAlertUnifiedAlertRegister(); + TmModuleDebugList(); + /* test and initialize the unittesting subsystem */ UtRunSelftest(); /* inits and cleans up again */ UtInitialize(); + TmModuleRegisterTests(); MpmRegisterTests(); SigTableRegisterTests(); SigRegisterTests(); @@ -301,17 +313,6 @@ int main(int argc, char **argv) //LoadConfig(); //exit(1); - TmModuleReceiveNFQRegister(); - TmModuleVerdictNFQRegister(); - TmModuleDecodeNFQRegister(); - TmModuleDetectRegister(); - TmModuleAlertFastlogRegister(); - TmModuleAlertFastlogIPv4Register(); - TmModuleAlertFastlogIPv6Register(); - TmModuleAlertUnifiedLogRegister(); - TmModuleAlertUnifiedAlertRegister(); - TmModuleDebugList(); - /* initialize packet queues */ memset(&packet_q,0,sizeof(packet_q)); memset(&trans_q, 0,sizeof(trans_q));