DetectionModule() : Module("detection", detection_help, detection_params) { }
bool set(const char*, Value&, SnortConfig*) override;
const PegInfo* get_pegs() const override { return pc_names; }
- PegCount* get_counts() const override { return (PegCount*) &pc; }
};
bool DetectionModule::set(const char*, Value& v, SnortConfig* sc)
DaqModule() : Module("daq", daq_help, daq_params) { }
bool set(const char*, Value&, SnortConfig*) override;
const PegInfo* get_pegs() const override { return daq_names; }
- PegCount* get_counts() const override;
};
bool DaqModule::set(const char*, Value& v, SnortConfig* sc)
return true;
}
-PegCount* DaqModule::get_counts() const
-{
- static THREAD_LOCAL DAQStats ds;
-
- get_daq_stats(ds);
- return (PegCount*) &ds;
-}
-
//-------------------------------------------------------------------------
// attribute_table module
//-------------------------------------------------------------------------
bool set(const char*, Value&, SnortConfig*) override;
const PegInfo* get_pegs() const override { return proc_names; }
- PegCount* get_counts() const override { return (PegCount*) &proc_stats; }
};
bool SnortModule::set(const char*, Value& v, SnortConfig* sc)
void init();
};
-typedef std::list<ModHook*> ModuleList;
+typedef list<ModHook*> ModuleList;
static ModuleList s_modules;
static unsigned s_errors = 0;
const char* ModuleManager::get_current_module()
{ return s_current.c_str(); }
-list<Module*> ModuleManager::get_all_modules()
-{
- list<Module*> ret;
-
- for ( auto& m : s_modules )
- ret.push_back(m->mod);
-
- return ret;
-}
-
void ModuleManager::set_config(SnortConfig* sc)
{ s_config = sc; }
// Factory for Modules, including all builtin and plugin modules.
// Modules are strictly used during parse time.
-#include <list>
#include <string>
//-------------------------------------------------------------------------
static Module* get_module(const char*);
static Module* get_default_module(const char*, SnortConfig*);
static const char* get_current_module();
- static std::list<Module*> get_all_modules();
static void list_modules(const char* = nullptr);
static void dump_modules();
return s.c_str();
}
+std::vector<std::string> PluginManager::get_all_available_plugins()
+{
+ std::vector<std::string> ret;
+
+ for ( auto it = plug_map.begin(); it != plug_map.end(); ++it )
+ {
+ const auto* api = it->second.api;
+
+ ret.push_back(api->name);
+ }
+
+ return ret;
+}
+
static void instantiate(const BaseApi*, Module*, SnortConfig*, const char* name);
static const char* get_available_plugins(PlugType);
+ static std::vector<std::string> get_all_available_plugins();
};
#endif
#include "managers/plugin_manager.h"
#include "utils/util.h"
+static std::string mod_pegs;
+static std::string mod_name;
+
//-------------------------------------------------------------------------
// perf attributes
//-------------------------------------------------------------------------
{
if ( !config.modules.size() )
{
- auto modules = ModuleManager::get_all_modules();
- for ( auto& mod : modules )
+ auto modules = PluginManager::get_all_available_plugins();
+ for ( auto& mod_name : modules )
{
- if ( !add_module(config, mod, std::string()) )
+ Module* mod = ModuleManager::get_module(mod_name.c_str());
+ if ( mod && !add_module(config, mod, std::string()) )
return false;
}
}
private:
SFPERF config;
-
- std::string mod_pegs;
- std::string mod_name;
};
#define BASE_FILE "perf_monitor.csv"
LogMessage("%25.25s: " STDu64 "\n", "pkts/sec", pps);
}
+//-------------------------------------------------------------------------
+// FIXIT-L 2.0.4 introduces the retry verdict
+// no way to reliably optionally leverage this with dynamic loaded daqs
+
+// FIXIT-L daq stats should be moved to sfdaq
+
+#define MAX_SFDAQ_VERDICT 6
+
+struct DAQStats
+{
+ PegCount pcaps;
+ PegCount received;
+ PegCount analyzed;
+ PegCount dropped;
+ PegCount filtered;
+ PegCount outstanding;
+ PegCount injected;
+ PegCount verdicts[MAX_SFDAQ_VERDICT];
+ PegCount internal_blacklist;
+ PegCount internal_whitelist;
+ PegCount skipped;
+ PegCount fail_open;
+ PegCount idle;
+};
+
//-------------------------------------------------------------------------
// FIXIT-L need better encapsulation of these counts by their modules
//-------------------------------------------------------------------------
-void get_daq_stats(DAQStats& daq_stats)
+static void get_daq_stats(DAQStats& daq_stats)
{
uint64_t pkts_recv = g_daq_stats.hw_packets_received;
uint64_t pkts_drop = g_daq_stats.hw_packets_dropped;
PegCount idle;
};
-//-------------------------------------------------------------------------
-// FIXIT-L 2.0.4 introduces the retry verdict
-// no way to reliably optionally leverage this with dynamic loaded daqs
-
-// FIXIT-L daq stats should be moved to sfdaq
-
-#define MAX_SFDAQ_VERDICT 6
-
-struct DAQStats
-{
- PegCount pcaps;
- PegCount received;
- PegCount analyzed;
- PegCount dropped;
- PegCount filtered;
- PegCount outstanding;
- PegCount injected;
- PegCount verdicts[MAX_SFDAQ_VERDICT];
- PegCount internal_blacklist;
- PegCount internal_whitelist;
- PegCount skipped;
- PegCount fail_open;
- PegCount idle;
-};
-
extern ProcessCount proc_stats;
extern THREAD_LOCAL AuxCount aux_counts;
extern SO_PUBLIC THREAD_LOCAL PacketCount pc;
SO_PUBLIC void LogStat(const char*, uint64_t n, uint64_t tot);
SO_PUBLIC void LogStat(const char*, double);
-void get_daq_stats(DAQStats& daq_stats);
-
void sum_stats(PegCount* sums, PegCount* counts, unsigned n);
void show_stats(PegCount*, const PegInfo*, unsigned n,
const char* module_name = nullptr);