From: Jason Ish Date: Thu, 22 Feb 2024 20:25:33 +0000 (-0600) Subject: suricata: expose SuricataMainLoop and GlobalsDestroy X-Git-Tag: suricata-8.0.0-beta1~1598 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cfd98e92a0e77bdc00f288f4169937ff3150de68;p=thirdparty%2Fsuricata.git suricata: expose SuricataMainLoop and GlobalsDestroy 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. --- diff --git a/src/suricata.c b/src/suricata.c index cb8c455286..62d8d0f623 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -363,8 +363,9 @@ void GlobalsInitPreConfig(void) FrameConfigInit(); } -static void GlobalsDestroy(SCInstance *suri) +void GlobalsDestroy(void) { + SCInstance *suri = &suricata; HostShutdown(); HTPFreeConfig(); HTPAtExitPrintStats(); @@ -2807,8 +2808,9 @@ int PostConfLoadedSetup(SCInstance *suri) 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; @@ -3001,7 +3003,7 @@ void SuricataInit(int argc, char **argv) return; out: - GlobalsDestroy(&suricata); + GlobalsDestroy(); exit(EXIT_SUCCESS); } @@ -3090,11 +3092,11 @@ int SuricataMain(int argc, char **argv) /* 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); } diff --git a/src/suricata.h b/src/suricata.h index ec2a25e28d..a7395995fd 100644 --- a/src/suricata.h +++ b/src/suricata.h @@ -195,8 +195,10 @@ void SuricataPreInit(const char *progname); 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);