friend class ModuleManager;
void init(const char*, const char* = nullptr);
+ std::vector<PegCount> counts;
+ int num_counts;
+
const char* name;
const char* help;
const Parameter* default_params = nullptr;
bool list;
- std::vector<PegCount> counts;
- int num_counts;
Trace* trace;
};
#define BASE_FILE (PERF_NAME ".csv")
-BaseTracker::BaseTracker(PerfConfig* perf) : PerfTracker(perf,
- perf->output == PERF_FILE ? BASE_FILE : nullptr)
+BaseTracker::BaseTracker(PerfConfig* perf)
+ : PerfTracker(perf, perf->output == PERF_FILE ? BASE_FILE : nullptr)
{
for (unsigned i = 0; i < config->modules.size(); i++)
{
Module *m = config->modules.at(i);
- vector<unsigned> peg_map = config->mod_peg_idxs.at(i);
+ IndexVec peg_map = config->mod_peg_idxs.at(i);
formatter->register_section(m->get_name());
- for (auto& idx : peg_map)
- formatter->register_field(m->get_pegs()[idx].name,
- &(m->get_counts()[idx]));
+
+ for (auto const& i : peg_map)
+ formatter->register_field(m->get_pegs()[i].name, &(m->get_counts()[i]));
}
formatter->finalize_fields();
}
{
write();
- for (unsigned i = 0; i < config->modules.size(); i++)
+ for ( auto const& m : config->modules )
if (!summary)
- config->modules.at(i)->sum_stats();
+ m->sum_stats();
}
#ifdef UNIT_TEST
StreamFileModule::~StreamFileModule() { }
-#if 0
-const PegInfo* StreamFileModule::get_pegs() const
-{ return file_pegs; }
-
-PegCount* StreamFileModule::get_counts() const
-{ return (PegCount*)&file_stats; }
-#endif
-
bool StreamFileModule::begin(const char*, int, SnortConfig*)
{
upload = false;
StreamFileModule();
~StreamFileModule();
-#if 0
- const PegInfo* get_pegs() const override;
- PegCount* get_counts() const override;
-#endif
-
bool begin(const char*, int, SnortConfig*) override;
bool set(const char*, Value&, SnortConfig*) override;
PegCount* StreamIcmpModule::get_counts() const
{ return (PegCount*)&icmpStats; }
-
-void StreamIcmpModule::sum_stats()
-{
- PegCount sessions = icmpStats.sessions;
-
- Module::sum_stats();
-
- icmpStats.sessions = sessions;
- icmpStats.max = sessions;
-}
-
StreamIcmpConfig* get_data();
- void sum_stats() override;
-
private:
StreamIcmpConfig* config;
};
PegCount* StreamIpModule::get_counts() const
{ return (PegCount*)&ip_stats; }
-void StreamIpModule::sum_stats()
-{
- PegCount sessions = ip_stats.sessions;
- PegCount current = ip_stats.current;
-
- Module::sum_stats();
-
- ip_stats.sessions = sessions;
- ip_stats.max = sessions;
- ip_stats.current = current;
-}
-
unsigned get_gid() const override
{ return GID_DEFRAG; }
- void sum_stats() override;
-
private:
StreamIpConfig* config;
};
PegCount* StreamTcpModule::get_counts() const
{ return (PegCount*)&tcpStats; }
-void StreamTcpModule::sum_stats()
-{
- // FIXIT-L is there a way these session pegs can be derived from other pegs?
- PegCount init = tcpStats.sessions_initializing;
- PegCount est = tcpStats.sessions_established;
- PegCount closing = tcpStats.sessions_closing;
- PegCount sessions = tcpStats.sessions;
-
- Module::sum_stats();
-
- tcpStats.sessions_initializing = init;
- tcpStats.sessions_established = est;
- tcpStats.sessions_closing = closing;
- tcpStats.sessions = sessions;
- tcpStats.max = sessions;
-}
-
ProfileStats* get_profile(unsigned, const char*&, const char*&) const override;
const PegInfo* get_pegs() const override;
PegCount* get_counts() const override;
- void sum_stats() override;
private:
TcpStreamConfig* config;
PegCount* StreamUdpModule::get_counts() const
{ return (PegCount*)&udpStats; }
-
-void StreamUdpModule::sum_stats()
-{
- PegCount sessions = udpStats.sessions;
-
- Module::sum_stats();
-
- udpStats.sessions = sessions;
- udpStats.max = sessions;
-}
-
PegCount* get_counts() const override;
StreamUdpConfig* get_data();
- void sum_stats() override;
-
private:
StreamUdpConfig* config;
};
#include "main/snort_types.h"
#include "framework/counts.h"
-typedef std::vector<unsigned> IndexVec;
+using IndexVec = std::vector<unsigned>;
// FIXIT-L split this out into appropriate modules
struct PacketCount