]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #4585: main: snort --create-pidfile cmd parameter update
authorVolodymyr Shpyrka -X (vshpyrka - SOFTSERVE INC at Cisco) <vshpyrka@cisco.com>
Fri, 7 Feb 2025 16:16:22 +0000 (16:16 +0000)
committerSteven Baigal (sbaigal) <sbaigal@cisco.com>
Fri, 7 Feb 2025 16:16:22 +0000 (16:16 +0000)
Merge in SNORT/snort3 from ~VSHPYRKA/snort3:snort_pid_file_mgmt to master

Squashed commit of the following:

commit 1ca28acfc46ed38d28f702cfada9e6450b0dc159
Author: Volodymyr Shpyrka <vshpyrka@cisco.com>
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

src/main/process.cc
src/main/snort_config.cc
src/main/snort_config.h
src/main/snort_module.cc
src/parser/parser.cc

index b6362c3fd3a184b89c3be2d920148ad119c6464b..2b1f94fe4e4a351cfce3bd6122a11ae14b9bd703 100644 (file)
@@ -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;
 
index 0e5ccfff1a1a50bee65c9180e11d1304f548863c..42dbfd122de5469cce312a477c5fcbc367dfb654 100644 (file)
@@ -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)
index c4337e32055ef863893b766e66863c5b5039a386..90fcad481850e92b8aa228158bca9b7246ffaa94 100644 (file)
@@ -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);
index 9089ce551f2f992e8707c843457d7aab22ed0336..947d71522109c78a7026f32482ecd0a0c64e8a22 100644 (file)
@@ -367,9 +367,12 @@ static const Parameter s_params[] =
       "<file> 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,
       "<type> 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());
index 96cbdc53ab54b11e3d149d30fa29a035539c4ba9..55214f0b50339c6da23678bb98237bcf40d339b3 100644 (file)
@@ -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();