Squashed commit of the following:
commit
dd6cf66f0414833b39cf2691b8c11c71f9b4bc8d
Author: Silviu Minut <sminut@cisco.com>
Date: Thu Oct 1 17:03:09 2020 -0400
rna: set the thread local fingerprint processors during reload_config
#include "log/messages.h"
#include "lua/lua.h"
#include "main/snort_config.h"
+#include "main/snort.h"
#include "managers/module_manager.h"
#include "utils/util.h"
return ss.str();
}
+bool FpProcReloadTuner::tinit()
+{
+ set_tcp_fp_processor(mod_conf->tcp_processor);
+ set_ua_fp_processor(mod_conf->ua_processor);
+ return false; // no work to do after this
+}
+
static const Command rna_cmds[] =
{
{ "dump_macs", dump_mac_cache, nullptr,
if ( mod_conf->ua_processor )
mod_conf->ua_processor->make_mpse(sc);
+
+ if ( (mod_conf->tcp_processor || mod_conf->ua_processor) && Snort::is_reloading() )
+ {
+ fprt.mod_conf = mod_conf;
+ sc->register_reload_resource_tuner(fprt);
+ }
+
}
if ( index > 0 and mod_conf->tcp_processor and !strcmp(fqn, "rna.tcp_fingerprints") )
#define RNA_MODULE_H
#include "framework/module.h"
+#include "main/snort_config.h"
#include "main/snort_debug.h"
#include "profiler/profiler.h"
extern THREAD_LOCAL snort::ProfileStats rna_perf_stats;
extern THREAD_LOCAL const snort::Trace* rna_trace;
+
+// A tuner for initializing fingerprint processors during reload
+class FpProcReloadTuner : public snort::ReloadResourceTuner
+{
+public:
+ FpProcReloadTuner() = default;
+
+ bool tinit() override;
+
+ bool tune_packet_context() override
+ { return true; }
+
+ bool tune_idle_context() override
+ { return true; }
+
+ RnaModuleConfig* mod_conf = nullptr;
+};
+
class RnaModule : public snort::Module
{
public:
RawFingerprint fingerprint;
+ FpProcReloadTuner fprt;
+
bool is_valid_fqn(const char* fqn) const;
};
#include <CppUTest/TestHarness.h>
#include <CppUTestExt/MockSupport.h>
+void set_tcp_fp_processor(TcpFpProcessor*) { }
+void set_ua_fp_processor(UaFpProcessor*) { }
+
+namespace snort
+{
+ bool Snort::is_reloading() { return false; }
+}
+
TEST_GROUP(rna_module_test)
{
};