From: Michael Matirko (mmatirko) Date: Tue, 13 May 2025 20:12:43 +0000 (+0000) Subject: Pull request #4737: main: change process_id to a global var such that we don't requir... X-Git-Tag: 3.8.1.0~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=58bdf856ffaad5e9254b020189c40cebbec0cd1f;p=thirdparty%2Fsnort3.git Pull request #4737: main: change process_id to a global var such that we don't require constant access to the SnortConfig Merge in SNORT/snort3 from ~MMATIRKO/snort3:proc_id_2 to master Squashed commit of the following: commit 90a78ea8f5c0ac0247e0e48fe1e288568b9e053f Author: Michael Matirko Date: Fri May 2 14:57:04 2025 -0400 main: change process_id to a global var such that we don't require constant access to the SnortConfig --- diff --git a/src/main/snort.cc b/src/main/snort.cc index 8d18aa83d..ad15f0c00 100644 --- a/src/main/snort.cc +++ b/src/main/snort.cc @@ -139,6 +139,8 @@ void Snort::init(int argc, char** argv) snort_cmd_line_conf = parse_cmd_line(argc, argv); SnortConfig::set_conf(snort_cmd_line_conf); + init_process_id(); + LogMessage("--------------------------------------------------\n"); #ifdef BUILD LogMessage("%s Snort++ %s-%s\n", get_prompt(), VERSION, BUILD); @@ -410,15 +412,18 @@ bool Snort::is_reloading() bool Snort::has_dropped_privileges() { return privileges_dropped; } -unsigned Snort::get_process_id() +void Snort::init_process_id() { const SnortConfig* sc = SnortConfig::get_conf(); if (!sc->id_offset) - return 1; + process_id = 1; else - return std::ceil(sc->id_offset / (float) ThreadConfig::get_instance_max()); + process_id = std::ceil(sc->id_offset / (float) ThreadConfig::get_instance_max()); } +unsigned Snort::get_process_id() +{ return process_id; } + void Snort::setup(int argc, char* argv[]) { set_main_thread(); @@ -658,28 +663,33 @@ TEST_CASE("Check process ID handling", "[snort_process_id]") // Mock first process snort::SnortConfig* sc = const_cast(snort::SnortConfig::get_conf()); snort::ThreadConfig::set_instance_max(4); + Snort::init_process_id(); sc->id_offset = 0; unsigned pid1 = Snort::get_process_id(); CHECK(pid1 == 1); // Mock second process sc->id_offset = 5; + Snort::init_process_id(); unsigned pid2 = Snort::get_process_id(); CHECK(pid2 == 2); // Mock third process sc->id_offset = 9; + Snort::init_process_id(); unsigned pid3 = Snort::get_process_id(); CHECK(pid3 == 3); // Mock fourth process sc->id_offset = 13; + Snort::init_process_id(); unsigned pid4 = Snort::get_process_id(); CHECK(pid4 == 4); // Restore prior configs snort::ThreadConfig::set_instance_max(1); sc->id_offset = 0; + Snort::init_process_id(); } #endif diff --git a/src/main/snort.h b/src/main/snort.h index 7547e10a3..b206aeb92 100644 --- a/src/main/snort.h +++ b/src/main/snort.h @@ -51,6 +51,7 @@ public: static bool is_exiting() { return already_exiting; } static bool is_reloading(); + static void init_process_id(); SO_PUBLIC static unsigned get_process_id(); private: @@ -64,6 +65,7 @@ private: static bool reloading; static bool privileges_dropped; static bool already_exiting; + inline static unsigned process_id = 0; }; }