]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #2568 in SNORT/snort3 from ~SVLASIUK/snort3:global_log_quiet to...
authorBhagya Tholpady (bbantwal) <bbantwal@cisco.com>
Mon, 2 Nov 2020 16:07:10 +0000 (16:07 +0000)
committerBhagya Tholpady (bbantwal) <bbantwal@cisco.com>
Mon, 2 Nov 2020 16:07:10 +0000 (16:07 +0000)
Squashed commit of the following:

commit e3d825a4b74e8c8d806a88bf877204bbf29ebdec
Author: Serhii Vlasiuk <svlasiuk@cisco.com>
Date:   Wed Oct 28 14:22:20 2020 +0200

    main: set up logging flags globally to avoid dependencies on a particular SnortConfig object

15 files changed:
src/helpers/process.cc
src/host_tracker/host_cache.h
src/log/log_text.cc
src/log/messages.cc
src/main/modules.cc
src/main/shell.cc
src/main/snort.cc
src/main/snort_config.cc
src/main/snort_config.h
src/main/snort_module.cc
src/memory/memory_cap.cc
src/packet_io/sfdaq_instance.cc
src/parser/parser.cc
src/trace/trace_module.cc
src/utils/stats.cc

index b07ec2aaa0cccc6e3de66809032964f5de48eee4..0a8d7a00a74a9f677c27d9965fb7ad56d587c056 100644 (file)
@@ -536,7 +536,7 @@ void daemonize()
     if ( errno )
         FatalError("failed to setsid - %s", get_error(errno));
 
-    if ( SnortConfig::get_conf()->log_quiet() or SnortConfig::get_conf()->log_syslog() )
+    if ( SnortConfig::log_quiet() or SnortConfig::log_syslog() )
         snuff_stdio();
 
     pid_t ppid = getppid();
index 553412aea386965f64d5e0f588a32d3418e946c9..0f7a86a9cf8d5d3d9f13ecbf4cbc2233e7ab672f 100644 (file)
@@ -75,7 +75,7 @@ public:
 
     void print_config()
     {
-        if ( snort::SnortConfig::get_conf()->log_verbose() )
+        if ( snort::SnortConfig::log_verbose() )
         {
             std::lock_guard<std::mutex> cache_lock(cache_mutex);
 
index 6dfc9bbe670ea120317b2b1a34668130badc0926..546db57c1737ebb34f03eba9640eb37f3ec437d8 100644 (file)
@@ -152,7 +152,7 @@ void Log2ndHeader(TextLog* log, Packet* p)
     if ( SFDAQ::get_base_protocol() == DLT_EN10MB )
         LogEthHeader(log, p);
 
-    else if ( p->context->conf->log_verbose() )
+    else if ( SnortConfig::log_verbose() )
         ErrorMessage("Datalink %i (not supported)\n", SFDAQ::get_base_protocol());
 }
 
index 18f7d94c2dd0490f302589fc01acec9bf03802ee..7b5fb366c8efacd10bc298f48664534884a810e5 100644 (file)
@@ -174,21 +174,9 @@ void ReloadError(const char* format, ...)
         FatalError("%s\n", buf);
 }
 
