From: Michael Altizer (mialtize) Date: Mon, 19 Aug 2019 19:31:44 +0000 (-0400) Subject: Merge pull request #1681 in SNORT/snort3 from ~NEHASH4/snort3:CLI_DAQ_ANALYZER to... X-Git-Tag: 3.0.0-259~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ae6178a9f3b87f8bbbf43ef9cb31b22343ad88e;p=thirdparty%2Fsnort3.git Merge pull request #1681 in SNORT/snort3 from ~NEHASH4/snort3:CLI_DAQ_ANALYZER to master Squashed commit of the following: commit 92a97c04e110ddcf808fb0be4052d960ffba6699 Author: Neha Sharma Date: Mon Aug 19 13:51:06 2019 -0400 analyzer_command: Import into snort namespace and add the ability to retrieve the DAQ instance from an Analyzer --- diff --git a/src/main/ac_shell_cmd.h b/src/main/ac_shell_cmd.h index c8e99ea70..29b21fc98 100644 --- a/src/main/ac_shell_cmd.h +++ b/src/main/ac_shell_cmd.h @@ -26,18 +26,18 @@ #include "main/analyzer.h" #include "main/analyzer_command.h" -class ACShellCmd : public AnalyzerCommand +class ACShellCmd : public snort::AnalyzerCommand { public: ACShellCmd() = delete; - ACShellCmd(int fd, AnalyzerCommand* ac_cmd); + ACShellCmd(int fd, snort::AnalyzerCommand* ac_cmd); void execute(Analyzer&) override; const char* stringify() override { return ac->stringify(); } ~ACShellCmd() override; private: int control_fd = -1; - AnalyzerCommand* ac; + snort::AnalyzerCommand* ac; }; #endif diff --git a/src/main/analyzer.h b/src/main/analyzer.h index 55ebb66db..f024c2e3e 100644 --- a/src/main/analyzer.h +++ b/src/main/analyzer.h @@ -34,7 +34,6 @@ #include "thread.h" -class AnalyzerCommand; class ContextSwitcher; class OopsHandler; class RetryQueue; @@ -42,6 +41,7 @@ class Swapper; namespace snort { +class AnalyzerCommand; class SFDAQInstance; struct Packet; struct SnortConfig; @@ -80,7 +80,7 @@ public: void set_pause_after_cnt(uint64_t msg_cnt) { pause_after_cnt = msg_cnt; } void set_skip_cnt(uint64_t msg_cnt) { skip_cnt = msg_cnt; } - void execute(AnalyzerCommand*); + void execute(snort::AnalyzerCommand*); void post_process_packet(snort::Packet*); bool process_rebuilt_packet(snort::Packet*, const DAQ_PktHdr_t*, const uint8_t* pkt, uint32_t pktlen); @@ -96,6 +96,7 @@ public: void reload_daq(); void reinit(snort::SnortConfig*); void rotate(); + snort::SFDAQInstance* get_daq_instance() { return daq_instance; } private: void analyze(); @@ -112,13 +113,13 @@ private: void init_unprivileged(); void term(); void show_source(); - void cache_analyzer_command(AnalyzerCommand* aci) { ac = aci; } - void add_command_to_completed_queue(AnalyzerCommand *ac); - AnalyzerCommand* get_analyzer_command() { return ac; } + void cache_analyzer_command(snort::AnalyzerCommand* aci) { ac = aci; } + void add_command_to_completed_queue(snort::AnalyzerCommand *ac); + snort::AnalyzerCommand* get_analyzer_command() { return ac; } public: - std::queue completed_work_queue; + std::queue completed_work_queue; std::mutex completed_work_queue_mutex; - std::queue pending_work_queue; + std::queue pending_work_queue; private: std::atomic state; @@ -135,7 +136,7 @@ private: RetryQueue* retry_queue = nullptr; OopsHandler* oops_handler = nullptr; ContextSwitcher* switcher = nullptr; - AnalyzerCommand* ac = nullptr; + snort::AnalyzerCommand* ac = nullptr; std::mutex pending_work_queue_mutex; }; diff --git a/src/main/analyzer_command.cc b/src/main/analyzer_command.cc index ae2323bba..fb0fab7c0 100644 --- a/src/main/analyzer_command.cc +++ b/src/main/analyzer_command.cc @@ -113,3 +113,7 @@ ACDAQSwap::~ACDAQSwap() snort::LogMessage("== daq module reload complete\n"); } +snort::SFDAQInstance* snort::AnalyzerCommand::get_daq_instance(Analyzer& analyzer) +{ + return analyzer.get_daq_instance(); +} diff --git a/src/main/analyzer_command.h b/src/main/analyzer_command.h index d2ce19d8a..3b0f1118b 100644 --- a/src/main/analyzer_command.h +++ b/src/main/analyzer_command.h @@ -26,6 +26,10 @@ class Analyzer; class Request; class Swapper; +namespace snort +{ +class SFDAQInstance; + class AnalyzerCommand { public: @@ -36,12 +40,14 @@ public: unsigned put() { return --ref_count; } bool is_complete() { return completion_status; } void set_completion_status(bool status) { completion_status = status; } + SO_PUBLIC static snort::SFDAQInstance* get_daq_instance(Analyzer& analyzer); private: unsigned ref_count = 0; bool completion_status = true; }; +} -class ACGetStats : public AnalyzerCommand +class ACGetStats : public snort::AnalyzerCommand { public: void execute(Analyzer&) override; @@ -49,14 +55,14 @@ public: ~ACGetStats() override; }; -class ACPause : public AnalyzerCommand +class ACPause : public snort::AnalyzerCommand { public: void execute(Analyzer&) override; const char* stringify() override { return "PAUSE"; } }; -class ACResume : public AnalyzerCommand +class ACResume : public snort::AnalyzerCommand { public: ACResume(uint64_t msg_cnt): msg_cnt(msg_cnt) { } @@ -66,14 +72,14 @@ private: uint64_t msg_cnt; }; -class ACRotate : public AnalyzerCommand +class ACRotate : public snort::AnalyzerCommand { public: void execute(Analyzer&) override; const char* stringify() override { return "ROTATE"; } }; -class ACRun : public AnalyzerCommand +class ACRun : public snort::AnalyzerCommand { public: ACRun() = delete; @@ -84,21 +90,21 @@ private: bool paused = false; }; -class ACStart : public AnalyzerCommand +class ACStart : public snort::AnalyzerCommand { public: void execute(Analyzer&) override; const char* stringify() override { return "START"; } }; -class ACStop : public AnalyzerCommand +class ACStop : public snort::AnalyzerCommand { public: void execute(Analyzer&) override; const char* stringify() override { return "STOP"; } }; -class ACSwap : public AnalyzerCommand +class ACSwap : public snort::AnalyzerCommand { public: ACSwap() = delete; @@ -112,7 +118,7 @@ private: bool from_shell; }; -class ACDAQSwap : public AnalyzerCommand +class ACDAQSwap : public snort::AnalyzerCommand { public: void execute(Analyzer&) override; @@ -123,7 +129,7 @@ public: namespace snort { // from main.cc -SO_PUBLIC void main_broadcast_command(AnalyzerCommand* ac, bool from_shell = false); +SO_PUBLIC void main_broadcast_command(snort::AnalyzerCommand* ac, bool from_shell = false); } #endif