From 36535cbc6107f4b1393df8b6a06c71702028c7a6 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Tue, 31 May 2016 16:21:50 +0200 Subject: [PATCH] yaml: remove conf_filename global conf_filename was a global pointer to the filename of the yaml. Move into SCInstance. This reduces it's scope and cleans up the code. --- src/detect-engine.c | 12 +++++++----- src/detect-engine.h | 2 +- src/suricata.c | 30 +++++++++++++++--------------- src/suricata.h | 3 +-- 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/detect-engine.c b/src/detect-engine.c index 3d6f513505..24385e0e9f 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -2534,7 +2534,7 @@ static int reloads = 0; * \retval -1 error * \retval 0 ok */ -int DetectEngineReload(const char *filename, SCInstance *suri) +int DetectEngineReload(SCInstance *suri) { DetectEngineCtx *new_de_ctx = NULL; DetectEngineCtx *old_de_ctx = NULL; @@ -2542,16 +2542,18 @@ int DetectEngineReload(const char *filename, SCInstance *suri) char prefix[128]; memset(prefix, 0, sizeof(prefix)); - if (filename != NULL) { + if (suri->conf_filename != NULL) { snprintf(prefix, sizeof(prefix), "detect-engine-reloads.%d", reloads++); - if (ConfYamlLoadFileWithPrefix(filename, prefix) != 0) { - SCLogError(SC_ERR_CONF_YAML_ERROR, "failed to load yaml %s", filename); + if (ConfYamlLoadFileWithPrefix(suri->conf_filename, prefix) != 0) { + SCLogError(SC_ERR_CONF_YAML_ERROR, "failed to load yaml %s", + suri->conf_filename); return -1; } ConfNode *node = ConfGetNode(prefix); if (node == NULL) { - SCLogError(SC_ERR_CONF_YAML_ERROR, "failed to properly setup yaml %s", filename); + SCLogError(SC_ERR_CONF_YAML_ERROR, "failed to properly setup yaml %s", + suri->conf_filename); return -1; } #if 0 diff --git a/src/detect-engine.h b/src/detect-engine.h index 70b18133fc..64c241e166 100644 --- a/src/detect-engine.h +++ b/src/detect-engine.h @@ -75,7 +75,7 @@ void DetectEnginePruneFreeList(void); int DetectEngineMoveToFreeList(DetectEngineCtx *de_ctx); DetectEngineCtx *DetectEngineReference(DetectEngineCtx *); void DetectEngineDeReference(DetectEngineCtx **de_ctx); -int DetectEngineReload(const char *filename, SCInstance *suri); +int DetectEngineReload(SCInstance *suri); int DetectEngineEnabled(void); int DetectEngineMTApply(void); int DetectEngineMultiTenantEnabled(void); diff --git a/src/suricata.c b/src/suricata.c index f3b6d4f985..cad97fcfe0 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -248,8 +248,6 @@ int g_detect_disabled = 0; /** set caps or not */ int sc_set_caps; -char *conf_filename = NULL; - int EngineModeIsIPS(void) { return (g_engine_mode == ENGINE_MODE_IPS); @@ -927,14 +925,14 @@ void RegisterAllModules() } -static TmEcode LoadYamlConfig(void) +static TmEcode LoadYamlConfig(SCInstance *suri) { SCEnter(); - if (conf_filename == NULL) - conf_filename = DEFAULT_CONF_FILE; + if (suri->conf_filename == NULL) + suri->conf_filename = DEFAULT_CONF_FILE; - if (ConfYamlLoadFile(conf_filename) != 0) { + if (ConfYamlLoadFile(suri->conf_filename) != 0) { /* Error already displayed. */ SCReturnInt(TM_ECODE_FAILED); } @@ -1684,7 +1682,7 @@ static TmEcode ParseCommandLine(int argc, char** argv, SCInstance *suri) } break; case 'c': - conf_filename = optarg; + suri->conf_filename = optarg; break; case 'T': SCLogInfo("Running suricata under test mode"); @@ -2168,7 +2166,7 @@ static int ConfigGetCaptureValue(SCInstance *suri) if (max_pending_packets >= 65535) { SCLogError(SC_ERR_INVALID_YAML_CONF_ENTRY, "Maximum max-pending-packets setting is 65534. " - "Please check %s for errors", conf_filename); + "Please check %s for errors", suri->conf_filename); return TM_ECODE_FAILED; } @@ -2244,7 +2242,7 @@ static int PostConfLoadedSetup(SCInstance *suri) if (ConfigCheckLogDirectory(suri->log_dir) != TM_ECODE_OK) { SCLogError(SC_ERR_LOGDIR_CONFIG, "The logging directory \"%s\" " "supplied by %s (default-log-dir) doesn't exist. " - "Shutting down the engine", suri->log_dir, conf_filename); + "Shutting down the engine", suri->log_dir, suri->conf_filename); SCReturnInt(TM_ECODE_FAILED); } @@ -2326,12 +2324,14 @@ static int PostConfLoadedSetup(SCInstance *suri) if (DetectAddressTestConfVars() < 0) { SCLogError(SC_ERR_INVALID_YAML_CONF_ENTRY, - "basic address vars test failed. Please check %s for errors", conf_filename); + "basic address vars test failed. Please check %s for errors", + suri->conf_filename); SCReturnInt(TM_ECODE_FAILED); } if (DetectPortTestConfVars() < 0) { SCLogError(SC_ERR_INVALID_YAML_CONF_ENTRY, - "basic port vars test failed. Please check %s for errors", conf_filename); + "basic port vars test failed. Please check %s for errors", + suri->conf_filename); SCReturnInt(TM_ECODE_FAILED); } @@ -2446,7 +2446,7 @@ int main(int argc, char **argv) } /* Load yaml configuration file if provided. */ - if (LoadYamlConfig() != TM_ECODE_OK) { + if (LoadYamlConfig(&suri) != TM_ECODE_OK) { exit(EXIT_FAILURE); } @@ -2586,7 +2586,7 @@ int main(int argc, char **argv) if (suri.delayed_detect) { /* force 'reload', this will load the rules and swap engines */ - DetectEngineReload(NULL, &suri); + DetectEngineReload(&suri); SCLogNotice("Signature(s) loaded, Detect thread(s) activated."); } @@ -2626,7 +2626,7 @@ int main(int argc, char **argv) } else { if (!(DetectEngineReloadIsStart())) { DetectEngineReloadStart(); - DetectEngineReload(conf_filename, &suri); + DetectEngineReload(&suri); DetectEngineReloadSetDone(); sigusr2_count--; } @@ -2638,7 +2638,7 @@ int main(int argc, char **argv) "possible if -s or -S option used at runtime."); DetectEngineReloadSetDone(); } else { - DetectEngineReload(conf_filename, &suri); + DetectEngineReload(&suri); DetectEngineReloadSetDone(); } } diff --git a/src/suricata.h b/src/suricata.h index b361b39329..1edd129d81 100644 --- a/src/suricata.h +++ b/src/suricata.h @@ -156,6 +156,7 @@ typedef struct SCInstance_ { char *log_dir; const char *progname; /**< pointer to argv[0] */ + const char *conf_filename; } SCInstance; @@ -167,8 +168,6 @@ extern volatile uint8_t suricata_ctl_flags; /* uppercase to lowercase conversion lookup table */ uint8_t g_u8_lowercasetable[256]; -extern char *conf_filename; - /* marco to do the actual lookup */ //#define u8_tolower(c) g_u8_lowercasetable[(c)] // these 2 are slower: