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();
void print_config()
{
- if ( snort::SnortConfig::get_conf()->log_verbose() )
+ if ( snort::SnortConfig::log_verbose() )
{
std::lock_guard<std::mutex> cache_lock(cache_mutex);
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());
}
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;
*/
void LogMessage(const char* format,...)
{
- if ( log_quiet() )
+ if ( SnortConfig::log_quiet() )
return;
va_list ap;
void LogMessage(FILE* fh, const char* format,...)
{
- if ( fh == stdout and log_quiet() )
+ if ( fh == stdout and SnortConfig::log_quiet() )
return;
va_list ap;
va_start(ap, format);
- if ( log_syslog() )
+ if ( SnortConfig::log_syslog() )
{
char buf[STD_BUF+1];
vsnprintf(buf, STD_BUF, format, ap);
va_start(ap, format);
- if ( log_syslog() )
+ if ( SnortConfig::log_syslog() )
{
char buf[STD_BUF+1];
vsnprintf(buf, STD_BUF, format, ap);
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);
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();
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);
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());
PluginManager::load_so_plugins(sc);
- if ( sc->logging_flags & LOGGING_FLAG__SHOW_PLUGINS )
+ if ( SnortConfig::log_show_plugins() )
{
ModuleManager::dump_modules();
PluginManager::dump_plugins();
// 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);
return nullptr;
}
- if ( sc->log_verbose() )
+ if ( SnortConfig::log_verbose() )
InspectorManager::print_config(sc);
// FIXIT-L is this still needed?
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;
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;
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;
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;
openlog("snort", LOG_PID | LOG_CONS, LOG_DAEMON);
- logging_flags |= LOGGING_FLAG__SYSLOG;
+ enable_log_syslog();
syslog_configured = true;
}
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;
//------------------------------------------------------
#else
uint32_t output_flags = 0;
#endif
- uint32_t logging_flags = 0;
-
uint32_t tagged_packet_limit = 256;
uint16_t event_trace_max = 0;
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);
void set_uid(const char*);
void set_umask(uint32_t);
void set_utc(bool);
- void set_verbose(bool);
void set_overlay_trace_config(TraceConfig*);
//------------------------------------------------------
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; }
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; }
};
}
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") )
{
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);
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;
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;
}
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);
{
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());
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();
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)");
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);
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;
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;
// "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;
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);
}
//-------------------------------------------------------------------------