From: Russ Combs Date: Tue, 15 Jul 2014 21:08:44 +0000 (-0400) Subject: moved stats / peg counts to module X-Git-Tag: 3.0.0-233~1444^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe8e5fdf74a543511ec5be6ed3855f6989be69a6;p=thirdparty%2Fsnort3.git moved stats / peg counts to module --- diff --git a/ChangeLog b/ChangeLog index 2d7b7ba34..b3667a6c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +102 +-- moved stats (peg counts) to module +-- removed sum() and stats() from InspectApi +-- tweaked --help-module + 101 -- tweaked startup output -- fixed pattern matcher diff --git a/configure.ac b/configure.ac index 6c48b28be..6cbb1bc19 100644 --- a/configure.ac +++ b/configure.ac @@ -25,7 +25,7 @@ # initialization #-------------------------------------------------------------------------- -AC_INIT([snort], [2.10.101]) +AC_INIT([snort], [2.10.102]) AC_PREREQ([2.68]) AC_CONFIG_SRCDIR([src/main.h]) diff --git a/doc/style.txt b/doc/style.txt index c1182e113..947599273 100644 --- a/doc/style.txt +++ b/doc/style.txt @@ -49,7 +49,7 @@ yet firm so feedback is welcome to get something we can live with. write, easier to read, and overall better code. * Use consistent spacing and linebreaks. Always indent 4 spaces from the - breaking line. Try to keep lines less than 80 chars; it greatly helps + breaking line. Keep lines less than 100 chars; it greatly helps readability. No: diff --git a/src/framework/counts.h b/src/framework/counts.h index b8d64b107..0626f72b3 100644 --- a/src/framework/counts.h +++ b/src/framework/counts.h @@ -31,6 +31,8 @@ struct SimpleStats PegCount total_packets; }; +extern const char* simple_pegs[]; + #define array_size(a) (sizeof(a)/sizeof(a[0])) #endif diff --git a/src/framework/inspector.h b/src/framework/inspector.h index 1973d2451..a8043f78e 100644 --- a/src/framework/inspector.h +++ b/src/framework/inspector.h @@ -154,8 +154,6 @@ struct InspectApi InspectFunc pinit; // plugin thread local allocation InspectFunc pterm; // plugin thread local cleanup InspectSsnFunc ssn; // purge caches - InspectFunc sum; // accumulate stats - InspectFunc stats; // output stats InspectFunc reset; // clear stats }; diff --git a/src/framework/module.cc b/src/framework/module.cc index f08422d76..d3e39dcac 100644 --- a/src/framework/module.cc +++ b/src/framework/module.cc @@ -20,6 +20,7 @@ #include "module.h" #include "parameter.h" +#include "utils/stats.h" static const Parameter null_params[] = { @@ -33,6 +34,7 @@ void Module::init(const char* s) list = false; cmds = nullptr; rules = nullptr; + num_counts = -1; } Module::Module(const char* s) @@ -47,3 +49,49 @@ Module::Module(const char* s, const Parameter* p, bool is_list) list = is_list; } +void Module::sum_stats() +{ + if ( num_counts < 0 ) + reset_stats(); + + PegCount* p = get_counts(); + + if ( !p ) + return; + + for ( int i = 0; i < num_counts; i++ ) + { + counts[i] += p[i]; + p[i] = 0; + } +} + +void Module::show_stats() +{ + if ( num_counts > 0 ) + ::show_stats(get_counts(), get_pegs(), num_counts, get_name()); +} + +void Module::reset_stats() +{ + num_counts = 0; + const char** pegs = get_pegs(); + + if ( !pegs ) + return; + + while ( pegs[num_counts] ) + ++num_counts; + + counts.resize(num_counts); + + for ( int i = 0; i < num_counts; i++ ) + counts[i] = 0; +} + +const char* simple_pegs[] = +{ + "packets", + nullptr +}; + diff --git a/src/framework/module.h b/src/framework/module.h index 796948937..5ada9b2fe 100644 --- a/src/framework/module.h +++ b/src/framework/module.h @@ -30,6 +30,7 @@ #ifndef MODULE_H #define MODULE_H +#include #include #include "framework/value.h" @@ -103,11 +104,11 @@ public: virtual const RuleMap* get_rules() const { return nullptr; }; - virtual const char* get_pegs() const + virtual const char** get_pegs() const { return nullptr; }; // counts and profile are thread local - virtual const PegCount* get_counts() const + virtual PegCount* get_counts() const { return nullptr; }; virtual ProfileStats* get_profile() const @@ -118,6 +119,10 @@ public: unsigned /*index*/, const char*& /*name*/, const char*& /*parent*/) const { return nullptr; }; + virtual void sum_stats(); + virtual void show_stats(); + virtual void reset_stats(); + protected: Module(const char* s); Module(const char* s, const Parameter* p, bool is_list = false); @@ -131,6 +136,8 @@ private: const Parameter* params; const Command* cmds; const RuleMap* rules; + std::vector counts; + int num_counts; }; #endif diff --git a/src/main/snort.cc b/src/main/snort.cc index dbd8afb31..608fc8fc8 100644 --- a/src/main/snort.cc +++ b/src/main/snort.cc @@ -1006,6 +1006,7 @@ void snort_thread_init(const char* intf) void snort_thread_term() { + ModuleManager::accumulate(snort_conf); InspectorManager::thread_term(snort_conf); IpsManager::clear_options(); EventManager::close_outputs(); diff --git a/src/managers/inspector_manager.cc b/src/managers/inspector_manager.cc index a7ae2d286..1477b8255 100644 --- a/src/managers/inspector_manager.cc +++ b/src/managers/inspector_manager.cc @@ -382,33 +382,6 @@ static PHClass* GetClass(const char* keyword, FrameworkConfig* fc) return NULL; } -void InspectorManager::dump_stats (SnortConfig* sc) -{ - for ( auto* p : sc->framework_config->clist ) - if ( p->api.stats ) - p->api.stats(); -} - -void InspectorManager::accumulate (SnortConfig* sc) -{ - static mutex stats_mutex; - stats_mutex.lock(); - - for ( auto* p : sc->framework_config->clist ) - if ( p->api.sum ) - p->api.sum(); - - pc_sum(); - stats_mutex.unlock(); -} - -void InspectorManager::reset_stats (SnortConfig* sc) -{ - for ( auto* p : sc->framework_config->clist ) - if ( p->api.reset ) - p->api.reset(); -} - // this is per thread void InspectorManager::thread_init(SnortConfig* sc) { @@ -441,8 +414,6 @@ void InspectorManager::thread_term(SnortConfig* sc) for ( auto* p : sc->framework_config->clist ) if ( p->api.pterm ) p->api.pterm(); - - accumulate(sc); } //------------------------------------------------------------------------- diff --git a/src/managers/inspector_manager.h b/src/managers/inspector_manager.h index c554ca944..a70d03091 100644 --- a/src/managers/inspector_manager.h +++ b/src/managers/inspector_manager.h @@ -46,10 +46,6 @@ public: static void new_config(SnortConfig*); static void delete_config(SnortConfig*); - static void dump_stats(SnortConfig*); - static void accumulate(SnortConfig*); - static void reset_stats(SnortConfig*); - static void instantiate(const InspectApi*, Module*, SnortConfig*); static Inspector* get_inspector(const char* key); static void free_inspector(Inspector*); diff --git a/src/managers/module_manager.cc b/src/managers/module_manager.cc index 2bae2810c..32181f764 100644 --- a/src/managers/module_manager.cc +++ b/src/managers/module_manager.cc @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -492,6 +493,50 @@ void ModuleManager::dump_modules() d.dump(p->mod->get_name()); } +void ModuleManager::show_module(bool markup, const char* name) +{ + s_modules.sort(comp_gids); + s_markup = markup; + + for ( auto p : s_modules ) + { + const Module* m = p->mod; + assert(m); + + if ( strcmp(m->get_name(), name) ) + continue; + + LogMessage("\nModule: %s\n", name); + + if ( const Parameter* p = m->get_parameters() ) + { + if ( p->type < Parameter::PT_MAX ) + { + LogMessage("\nConfiguration:\n"); + show_configs(markup, name); + } + } + + if ( m->get_commands() ) + { + LogMessage("\nCommands:\n"); + show_commands(markup, name); + } + + if ( m->get_rules() ) + { + LogMessage("\nRules:\n"); + show_rules(markup, name); + } + + if ( m->get_pegs() ) + { + LogMessage("\nPeg counts:\n"); + show_pegs(markup, name); + } + } +} + void ModuleManager::show_configs(bool markup, const char* pfx) { s_modules.sort(comp_mods); @@ -585,6 +630,37 @@ void ModuleManager::show_gids(bool markup, const char* pfx) } } +void ModuleManager::show_pegs(bool markup, const char* pfx) +{ + s_modules.sort(comp_gids); + s_markup = markup; + unsigned len = pfx ? strlen(pfx) : 0; + + for ( auto p : s_modules ) + { + const Module* m = p->mod; + assert(m); + + if ( pfx && strncmp(m->get_name(), pfx, len) ) + continue; + + const char** pegs = m->get_pegs(); + + if ( !pegs ) + continue; + + while ( *pegs ) + { + cout << item(); + cout << emphasis_on(); + cout << *pegs; + cout << emphasis_off(); + cout << endl; + ++pegs; + } + } +} + void ModuleManager::show_rules(bool markup, const char* pfx) { s_modules.sort(comp_gids); @@ -652,3 +728,27 @@ void ModuleManager::load_rules(SnortConfig* sc) pop_parse_location(); } +void ModuleManager::dump_stats (SnortConfig*) +{ + for ( auto p : s_modules ) + p->mod->show_stats(); +} + +void ModuleManager::accumulate (SnortConfig*) +{ + static mutex stats_mutex; + stats_mutex.lock(); + + for ( auto p : s_modules ) + p->mod->sum_stats(); + + pc_sum(); + stats_mutex.unlock(); +} + +void ModuleManager::reset_stats (SnortConfig*) +{ + for ( auto p : s_modules ) + p->mod->reset_stats(); +} + diff --git a/src/managers/module_manager.h b/src/managers/module_manager.h index 2661b06a4..7dce1a4ff 100644 --- a/src/managers/module_manager.h +++ b/src/managers/module_manager.h @@ -36,14 +36,20 @@ public: static Module* get_module(const char*); static void dump_modules(); + static void show_module(bool markup, const char*); static void show_configs(bool markup, const char* = nullptr); static void show_commands(bool markup, const char* = nullptr); static void show_gids(bool markup, const char* = nullptr); + static void show_pegs(bool markup, const char* = nullptr); static void show_rules(bool markup, const char* = nullptr); static void load_rules(SnortConfig*); static void set_config(SnortConfig*); static unsigned get_errors(); + + static void dump_stats(SnortConfig*); + static void accumulate(SnortConfig*); + static void reset_stats(SnortConfig*); }; #endif diff --git a/src/network_inspectors/arp_spoof/arp_module.cc b/src/network_inspectors/arp_spoof/arp_module.cc index 8a7fbc0a5..f7ece3f95 100644 --- a/src/network_inspectors/arp_spoof/arp_module.cc +++ b/src/network_inspectors/arp_spoof/arp_module.cc @@ -32,6 +32,8 @@ static const char* mod_name = "arp_spoof"; #define ARPSPOOF_ARP_CACHE_OVERWRITE_ATTACK_STR \ "(arp_spoof) Attempted ARP cache overwrite attack" +THREAD_LOCAL SimpleStats asstats; + //------------------------------------------------------------------------- // arp_spoof stuff //------------------------------------------------------------------------- @@ -133,3 +135,10 @@ bool ArpSpoofModule::end(const char*, int idx, SnortConfig*) return true; } +const char** ArpSpoofModule::get_pegs() const +{ return simple_pegs; } + +PegCount* ArpSpoofModule::get_counts() const +{ return (PegCount*)&asstats; } + + diff --git a/src/network_inspectors/arp_spoof/arp_module.h b/src/network_inspectors/arp_spoof/arp_module.h index 6f5545175..7390bcef7 100644 --- a/src/network_inspectors/arp_spoof/arp_module.h +++ b/src/network_inspectors/arp_spoof/arp_module.h @@ -36,6 +36,7 @@ #define ARPSPOOF_ETHERFRAME_ARP_MISMATCH_DST 3 #define ARPSPOOF_ARP_CACHE_OVERWRITE_ATTACK 4 +extern THREAD_LOCAL SimpleStats asstats; extern THREAD_LOCAL ProfileStats arpPerfStats; struct IPMacEntry @@ -71,6 +72,9 @@ public: return temp; }; + const char** get_pegs() const; + PegCount* get_counts() const; + unsigned get_gid() const { return GID_ARP_SPOOF; }; diff --git a/src/network_inspectors/arp_spoof/arp_spoof.cc b/src/network_inspectors/arp_spoof/arp_spoof.cc index 947bb619f..9dce8fa84 100644 --- a/src/network_inspectors/arp_spoof/arp_spoof.cc +++ b/src/network_inspectors/arp_spoof/arp_spoof.cc @@ -98,9 +98,6 @@ static const uint8_t bcast[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; THREAD_LOCAL ProfileStats arpPerfStats; -static THREAD_LOCAL SimpleStats asstats; -static SimpleStats gasstats; - //------------------------------------------------------------------------- // implementation stuff //------------------------------------------------------------------------- @@ -299,15 +296,6 @@ static Inspector* as_ctor(Module* m) static void as_dtor(Inspector* p) { delete p; } -static void as_sum() -{ sum_stats(&gasstats, &asstats); } - -static void as_stats() -{ show_stats(&gasstats, MOD_NAME); } - -static void as_reset() -{ memset(&gasstats, 0, sizeof(gasstats)); } - static const InspectApi as_api = { { @@ -329,9 +317,7 @@ static const InspectApi as_api = nullptr, // pinit nullptr, // pterm nullptr, // ssn - as_sum, - as_stats, - as_reset + nullptr, // reset }; #ifdef BUILDING_SO diff --git a/src/network_inspectors/binder/bind_module.cc b/src/network_inspectors/binder/bind_module.cc index decd24445..f581db39f 100644 --- a/src/network_inspectors/binder/bind_module.cc +++ b/src/network_inspectors/binder/bind_module.cc @@ -29,6 +29,8 @@ using namespace std; #include "binder.h" +THREAD_LOCAL SimpleStats bstats; + //------------------------------------------------------------------------- // binder module //------------------------------------------------------------------------- @@ -178,3 +180,9 @@ vector BinderModule::get_data() return bindings; // move semantics } +const char** BinderModule::get_pegs() const +{ return simple_pegs; } + +PegCount* BinderModule::get_counts() const +{ return (PegCount*)&bstats; } + diff --git a/src/network_inspectors/binder/bind_module.h b/src/network_inspectors/binder/bind_module.h index bed393af9..5425fff4e 100644 --- a/src/network_inspectors/binder/bind_module.h +++ b/src/network_inspectors/binder/bind_module.h @@ -27,6 +27,7 @@ #include "framework/module.h" #include "main/thread.h" +extern THREAD_LOCAL SimpleStats bstats; extern THREAD_LOCAL ProfileStats bindPerfStats; struct Binding; @@ -40,6 +41,8 @@ public: bool begin(const char*, int, SnortConfig*); bool end(const char*, int, SnortConfig*); + const char** get_pegs() const; + PegCount* get_counts() const; ProfileStats* get_profile() const; std::vector get_data(); diff --git a/src/network_inspectors/binder/binder.cc b/src/network_inspectors/binder/binder.cc index 6d9e3a782..358ad8a83 100644 --- a/src/network_inspectors/binder/binder.cc +++ b/src/network_inspectors/binder/binder.cc @@ -37,8 +37,6 @@ using namespace std; static const char* mod_name = "binder"; THREAD_LOCAL ProfileStats bindPerfStats; -static THREAD_LOCAL SimpleStats tstats; -static SimpleStats gstats; //------------------------------------------------------------------------- // helpers @@ -118,7 +116,7 @@ void Binder::eval(Packet* p) { Flow* flow = p->flow; flow->flow_state = check_rules(flow, p); - ++tstats.total_packets; + ++bstats.total_packets; } // FIXIT implement inspector lookup from policy / bindings @@ -257,21 +255,6 @@ static void bind_dtor(Inspector* p) delete p; } -static void bind_sum() -{ - sum_stats(&gstats, &tstats); -} - -static void bind_stats() -{ - show_stats(&gstats, mod_name); -} - -static void bind_reset() -{ - memset(&gstats, 0, sizeof(gstats)); -} - static const InspectApi bind_api = { { @@ -293,9 +276,7 @@ static const InspectApi bind_api = nullptr, // pinit nullptr, // pterm nullptr, // ssn - bind_sum, - bind_stats, - bind_reset + nullptr // reset }; const BaseApi* nin_binder = &bind_api.base; diff --git a/src/network_inspectors/normalize/norm.cc b/src/network_inspectors/normalize/norm.cc index 83970c3a8..52fd8713f 100644 --- a/src/network_inspectors/normalize/norm.cc +++ b/src/network_inspectors/normalize/norm.cc @@ -32,6 +32,7 @@ #include "packet_io/sfdaq.h" #include "protocols/ipv4.h" #include "protocols/tcp.h" +#include "stream/stream.h" typedef enum { PC_IP4_TRIM, @@ -57,25 +58,25 @@ typedef enum { } PegCounts; static const char* pegName[PC_MAX] = { - "ip4::trim", - "ip4::tos", - "ip4::df", - "ip4::rf", - "ip4::ttl", - "ip4::opts", - "icmp4::echo", - "ip6::ttl", - "ip6::opts", - "icmp6::echo", - "tcp::syn_opt", - "tcp::ts_ecr", - "tcp::opt", - "tcp::pad", - "tcp::rsv", - "tcp::ecn_pkt", - "tcp::ns", - "tcp::urg", - "tcp::urp" + "ip4.trim", + "ip4.tos", + "ip4.df", + "ip4.rf", + "ip4.ttl", + "ip4.opts", + "icmp4.echo", + "ip6.ttl", + "ip6.opts", + "icmp6.echo", + "tcp.syn_opt", + "tcp.ts_ecr", + "tcp.opt", + "tcp.pad", + "tcp.rsv", + "tcp.ecn_pkt", + "tcp.ns", + "tcp.urg", + "tcp.urp" }; static THREAD_LOCAL PegCount normStats[PC_MAX]; @@ -516,16 +517,19 @@ static int Norm_TCP ( void Norm_SumStats (void) { sum_stats((PegCount*)&gnormStats, (PegCount*)&normStats, array_size(pegName)); + Stream_SumNormalizationStats(); } void Norm_PrintStats (const char* name) { show_stats((PegCount*)&gnormStats, pegName, array_size(pegName), name); + Stream_PrintNormalizationStats(); } void Norm_ResetStats (void) { memset(gnormStats, 0, sizeof(gnormStats)); + Stream_ResetNormalizationStats(); } //----------------------------------------------------------------------- diff --git a/src/network_inspectors/normalize/norm.h b/src/network_inspectors/normalize/norm.h index 663a174b4..c17ebb07d 100644 --- a/src/network_inspectors/normalize/norm.h +++ b/src/network_inspectors/normalize/norm.h @@ -1,6 +1,6 @@ /**************************************************************************** * -** Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved. + * Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved. * Copyright (C) 2005-2013 Sourcefire, Inc. * * This program is free software; you can redistribute it and/or modify diff --git a/src/network_inspectors/normalize/norm_module.cc b/src/network_inspectors/normalize/norm_module.cc index 26f4a3fa9..f0ff409fc 100644 --- a/src/network_inspectors/normalize/norm_module.cc +++ b/src/network_inspectors/normalize/norm_module.cc @@ -277,3 +277,12 @@ bool NormalizeModule::end(const char*, int, SnortConfig*) return true; } +void NormalizeModule::sum_stats() +{ Norm_SumStats(); } + +void NormalizeModule::show_stats() +{ Norm_PrintStats(get_name()); } + +void NormalizeModule::reset_stats() +{ Norm_ResetStats(); } + diff --git a/src/network_inspectors/normalize/norm_module.h b/src/network_inspectors/normalize/norm_module.h index 4927504b6..2d3d766eb 100644 --- a/src/network_inspectors/normalize/norm_module.h +++ b/src/network_inspectors/normalize/norm_module.h @@ -45,6 +45,10 @@ public: const NormalizerConfig* get_config() { return &config; }; + void sum_stats(); + void show_stats(); + void reset_stats(); + private: bool set_ip4(const char*, Value&, SnortConfig*); bool set_tcp(const char*, Value&, SnortConfig*); diff --git a/src/network_inspectors/normalize/normalize.cc b/src/network_inspectors/normalize/normalize.cc index c19271fb1..2f7cba4ed 100644 --- a/src/network_inspectors/normalize/normalize.cc +++ b/src/network_inspectors/normalize/normalize.cc @@ -28,13 +28,14 @@ #include "profiler.h" #include "snort_types.h" #include "snort.h" -#include "stream/stream.h" #include "framework/inspector.h" -THREAD_LOCAL ProfileStats norm_perf_stats; - #define PROTO_BITS (PROTO_BIT__IP|PROTO_BIT__ICMP|PROTO_BIT__TCP) +static const char* name = "normalize"; + +THREAD_LOCAL ProfileStats norm_perf_stats; + //------------------------------------------------------------------------- // printing stuff //------------------------------------------------------------------------- @@ -231,26 +232,6 @@ static Module* mod_ctor() static void mod_dtor(Module* m) { delete m; } -static const char* name = "normalize"; - -static void no_sum() -{ - Norm_SumStats(); - Stream_SumNormalizationStats(); -} - -static void no_stats() -{ - Norm_PrintStats(name); - Stream_PrintNormalizationStats(); -} - -static void no_reset() -{ - Norm_ResetStats(); - Stream_ResetNormalizationStats(); -} - static Inspector* no_ctor(Module* m) { return new Normalizer((NormalizeModule*)m); @@ -282,9 +263,7 @@ static const InspectApi no_api = nullptr, // pinit nullptr, // pterm nullptr, // ssn - no_sum, - no_stats, - no_reset + nullptr // reset }; const BaseApi* nin_normalize = &no_api.base; diff --git a/src/network_inspectors/perf_monitor/perf_module.cc b/src/network_inspectors/perf_monitor/perf_module.cc index 99af51201..8c74601d3 100644 --- a/src/network_inspectors/perf_monitor/perf_module.cc +++ b/src/network_inspectors/perf_monitor/perf_module.cc @@ -174,3 +174,9 @@ void PerfMonModule::get_config(SFPERF& cfg) memset(&config, 0, sizeof(config)); } +const char** PerfMonModule::get_pegs() const +{ return simple_pegs; } + +PegCount* PerfMonModule::get_counts() const +{ return (PegCount*)&pmstats; } + diff --git a/src/network_inspectors/perf_monitor/perf_module.h b/src/network_inspectors/perf_monitor/perf_module.h index b61a9a1b9..4fd2e9644 100644 --- a/src/network_inspectors/perf_monitor/perf_module.h +++ b/src/network_inspectors/perf_monitor/perf_module.h @@ -25,6 +25,7 @@ #include "perf.h" #include "framework/module.h" +extern THREAD_LOCAL SimpleStats pmstats; extern THREAD_LOCAL ProfileStats perfmonStats; class PerfMonModule : public Module @@ -35,6 +36,8 @@ public: bool set(const char*, Value&, SnortConfig*); bool begin(const char*, int, SnortConfig*); + const char** get_pegs() const; + PegCount* get_counts() const; ProfileStats* get_profile() const; void get_config(SFPERF&); diff --git a/src/network_inspectors/perf_monitor/perf_monitor.cc b/src/network_inspectors/perf_monitor/perf_monitor.cc index f5a2372be..26b0bd95b 100644 --- a/src/network_inspectors/perf_monitor/perf_monitor.cc +++ b/src/network_inspectors/perf_monitor/perf_monitor.cc @@ -57,11 +57,9 @@ THREAD_LOCAL SFPERF *perfmon_config = NULL; static const char* mod_name = "perf_monitor"; +THREAD_LOCAL SimpleStats pmstats; THREAD_LOCAL ProfileStats perfmonStats; -static THREAD_LOCAL SimpleStats pmstats; -static SimpleStats gpmstats; - /* This function changes the perfmon log files permission if exists. It is done in the PerfMonitorInit() before Snort changed its user & group. */ @@ -356,21 +354,6 @@ static Inspector* pm_ctor(Module* m) return new PerfMonitor((PerfMonModule*)m); } -static void pm_sum() -{ - sum_stats(&gpmstats, &pmstats); -} - -static void pm_stats() -{ - show_stats(&gpmstats, mod_name); -} - -static void pm_reset() -{ - memset(&gpmstats, 0, sizeof(gpmstats)); -} - static void pm_dtor(Inspector* p) { delete p; @@ -397,9 +380,7 @@ static const InspectApi pm_api = nullptr, // pinit nullptr, // pterm nullptr, // ssn - pm_sum, - pm_stats, - pm_reset + nullptr // reset }; const BaseApi* nin_perf_monitor = &pm_api.base; diff --git a/src/network_inspectors/port_scan/port_scan.cc b/src/network_inspectors/port_scan/port_scan.cc index 4709f10d8..438cac2e2 100644 --- a/src/network_inspectors/port_scan/port_scan.cc +++ b/src/network_inspectors/port_scan/port_scan.cc @@ -82,11 +82,9 @@ static THREAD_LOCAL Packet* g_tmp_pkt = NULL; static THREAD_LOCAL FILE* g_logfile = NULL; +THREAD_LOCAL SimpleStats spstats; THREAD_LOCAL ProfileStats psPerfStats; -static THREAD_LOCAL SimpleStats spstats; -static SimpleStats gspstats; - /* ** NAME ** MakeProtoInfo:: @@ -985,20 +983,9 @@ static void sp_dtor(Inspector* p) delete p; } -static void sp_sum() -{ - sum_stats(&gspstats, &spstats); -} - -static void sp_stats() -{ - show_stats(&gspstats, PS_MODULE); -} - static void sp_reset() { ps_reset(); - memset(&gspstats, 0, sizeof(gspstats)); } static const InspectApi sp_api = @@ -1022,8 +1009,6 @@ static const InspectApi sp_api = nullptr, // pinit nullptr, // pterm nullptr, // ssn - sp_sum, - sp_stats, sp_reset }; diff --git a/src/network_inspectors/port_scan/ps_module.cc b/src/network_inspectors/port_scan/ps_module.cc index 9598139a4..951e9aaed 100644 --- a/src/network_inspectors/port_scan/ps_module.cc +++ b/src/network_inspectors/port_scan/ps_module.cc @@ -245,3 +245,9 @@ PsCommon* PortScanGlobalModule::get_data() return tmp; } +const char** PortScanGlobalModule::get_pegs() const +{ return simple_pegs; } + +PegCount* PortScanGlobalModule::get_counts() const +{ return (PegCount*)&spstats; } + diff --git a/src/network_inspectors/port_scan/ps_module.h b/src/network_inspectors/port_scan/ps_module.h index 5397bb119..91cc00c7b 100644 --- a/src/network_inspectors/port_scan/ps_module.h +++ b/src/network_inspectors/port_scan/ps_module.h @@ -31,6 +31,7 @@ #define PS_MODULE "port_scan" #define PS_GLOBAL "port_scan_global" +extern THREAD_LOCAL SimpleStats spstats; extern THREAD_LOCAL ProfileStats psPerfStats; //------------------------------------------------------------------------- @@ -44,6 +45,8 @@ public: bool set(const char*, Value&, SnortConfig*); bool begin(const char*, int, SnortConfig*); + const char** get_pegs() const; + PegCount* get_counts() const; ProfileStats* get_profile() const; PsCommon* get_data(); diff --git a/src/parser/cmd_line.cc b/src/parser/cmd_line.cc index ea6de8a2e..460c17ff1 100644 --- a/src/parser/cmd_line.cc +++ b/src/parser/cmd_line.cc @@ -280,9 +280,7 @@ static void show_help(SnortConfig* sc, const char* val, HelpType ht) ModuleManager::show_rules(s_markup, val); break; case HT_MOD: - ModuleManager::show_configs(s_markup, val); - ModuleManager::show_commands(s_markup, val); - ModuleManager::show_rules(s_markup, val); + ModuleManager::show_module(s_markup, val); break; case HT_BUF: InspectorManager::dump_buffers(); @@ -797,7 +795,7 @@ static ConfigFunc basic_opts[] = " output matching generators" }, { "help-module", config_help_module, - "output config, commands, and builtin rules for given module" }, + "output description of given module" }, { "help-options", config_help_options, "