InitTag();
EventTrace_Init();
+ populate_instance_maps();
+
memory::MemoryCap::thread_init();
EventManager::open_outputs();
IpsManager::setup_options(sc);
daq_instance->finalize_message(msg, DAQ_VERDICT_BLOCK);
}
+ invalidate_instance_maps();
+
DetectionEngine::idle();
InspectorManager::thread_stop(sc);
InspectorManager::thread_term();
void ThreadConfig::implement_thread_affinity(SThreadType, unsigned) { }
void ThreadConfig::apply_thread_policy(SThreadType , unsigned ) { }
void ThreadConfig::set_instance_tid(int) { }
+void populate_instance_maps() { }
+void invalidate_instance_maps() { }
}
bool FlowControl::move_to_allowlist(snort::Flow*) { return true; }
#include "thread.h"
+#include <fstream>
+#include <iostream>
#include <sys/stat.h>
+#include "log/messages.h"
+
+#include "snort.h"
#include "snort_config.h"
#include "thread_config.h"
+#define INST_MAP_NAME "instance_mappings.csv"
+
//-------------------------------------------------------------------------
// FIXIT-L instance_id zero indicates main thread during parse time and the
// first packet thread during runtime. not sure if i'm ok with that.
namespace snort
{
+
+void populate_instance_maps()
+{
+ std::string path;
+
+ get_instance_file(path, INST_MAP_NAME);
+
+ std::ofstream inst_file;
+ inst_file.open(path);
+
+ inst_file << "pid, snort process number, instance_id, relative_instance_id, max_instances\n";
+ inst_file << getpid() << ", ";
+ inst_file << Snort::get_process_id() << ", ";
+ inst_file << instance_id << ", ";
+ inst_file << get_relative_instance_number() << ", ";
+ inst_file << ThreadConfig::get_instance_max();
+ inst_file << "\n";
+
+ inst_file.close();
+}
+
+void invalidate_instance_maps()
+{
+ std::string path;
+
+ get_instance_file(path, INST_MAP_NAME);
+ std::ofstream inst_file;
+ inst_file.open(path);
+ inst_file << "(instance is inactive or has terminated)\n";
+ inst_file.close();
+}
+
unsigned get_instance_id()
{ return instance_id; }
namespace snort
{
+void populate_instance_maps();
+void invalidate_instance_maps();
+
SO_PUBLIC unsigned get_instance_id();
SO_PUBLIC unsigned get_relative_instance_number();
SO_PUBLIC SThreadType get_thread_type();