-static bool log_syslog()
-{
-    const SnortConfig* sc = SnortConfig::get_conf();
-    return sc and sc->log_syslog();
-}
-
-static bool log_quiet()
-{
-    const SnortConfig* sc = SnortConfig::get_conf();
-    return sc and sc->log_quiet();
-}
-
 static void WriteLogMessage(FILE* fh, bool prefer_fh, const char* format, va_list& ap)
 {
-    if ( prefer_fh or !log_syslog() )
+    if ( prefer_fh or !SnortConfig::log_syslog() )
     {
         vfprintf(fh, format, ap);
         return;
@@ -211,7 +199,7 @@ static void WriteLogMessage(FILE* fh, bool prefer_fh, const char* format, va_lis
  */
 void LogMessage(const char* format,...)
 {
-    if ( log_quiet() )
+    if ( SnortConfig::log_quiet() )
         return;
 
     va_list ap;
@@ -224,7 +212,7 @@ void LogMessage(const char* format,...)
 
 void LogMessage(FILE* fh, const char* format,...)
 {
-    if ( fh == stdout and log_quiet() )
+    if ( fh == stdout and SnortConfig::log_quiet() )
         return;
 
     va_list ap;
@@ -251,7 +239,7 @@ void WarningMessage(const char* format,...)
 
     va_start(ap, format);
 
-    if ( log_syslog() )
+    if ( SnortConfig::log_syslog() )
     {
         char buf[STD_BUF+1];
         vsnprintf(buf, STD_BUF, format, ap);
@@ -282,7 +270,7 @@ void ErrorMessage(const char* format,...)
 
     va_start(ap, format);
 
-    if ( log_syslog() )
+    if ( SnortConfig::log_syslog() )
     {
         char buf[STD_BUF+1];
         vsnprintf(buf, STD_BUF, format, ap);
@@ -326,10 +314,8 @@ void ErrorMessage(const char* format,...)
 
     buf[STD_BUF] = '\0';
 
-    if ( log_syslog() )
-    {
+    if ( SnortConfig::log_syslog() )
         syslog(LOG_CONS | LOG_DAEMON | LOG_ERR, "FATAL ERROR: %s", buf);
-    }
     else
     {
         fprintf(stderr, "FATAL: %s", buf);
index 30687149428198a502221b0ba7c26a4d5a761fbe..b38a0983c42a0bd47a2c11e1ad6a612b51d18226 100644 (file)
@@ -772,7 +772,10 @@ bool OutputModule::set(const char*, Value& v, SnortConfig* sc)
         v.update_mask(sc->output_flags, OUTPUT_FLAG__VERBOSE_DUMP);
 
     else if ( v.is("quiet") )
-        v.update_mask(sc->logging_flags, LOGGING_FLAG__QUIET);
+    {
+        if ( v.get_bool() )
+            SnortConfig::set_log_quiet(true);
+    }
 
     else if ( v.is("logdir") )
         sc->log_dir = v.get_string();
@@ -789,7 +792,7 @@ bool OutputModule::set(const char*, Value& v, SnortConfig* sc)
     else if ( v.is("verbose") )
     {
         if ( v.get_bool() )
-            v.update_mask(sc->logging_flags, LOGGING_FLAG__VERBOSE);
+            SnortConfig::enable_log_verbose();
     }
     else if ( v.is("wide_hex_dump") )
         v.update_mask(sc->output_flags, OUTPUT_FLAG__WIDE_HEX);
index c924536ffd76d19ed1429568e2142b32d2ca4e1d..f42f541d856f1a6367d78143886d3a189960a2fa 100644 (file)
@@ -439,7 +439,7 @@ bool Shell::configure(SnortConfig* sc, bool is_fatal, bool is_root)
     if ( !overrides.empty() )
         load_string(lua, overrides.c_str());
 
-    if ( SnortConfig::get_conf()->log_verbose() )
+    if ( SnortConfig::log_verbose() )
         print_whitelist();
 
     load_string(lua, ModuleManager::get_lua_finalize());
index 9d435a5272a3066027590a6729854b0cd20793e2..09507d4c87bcfb45e8f24661185a84ded40ba5a7 100644 (file)
@@ -161,7 +161,7 @@ void Snort::init(int argc, char** argv)
 
     PluginManager::load_so_plugins(sc);
 
-    if ( sc->logging_flags & LOGGING_FLAG__SHOW_PLUGINS )
+    if ( SnortConfig::log_show_plugins() )
     {
         ModuleManager::dump_modules();
         PluginManager::dump_plugins();
@@ -193,7 +193,7 @@ void Snort::init(int argc, char** argv)
     // Must be after CodecManager::instantiate()
     if ( !InspectorManager::configure(sc) )
         ParseError("can't initialize inspectors");
-    else if ( sc->log_verbose() )
+    else if ( SnortConfig::log_verbose() )
         InspectorManager::print_config(sc);
 
     InspectorManager::prepare_controls(sc);
@@ -484,7 +484,7 @@ SnortConfig* Snort::get_reload_config(const char* fname, const char* plugin_path
         return nullptr;
     }
 
-    if ( sc->log_verbose() )
+    if ( SnortConfig::log_verbose() )
         InspectorManager::print_config(sc);
 
     // FIXIT-L is this still needed?
index 163fd79bf031dfd5758b1a8f2a25ecbade7cd05f..ced01551d0ae2aa1533785a4995d7c6a633cd8d0 100644 (file)
@@ -90,6 +90,7 @@ using namespace snort;
 static THREAD_LOCAL const SnortConfig* snort_conf = nullptr;
 
 uint32_t SnortConfig::warning_flags = 0;
+uint32_t SnortConfig::logging_flags = 0;
 
 static std::vector<ScratchAllocator*> scratch_handlers;
 
@@ -352,7 +353,6 @@ void SnortConfig::merge(SnortConfig* cmd_line)
 
     run_flags |= cmd_line->run_flags;
     output_flags |= cmd_line->output_flags;
-    logging_flags |= cmd_line->logging_flags;
 
     include_path = cmd_line->include_path;
     stdin_rules = cmd_line->stdin_rules;
@@ -647,14 +647,6 @@ void SnortConfig::set_obfuscation_mask(const char* mask)
     obfuscation_net.set(mask);
 }
 
-void SnortConfig::set_quiet(bool enabled)
-{
-    if (enabled)
-        logging_flags |= LOGGING_FLAG__QUIET;
-    else
-        logging_flags &= ~LOGGING_FLAG__QUIET;
-}
-
 void SnortConfig::set_gid(const char* args)
 {
     struct group* gr;
@@ -779,16 +771,6 @@ void SnortConfig::set_utc(bool enabled)
         output_flags &= ~OUTPUT_FLAG__USE_UTC;
 }
 
-void SnortConfig::set_verbose(bool enabled)
-{
-    if (enabled)
-    {
-        logging_flags |= LOGGING_FLAG__VERBOSE;
-    }
-    else
-        logging_flags &= ~LOGGING_FLAG__VERBOSE;
-}
-
 void SnortConfig::set_overlay_trace_config(TraceConfig* tc)
 {
     delete overlay_trace_config;
@@ -923,7 +905,7 @@ void SnortConfig::enable_syslog()
 
     openlog("snort", LOG_PID | LOG_CONS, LOG_DAEMON);
 
-    logging_flags |= LOGGING_FLAG__SYSLOG;
+    enable_log_syslog();
     syslog_configured = true;
 }
 
index 46b08714369df70d94a8af1ba5a7b769cb6b8e39..0dcc5252c2aba909ea22c90b0fe8348d4d548fcc 100644 (file)
@@ -208,10 +208,10 @@ public:
     void merge(SnortConfig*);
     void clone(const SnortConfig* const);
 
+private:
+    static uint32_t logging_flags;
+
 public:
-    //------------------------------------------------------
-    // non-reloadable stuff (single instance)
-    // FIXIT-L non-reloadable stuff should be made static
     static uint32_t warning_flags;
 
     //------------------------------------------------------
@@ -228,8 +228,6 @@ public:
 #else
     uint32_t output_flags = 0;
 #endif
-    uint32_t logging_flags = 0;
-
     uint32_t tagged_packet_limit = 256;
     uint16_t event_trace_max = 0;
 
@@ -475,7 +473,6 @@ public:
     void set_obfuscation_mask(const char*);
     void set_include_path(const char*);
     void set_process_all_events(bool);
-    void set_quiet(bool);
     void set_show_year(bool);
     void set_tunnel_verdicts(const char*);
     void set_treat_drop_as_alert(bool);
@@ -484,7 +481,6 @@ public:
     void set_uid(const char*);
     void set_umask(uint32_t);
     void set_utc(bool);
-    void set_verbose(bool);
     void set_overlay_trace_config(TraceConfig*);
 
     //------------------------------------------------------
@@ -554,16 +550,6 @@ public:
     bool adaptor_inline_test_mode() const
     { return run_flags & RUN_FLAG__INLINE_TEST; }
 
-    // logging stuff
-    bool log_syslog() const
-    { return logging_flags & LOGGING_FLAG__SYSLOG; }
-
-    bool log_verbose() const
-    { return logging_flags & LOGGING_FLAG__VERBOSE; }
-
-    bool log_quiet() const
-    { return logging_flags & LOGGING_FLAG__QUIET; }
-
     // event stuff
     uint32_t get_event_log_id() const
     { return event_log_id; }
@@ -730,6 +716,36 @@ public:
     SO_PUBLIC void register_reload_resource_tuner(ReloadResourceTuner*);
 
     static void cleanup_fatal_error();
+
+    // logging stuff
+    static void enable_log_syslog()
+    { logging_flags |= LOGGING_FLAG__SYSLOG; }
+
+    static bool log_syslog()
+    { return logging_flags & LOGGING_FLAG__SYSLOG; }
+
+    static void set_log_quiet(bool enabled)
+    { 
+        if (enabled)
+            logging_flags |= LOGGING_FLAG__QUIET;
+        else
+            logging_flags &= ~LOGGING_FLAG__QUIET;
+    }
+
+    static bool log_quiet()
+    { return logging_flags & LOGGING_FLAG__QUIET; }
+
+    static void enable_log_verbose()
+    { logging_flags |= LOGGING_FLAG__VERBOSE; }
+
+    static bool log_verbose()
+    { return logging_flags & LOGGING_FLAG__VERBOSE; }
+
+    static void enable_log_show_plugins()
+    { logging_flags |= LOGGING_FLAG__SHOW_PLUGINS; }
+
+    static bool log_show_plugins()
+    { return logging_flags & LOGGING_FLAG__SHOW_PLUGINS; }
 };
 }
 
index 4ab163b630dbb40ffc3225051d08bcf48a5de19d..edf693b6b47ca067f1a6c78319129894077b69d3 100644 (file)
@@ -756,7 +756,7 @@ bool SnortModule::set(const char*, Value& v, SnortConfig* sc)
         sc->run_flags |= RUN_FLAG__INLINE;
 
     else if ( v.is("-q") )
-        sc->set_quiet(true);
+        SnortConfig::set_log_quiet(true);
 
     else if ( v.is("-R") )
     {
@@ -789,7 +789,7 @@ bool SnortModule::set(const char*, Value& v, SnortConfig* sc)
         help_version(sc);
 
     else if ( v.is("-v") )
-        sc->set_verbose(true);
+        SnortConfig::enable_log_verbose();
 
     else if ( v.is("-X") )
         sc->set_dump_payload_verbose(true);
@@ -871,7 +871,7 @@ bool SnortModule::set(const char*, Value& v, SnortConfig* sc)
 
     else if ( v.is("--dump-config") )
     {
-        sc->set_quiet(true);
+        SnortConfig::set_log_quiet(true);
         sc->run_flags |= RUN_FLAG__TEST;
         if ( v.get_as_string() == "all" )
             sc->dump_config_type = DUMP_CONFIG_JSON_ALL;
@@ -881,7 +881,7 @@ bool SnortModule::set(const char*, Value& v, SnortConfig* sc)
 
     else if ( v.is("--dump-config-text") )
     {
-        sc->set_quiet(true);
+        SnortConfig::set_log_quiet(true);
         sc->run_flags |= RUN_FLAG__TEST;
         sc->dump_config_type = DUMP_CONFIG_TEXT;
     }
@@ -895,18 +895,18 @@ bool SnortModule::set(const char*, Value& v, SnortConfig* sc)
     else if ( v.is("--dump-rule-deps") )
     {
         sc->run_flags |= (RUN_FLAG__DUMP_RULE_DEPS | RUN_FLAG__TEST);
-        sc->set_quiet(true);
+        SnortConfig::set_log_quiet(true);
     }
     else if ( v.is("--dump-rule-meta") )
     {
         sc->run_flags |= (RUN_FLAG__DUMP_RULE_META | RUN_FLAG__TEST);
         sc->output_flags |= OUTPUT_FLAG__ALERT_REFS;
-        sc->set_quiet(true);
+        SnortConfig::set_log_quiet(true);
     }
     else if ( v.is("--dump-rule-state") )
     {
         sc->run_flags |= (RUN_FLAG__DUMP_RULE_STATE | RUN_FLAG__TEST);
-        sc->set_quiet(true);
+        SnortConfig::set_log_quiet(true);
     }
     else if ( v.is("--dump-version") )
         dump_version(sc);
@@ -918,7 +918,7 @@ bool SnortModule::set(const char*, Value& v, SnortConfig* sc)
     {
         sc->run_flags |= (RUN_FLAG__DUMP_MSG_MAP | RUN_FLAG__TEST);
         sc->output_flags |= OUTPUT_FLAG__ALERT_REFS;
-        sc->set_quiet(true);
+        SnortConfig::set_log_quiet(true);
     }
     else if ( v.is("--help") )
         help_basic(sc, v.get_string());
@@ -1072,7 +1072,7 @@ bool SnortModule::set(const char*, Value& v, SnortConfig* sc)
         sc->run_flags |= RUN_FLAG__SHOW_FILE_CODES;
 
     else if ( v.is("--show-plugins") )
-        sc->logging_flags |= LOGGING_FLAG__SHOW_PLUGINS;
+        SnortConfig::enable_log_show_plugins();
 
     else if ( v.is("--skip") )
         sc->pkt_skip = v.get_uint64();
index 9cbe0f35ab1630aea875383c131e0f06b77b1b63..89737f099f4b1e5414071b6cc3c8bdf2fa2ea3dd 100644 (file)
@@ -201,7 +201,7 @@ void MemoryCap::print()
     if ( !MemoryModule::is_active() )
         return;
 
-    bool verbose = SnortConfig::get_conf()->log_verbose();
+    bool verbose = SnortConfig::log_verbose();
 
     if ( verbose or mem_stats.allocations )
         LogLabel("memory (heap)");
index 38735fc126e4a69cb7264ec8ee03ef8be2e84398..226d6e7affe29de74ca9d719dbbb5e0e68fe9a57 100644 (file)
@@ -172,7 +172,7 @@ bool SFDAQInstance::start()
     pool_size = mpool_info.size;
     pool_available = mpool_info.available;
     assert(pool_size == pool_available);
-    if (SnortConfig::get_conf()->log_verbose())
+    if (SnortConfig::log_verbose())
     {
         LogMessage("Instance %d daq pool size: %d\n", get_instance_id(), pool_size);
         LogMessage("Instance %d daq batch size: %d\n", get_instance_id(), batch_size);
index f469e4ab86c0c5bbac125d3dd0aece012befd4d1..1e51dd90b9e5dc1152851584bc1b2ce8ab963206 100644 (file)
@@ -319,7 +319,6 @@ SnortConfig* ParseSnortConf(const SnortConfig* boot_conf, const char* fname, boo
 
     sc->run_flags = boot_conf->run_flags;
     sc->output_flags = boot_conf->output_flags;
-    sc->logging_flags = boot_conf->logging_flags;
     sc->tweaks = boot_conf->tweaks;
     sc->dump_config_type = boot_conf->dump_config_type;
 
index 88cf8cf445ab4db2f7dd71126d885554e9e3fd3d..1e04af5e760d3b430cdbd651975d11090b7152b4 100644 (file)
@@ -166,7 +166,7 @@ bool TraceModule::begin(const char* fqn, int, SnortConfig* sc)
         trace_parser = new TraceParser(*sc->trace_config);
 
         // Init default output type based on Snort run-mode
-        if ( sc->daemon_mode() or sc->log_syslog() )
+        if ( sc->daemon_mode() or SnortConfig::log_syslog() )
             log_output_type = OUTPUT_TYPE_SYSLOG;
         else
             log_output_type = OUTPUT_TYPE_STDOUT;
@@ -237,7 +237,7 @@ bool TraceModule::end(const char* fqn, int, SnortConfig* sc)
 
             // "output=syslog" config override case
             // do not closelog() here since it will be closed in Snort::clean_exit()
-            if ( !sc->log_syslog() and log_output_type == OUTPUT_TYPE_SYSLOG
+            if ( !SnortConfig::log_syslog() and log_output_type == OUTPUT_TYPE_SYSLOG
                 and !local_syslog )
             {
                 local_syslog = true;
index 18a52e21e1fce3c75a6637a663607c3cfa81bfa5..bc0b88a4c7ef15a11990c145658a98cde79237d6 100644 (file)
@@ -250,17 +250,15 @@ void PrintStatistics()
     DropStats();
     timing_stats();
 
-    SnortConfig* sc = SnortConfig::get_main_conf();
-
     // FIXIT-L can do flag saving with RAII (much cleaner)
-    int save_quiet_flag = sc->logging_flags & LOGGING_FLAG__QUIET;
-    sc->logging_flags &= ~LOGGING_FLAG__QUIET;
+    bool origin_log_quiet = SnortConfig::log_quiet();
+    SnortConfig::set_log_quiet(false);
 
     // once more for the main thread
     Profiler::consolidate_stats();
     Profiler::show_stats();
 
-    sc->logging_flags |= save_quiet_flag;
+    SnortConfig::set_log_quiet(origin_log_quiet);
 }
 
 //-------------------------------------------------------------------------