Expose SuricataMainLoop and GlobalsDestroy so that SuricataMain can be
replicated by a library user of Suricata.
These removes the `suricata` instance as a function argument to some
of these functions, as the way we use it now, it serves no
purpose. However, it is a reminder that it should probably be
refactored to not be a global, as at some point it might be desirable
for to have multiple instances active without data sharing.
FrameConfigInit();
}
-static void GlobalsDestroy(SCInstance *suri)
+void GlobalsDestroy(void)
{
+ SCInstance *suri = &suricata;
HostShutdown();
HTPFreeConfig();
HTPAtExitPrintStats();
SCReturnInt(TM_ECODE_OK);
}
-static void SuricataMainLoop(SCInstance *suri)
+void SuricataMainLoop(void)
{
+ SCInstance *suri = &suricata;
while(1) {
if (sigterm_count || sigint_count) {
suricata_ctl_flags |= SURICATA_STOP;
return;
out:
- GlobalsDestroy(&suricata);
+ GlobalsDestroy();
exit(EXIT_SUCCESS);
}
/* Post-initialization tasks: wait on thread start/running and get ready for the main loop. */
SuricataPostInit();
- SuricataMainLoop(&suricata);
+ SuricataMainLoop();
/* Shutdown engine. */
SuricataShutdown();
- GlobalsDestroy(&suricata);
+ GlobalsDestroy();
exit(EXIT_SUCCESS);
}
void SuricataInit(int argc, char **argv);
void SuricataPostInit(void);
int SuricataMain(int argc, char **argv);
+void SuricataMainLoop(void);
void SuricataShutdown(void);
int InitGlobal(void);
+void GlobalsDestroy(void);
int PostConfLoadedSetup(SCInstance *suri);
void PostConfLoadedDetectSetup(SCInstance *suri);