From: Russ Combs (rucombs) Date: Thu, 21 Mar 2019 23:33:46 +0000 (-0400) Subject: Merge pull request #1553 in SNORT/snort3 from ~BBANTWAL/snort3:offload_stats to master X-Git-Tag: 3.0.0-251~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e35edc9d852b201733286ed9a28a92e04dff029d;p=thirdparty%2Fsnort3.git Merge pull request #1553 in SNORT/snort3 from ~BBANTWAL/snort3:offload_stats to master Squashed commit of the following: commit a94be253698a7f9a43a4f59f51c21e030254e68c Author: Bhagya Tholpady Date: Mon Mar 18 21:02:50 2019 -0400 fix stats for thread --- diff --git a/src/detection/regex_offload.cc b/src/detection/regex_offload.cc index 71ad8c186..52def1566 100644 --- a/src/detection/regex_offload.cc +++ b/src/detection/regex_offload.cc @@ -38,6 +38,7 @@ #include "latency/packet_latency.h" #include "latency/rule_latency.h" #include "main/snort_config.h" +#include "managers/module_manager.h" // FIXIT-L this could be offloader specific struct RegexRequest @@ -136,7 +137,7 @@ bool MpseRegexOffload::get(snort::Packet*& p) else if (resp_ret == snort::Mpse::MPSE_RESP_COMPLETE_FAIL) { - if (!c->searches.can_fallback()) + if (c->searches.can_fallback()) { // FIXIT-M Add peg counts to record offload search fallback attempts c->searches.search_sync(); @@ -271,7 +272,7 @@ void ThreadRegexOffload::worker(RegexRequest* req, snort::SnortConfig* initial_c if (resp_ret == snort::Mpse::MPSE_RESP_COMPLETE_FAIL) { - if (!batch.can_fallback()) + if (batch.can_fallback()) { // FIXIT-M Add peg counts to record offload search fallback attempts batch.search_sync(); @@ -282,6 +283,7 @@ void ThreadRegexOffload::worker(RegexRequest* req, snort::SnortConfig* initial_c batch.items.clear(); req->offload = false; } + snort::ModuleManager::accumulate_offload("search_engine"); // FIXIT-M break this over-coupling. In reality we shouldn't be evaluating latency in offload. PacketLatency::tterm(); diff --git a/src/managers/module_manager.cc b/src/managers/module_manager.cc index 24734724e..166d31697 100644 --- a/src/managers/module_manager.cc +++ b/src/managers/module_manager.cc @@ -1449,6 +1449,18 @@ void ModuleManager::accumulate(SnortConfig*) std::lock_guard lock(stats_mutex); } +void ModuleManager::accumulate_offload(const char* name) +{ + ModHook* p = get_hook(name); + if ( p ) + { + std::lock_guard lock(stats_mutex); + p->mod->prep_counts(); + p->mod->sum_stats(true); + } + std::lock_guard lock(stats_mutex); +} + void ModuleManager::reset_stats(SnortConfig*) { for ( auto p : s_modules ) diff --git a/src/managers/module_manager.h b/src/managers/module_manager.h index 6fd633541..345736e77 100644 --- a/src/managers/module_manager.h +++ b/src/managers/module_manager.h @@ -80,6 +80,7 @@ public: static void dump_stats(SnortConfig*, const char* skip = nullptr, bool dynamic = false); static void accumulate(SnortConfig*); + static void accumulate_offload(const char* name); static void reset_stats(SnortConfig*); static std::set gids;