From cfd98e92a0e77bdc00f288f4169937ff3150de68 Mon Sep 17 00:00:00 2001 From: Jason Ish Date: Thu, 22 Feb 2024 14:25:33 -0600 Subject: [PATCH] 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. --- src/suricata.c | 12 +++++++----- src/suricata.h | 2 ++ 2 files changed, 9 insertions(+), 5 deletions(-) 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);