using namespace snort;
+extern HostCacheMac* host_cache_mac_ptr;
+
DataPurgeAC::~DataPurgeAC()
{
- auto rna_ins = (RnaInspector*) InspectorManager::get_inspector(RNA_NAME, true);
- RnaPnd* pnd = rna_ins->get_pnd();
- delete pnd->host_cache_mac_ptr;
- pnd->host_cache_mac_ptr = host_cache_mac;
- set_host_cache_mac(host_cache_mac);
+ delete host_cache_mac_ptr;
+ host_cache_mac_ptr = mac_cache;
+ set_host_cache_mac(mac_cache);
}
bool DataPurgeAC::execute(Analyzer&, void**)
{
- set_host_cache_mac(host_cache_mac);
+ set_host_cache_mac(mac_cache);
return true;
}
-
{
public:
- DataPurgeAC(HostCacheMac* hcm) : host_cache_mac(hcm) { }
+ DataPurgeAC(HostCacheMac* new_cache) : mac_cache(new_cache) { }
+
~DataPurgeAC() override;
bool execute(Analyzer&, void**) override;
const char* stringify() override { return "DATA_PURGE"; }
private:
- HostCacheMac* host_cache_mac;
+ HostCacheMac* mac_cache;
};
#endif
#include "rna_fingerprint_tcp.h"
#include "rna_fingerprint_ua.h"
#include "rna_fingerprint_udp.h"
+#include "rna_mac_cache.h"
#include "rna_module.h"
#include "rna_pnd.h"
// class stuff
//-------------------------------------------------------------------------
+HostCacheMac* host_cache_mac_ptr = nullptr;
+
RnaInspector::RnaInspector(RnaModule* mod)
{
mod_conf = mod->get_config();
// tinit is not called during reload, so pass processor pointers to threads via reload tuner
if ( Snort::is_reloading() && InspectorManager::get_inspector(RNA_NAME, true) )
- sc->register_reload_resource_tuner(new FpProcReloadTuner(*mod_conf, pnd->host_cache_mac_ptr));
+ sc->register_reload_resource_tuner(new FpProcReloadTuner(*mod_conf));
return true;
}
set_tcp_fp_processor(mod_conf->tcp_processor);
set_ua_fp_processor(mod_conf->ua_processor);
set_udp_fp_processor(mod_conf->udp_processor);
- set_host_cache_mac(pnd->host_cache_mac_ptr);
+ set_host_cache_mac(host_cache_mac_ptr);
}
void RnaInspector::tterm()
{
// global initialization
RNAFlow::init();
+ host_cache_mac_ptr = new HostCacheMac(MAC_CACHE_INITIAL_SIZE);
+ set_host_cache_mac(host_cache_mac_ptr);
}
static void rna_inspector_pterm()
{
// global cleanup
+ delete host_cache_mac_ptr;
}
static Inspector* rna_inspector_ctor(Module* m)
static int dump_mac_cache(lua_State* L)
{
RnaModule* mod = (RnaModule*) ModuleManager::get_module(RNA_NAME);
- if ( mod )
+ Inspector* rna = InspectorManager::get_inspector(RNA_NAME, true);
+ if ( rna && mod )
mod->log_mac_cache( luaL_optstring(L, 1, nullptr) );
return 0;
}
static int purge_data(lua_State* L)
{
- RnaModule* mod = (RnaModule*) ModuleManager::get_module(RNA_NAME);
- if ( mod )
+ Inspector* rna = InspectorManager::get_inspector(RNA_NAME, true);
+ if ( rna )
{
HostCacheMac* mac_cache = new HostCacheMac(MAC_CACHE_INITIAL_SIZE);
main_broadcast_command(new DataPurgeAC(mac_cache), (L != nullptr));
set_tcp_fp_processor(mod_conf.tcp_processor);
set_ua_fp_processor(mod_conf.ua_processor);
set_udp_fp_processor(mod_conf.udp_processor);
- set_host_cache_mac(host_cache_mac_ptr);
return false; // no work to do after this
}
static int delete_mac_host(lua_State* L)
{
- RnaModule* mod = (RnaModule*) ModuleManager::get_module(RNA_NAME);
- if ( mod )
+ Inspector* rna = InspectorManager::get_inspector(RNA_NAME, true);
+ if ( rna )
{
uint8_t mac[MAC_SIZE] = {0};
static int delete_mac_host_proto(lua_State* L)
{
- RnaModule* mod = (RnaModule*) ModuleManager::get_module(RNA_NAME);
- if ( mod )
+ Inspector* rna = InspectorManager::get_inspector(RNA_NAME, true);
+ if ( rna )
{
uint8_t mac[MAC_SIZE] = {0};
class FpProcReloadTuner : public snort::ReloadResourceTuner
{
public:
- explicit FpProcReloadTuner(RnaModuleConfig& mod_conf, HostCacheMac* ptr = nullptr)
- : mod_conf(mod_conf), host_cache_mac_ptr(ptr) { }
+ explicit FpProcReloadTuner(RnaModuleConfig& mod_conf)
+ : mod_conf(mod_conf) { }
~FpProcReloadTuner() override = default;
bool tinit() override;
private:
RnaModuleConfig& mod_conf;
- HostCacheMac* host_cache_mac_ptr = nullptr;
};
class RnaModule : public snort::Module
#include <algorithm>
+#include "main/snort.h"
#include "protocols/arp.h"
#include "protocols/bpdu.h"
#include "protocols/cdp.h"
logger(RnaLogger(en)), filter(DiscoveryFilter(cp)), conf(rc)
{
update_timeout = (rc ? rc->update_timeout : 0);
- host_cache_mac_ptr = new HostCacheMac(MAC_CACHE_INITIAL_SIZE);
- set_host_cache_mac(host_cache_mac_ptr);
}
RnaPnd::~RnaPnd()
-{
- delete host_cache_mac_ptr;
- host_cache_mac_ptr = nullptr;
- set_host_cache_mac(nullptr);
-}
+{ }
void RnaPnd::analyze_appid_changes(DataEvent& event)
{
static HostCacheIp::Data find_or_create_host_tracker(const snort::SfIp&, bool&);
- HostCacheMac* host_cache_mac_ptr = nullptr;
-
private:
// generate change event for single host
void generate_change_host_update(RnaTracker*, const snort::Packet*,
void snort::main_broadcast_command(AnalyzerCommand*, bool) { }
void set_host_cache_mac(HostCacheMac*) { }
-
+Inspector* InspectorManager::get_inspector(const char*, bool, const SnortConfig*)
+{
+ return nullptr;
+}
#endif