From: Volodymyr Shpyrka -X (vshpyrka - SOFTSERVE INC at Cisco) Date: Fri, 7 Feb 2025 16:16:22 +0000 (+0000) Subject: Pull request #4585: main: snort --create-pidfile cmd parameter update X-Git-Tag: 3.7.1.0~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b6e8e8c9cd347fcd48d25dc3f6f953891184f6b2;p=thirdparty%2Fsnort3.git Pull request #4585: main: snort --create-pidfile cmd parameter update Merge in SNORT/snort3 from ~VSHPYRKA/snort3:snort_pid_file_mgmt to master Squashed commit of the following: commit 1ca28acfc46ed38d28f702cfada9e6450b0dc159 Author: Volodymyr Shpyrka Date: Fri Jan 24 06:44:09 2025 -0500 main: snort --create-pidfile cmd line parameter update and support for --max-peers commaand line parameter implemented --- diff --git a/src/main/process.cc b/src/main/process.cc index b6362c3fd..2b1f94fe4 100644 --- a/src/main/process.cc +++ b/src/main/process.cc @@ -755,8 +755,7 @@ void CreatePidFile(pid_t pid) { SnortConfig* sc = SnortConfig::get_main_conf(); - sc->pid_filename = sc->log_dir; - sc->pid_filename += "/snort.pid"; + sc->pid_filename = sc->log_dir + '/' + sc->pid_filename; std::string pid_lockfilename; diff --git a/src/main/snort_config.cc b/src/main/snort_config.cc index 0e5ccfff1..42dbfd122 100644 --- a/src/main/snort_config.cc +++ b/src/main/snort_config.cc @@ -586,6 +586,19 @@ void SnortConfig::set_create_pid_file(bool enabled) run_flags &= ~RUN_FLAG__CREATE_PID_FILE; } +void SnortConfig::set_pid_filename(const char* name) +{ + if (name && name[0] != '\0') + pid_filename = name; + else + pid_filename = DEFAULT_PID_FILENAME; +} + +void SnortConfig::set_max_procs(uint8_t n) +{ + max_procs = n; +} + void SnortConfig::set_daemon(bool enabled) { if (enabled) diff --git a/src/main/snort_config.h b/src/main/snort_config.h index c4337e320..90fcad481 100644 --- a/src/main/snort_config.h +++ b/src/main/snort_config.h @@ -39,6 +39,7 @@ #include "utils/bits.h" #define DEFAULT_LOG_DIR "." +#define DEFAULT_PID_FILENAME "snort.pid" enum RunFlag { @@ -330,6 +331,7 @@ public: bool stdin_rules = false; std::string pid_filename; + uint8_t max_procs = 1; std::string orig_log_dir; /* set in case of chroot */ int thiszone = 0; @@ -450,6 +452,8 @@ public: void set_alert_mode(const char*); void set_chroot_dir(const char*); void set_create_pid_file(bool); + void set_pid_filename(const char*); + void set_max_procs(uint8_t); void set_daemon(bool); void set_decode_data_link(bool); void set_dirty_pig(bool); diff --git a/src/main/snort_module.cc b/src/main/snort_module.cc index 9089ce551..947d71522 100644 --- a/src/main/snort_module.cc +++ b/src/main/snort_module.cc @@ -367,9 +367,12 @@ static const Parameter s_params[] = " to create unix socket" }, #endif - { "--create-pidfile", Parameter::PT_IMPLIED, nullptr, nullptr, + { "--create-pidfile", Parameter::PT_STRING, "(optional)", nullptr, "create PID file, even when not in Daemon mode" }, + { "--max-procs", Parameter::PT_INT, "1:", nullptr, + "number of simultaneous Snort processes" }, + { "--daq", Parameter::PT_STRING, nullptr, nullptr, " select packet acquisition module (default is pcap)" }, @@ -899,7 +902,13 @@ bool SnortModule::set(const char*, Value& v, SnortConfig* sc) #endif else if ( is(v, "--create-pidfile") ) + { sc->set_create_pid_file(true); + sc->set_pid_filename(v.get_string()); + } + + else if ( is(v, "--max-procs") ) + sc->set_max_procs(v.get_uint8()); else if ( is(v, "--daq") ) module_config = sc->daq_config->add_module_config(v.get_string()); diff --git a/src/parser/parser.cc b/src/parser/parser.cc index 96cbdc53a..55214f0b5 100644 --- a/src/parser/parser.cc +++ b/src/parser/parser.cc @@ -332,6 +332,8 @@ SnortConfig* ParseSnortConf(const SnortConfig* cmd_line_conf, const char* fname) sc->tweaks = cmd_line_conf->tweaks; sc->dump_config_type = cmd_line_conf->dump_config_type; sc->dump_config_file = cmd_line_conf->dump_config_file; + sc->pid_filename = cmd_line_conf->pid_filename; + sc->max_procs = cmd_line_conf->max_procs; if ( !fname ) fname = get_snort_conf();