Squashed commit of the following:
commit
dcb8788f355a62d51885ee1d399a7cab90f4ed45
Author: Serhii Lysenko <selysenk@cisco.com>
Date: Mon Oct 5 17:26:20 2020 +0300
trace: skip trace reload if no initial config present
#include "target_based/host_attributes.h"
#include "time/periodic.h"
#include "trace/trace_api.h"
+#include "trace/trace_config.h"
+#include "trace/trace_logger.h"
#include "utils/util.h"
#include "utils/safec.h"
else
LogMessage("No host attribute table loaded\n");
+ if ( !old or !old->trace_config or !old->trace_config->initialized )
+ {
+ LogMessage("== WARNING: Trace module was not configured during "
+ "initial startup. Ignoring the new trace configuration.\n");
+ sc->trace_config->clear();
+ }
+
PluginManager::reload_so_plugins_cleanup(sc);
SnortConfig::set_conf(sc);
TraceApi::thread_reinit(sc->trace_config);
#include "target_based/host_attributes.h"
#include "time/periodic.h"
#include "trace/trace_api.h"
+#include "trace/trace_config.h"
+#include "trace/trace_logger.h"
#include "utils/util.h"
#ifdef PIGLET
if ( fname )
{
+ bool uninitialized_trace = !other_conf->trace_config or
+ !other_conf->trace_config->initialized;
+
Shell sh = Shell(fname);
sh.configure(sc, false, true);
+ if ( uninitialized_trace )
+ {
+ LogMessage("== WARNING: Trace module was not configured during "
+ "initial startup. Ignoring the new trace configuration.\n");
+ sc->trace_config->clear();
+ }
+
if ( ModuleManager::get_errors() || !sc->verify() )
{
sc->cloned = true;
return false;
}
+void TraceConfig::clear()
+{
+ clear_traces();
+ initialized = false;
+ delete logger_factory;
+ logger_factory = nullptr;
+}
+
void TraceConfig::clear_traces()
{
for ( auto& trace : traces )
bool set_trace(const std::string& module_name,
const std::string& trace_option_name, uint8_t trace_level);
+ void clear();
void clear_traces();
public:
snort::TraceLoggerFactory* logger_factory = nullptr;
snort::PacketConstraints* constraints = nullptr;
bool log_ntuple = false;
-
+ bool initialized = false;
private:
Traces traces;
};
trace_parser->finalize_constraints();
}
+ trace_parser->get_trace_config().initialized = true;
+
delete trace_parser;
trace_parser = nullptr;
}
static int set(lua_State* L)
{
+ const SnortConfig* sc = SnortConfig::get_conf();
+
+ if ( !sc->trace_config->initialized )
+ {
+ LogMessage("== WARNING: Trace module was not configured during "
+ "initial startup. Ignoring the new trace configuration.\n");
+ return 0;
+ }
+
// Create an overlay TraceConfig based on the current configuration
// It will be set in a SnortConfig during TraceSwap execution and owned by it after
- const SnortConfig* sc = SnortConfig::get_conf();
TraceConfig* trace_config = new TraceConfig(sc->overlay_trace_config
? *sc->overlay_trace_config : *sc->trace_config);