From: Michael Matirko (mmatirko) Date: Tue, 18 Feb 2025 16:34:25 +0000 (+0000) Subject: Pull request #4620: main: allow toggling generation of instance_map output X-Git-Tag: 3.7.1.0~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9c10acc225019752279fe74fd73acf301df459c5;p=thirdparty%2Fsnort3.git Pull request #4620: main: allow toggling generation of instance_map output Merge in SNORT/snort3 from ~MMATIRKO/snort3:toggle_map to master Squashed commit of the following: commit 63701bbedc562453be74a1c0323f3038cbaa821f Author: Michael Matirko Date: Fri Feb 14 16:13:29 2025 -0500 main: allow toggling generation of instance_map output --- diff --git a/src/main/snort_config.cc b/src/main/snort_config.cc index f7e736e47..05de97829 100644 --- a/src/main/snort_config.cc +++ b/src/main/snort_config.cc @@ -578,6 +578,14 @@ void SnortConfig::set_chroot_dir(const char* directory) chroot_dir.clear(); } +void SnortConfig::set_create_instance_file(bool enabled) +{ + if (enabled) + run_flags |= RUN_FLAG__CREATE_INST_FILE; + else + run_flags &= ~RUN_FLAG__CREATE_INST_FILE; +} + void SnortConfig::set_create_pid_file(bool enabled) { if (enabled) diff --git a/src/main/snort_config.h b/src/main/snort_config.h index adcbf5fce..01dc09868 100644 --- a/src/main/snort_config.h +++ b/src/main/snort_config.h @@ -73,8 +73,10 @@ enum RunFlag RUN_FLAG__TEST_FEATURES = 0x00400000, RUN_FLAG__GEN_DUMP_CONFIG = 0x00800000, + RUN_FLAG__CREATE_INST_FILE = 0x01000000, + #ifdef SHELL - RUN_FLAG__SHELL = 0x01000000, + RUN_FLAG__SHELL = 0x02000000, #endif }; @@ -452,6 +454,7 @@ public: void set_alert_mode(const char*); void set_chroot_dir(const char*); void set_create_pid_file(bool); + void set_create_instance_file(bool); void set_pid_filename(const char*); void set_max_procs(uint8_t); void set_daemon(bool); @@ -616,6 +619,9 @@ public: bool gen_dump_config() const { return run_flags & RUN_FLAG__GEN_DUMP_CONFIG; } + bool create_inst_file() const + { return run_flags & RUN_FLAG__CREATE_INST_FILE; } + // other stuff uint8_t min_ttl() const { return get_network_policy()->min_ttl; } diff --git a/src/main/snort_module.cc b/src/main/snort_module.cc index 25163e084..433398784 100644 --- a/src/main/snort_module.cc +++ b/src/main/snort_module.cc @@ -367,6 +367,9 @@ static const Parameter s_params[] = " to create unix socket" }, #endif + { "--create-instance-file", Parameter::PT_IMPLIED, nullptr, nullptr, + "create instance mappings file for this Snort process at startup" }, + { "--create-pidfile", Parameter::PT_STRING, "(optional)", nullptr, "create PID file, even when not in Daemon mode" }, @@ -910,6 +913,9 @@ bool SnortModule::set(const char*, Value& v, SnortConfig* sc) else if ( is(v, "--max-procs") ) sc->set_max_procs(v.get_uint8()); + else if ( is(v, "--create-instance-file") ) + sc->set_create_instance_file(true); + else if ( is(v, "--daq") ) module_config = sc->daq_config->add_module_config(v.get_string()); diff --git a/src/main/thread.cc b/src/main/thread.cc index 0629ace57..5478472d9 100644 --- a/src/main/thread.cc +++ b/src/main/thread.cc @@ -62,6 +62,10 @@ namespace snort void populate_instance_maps() { + const SnortConfig* sc = SnortConfig::get_conf(); + if (!sc->create_inst_file()) + return; + std::string path; get_instance_file(path, INST_MAP_NAME); @@ -83,6 +87,10 @@ void populate_instance_maps() void invalidate_instance_maps() { + const SnortConfig* sc = SnortConfig::get_conf(); + if (!sc->create_inst_file()) + return; + std::string path; get_instance_file(path, INST_MAP_NAME);