mirror of
https://github.com/pavel-odintsov/fastnetmon.git
synced 2024-09-21 02:17:16 +00:00
Moved configuration logic for sFlow plugin to new unified structure
This commit is contained in:
parent
8b37e63781
commit
182eca59d8
@ -771,6 +771,7 @@ bool load_configuration_file() {
|
||||
}
|
||||
}
|
||||
|
||||
// sFlow section
|
||||
if (configuration_map.count("sflow") != 0) {
|
||||
if (configuration_map["sflow"] == "on") {
|
||||
fastnetmon_global_configuration.sflow = true;
|
||||
@ -779,6 +780,42 @@ bool load_configuration_file() {
|
||||
}
|
||||
}
|
||||
|
||||
if (configuration_map.count("sflow_host") != 0) {
|
||||
fastnetmon_global_configuration.sflow_host = configuration_map["sflow_host"];
|
||||
}
|
||||
|
||||
if (configuration_map.count("sflow_read_packet_length_from_ip_header") != 0) {
|
||||
fastnetmon_global_configuration.sflow_read_packet_length_from_ip_header =
|
||||
configuration_map["sflow_read_packet_length_from_ip_header"] == "on";
|
||||
}
|
||||
|
||||
// Read sFlow ports
|
||||
std::string sflow_ports_string = "";
|
||||
|
||||
// Please note that it differs from field name in Advanced edition which uses "sflow_ports"
|
||||
if (configuration_map.count("sflow_port") != 0) {
|
||||
sflow_ports_string = configuration_map["sflow_port"];
|
||||
}
|
||||
|
||||
std::vector<std::string> sflow_ports_for_listen;
|
||||
boost::split(sflow_ports_for_listen, sflow_ports_string, boost::is_any_of(","), boost::token_compress_on);
|
||||
|
||||
std::vector<unsigned int> sflow_ports;
|
||||
|
||||
for (auto port_string : sflow_ports_for_listen) {
|
||||
unsigned int sflow_port = convert_string_to_integer(port_string);
|
||||
|
||||
if (sflow_port == 0) {
|
||||
logger << log4cpp::Priority::ERROR << "Cannot parse sFlow port: " << port_string;
|
||||
continue;
|
||||
}
|
||||
|
||||
fastnetmon_global_configuration.sflow_ports.push_back(sflow_port);
|
||||
}
|
||||
|
||||
logger << log4cpp::Priority::INFO << "We parsed " << fastnetmon_global_configuration.sflow_ports.size() << " ports for sFlow";
|
||||
|
||||
// Netflow
|
||||
if (configuration_map.count("netflow") != 0) {
|
||||
if (configuration_map["netflow"] == "on") {
|
||||
enable_netflow_collection = true;
|
||||
|
@ -28,9 +28,13 @@ extern log4cpp::Category& logger;
|
||||
|
||||
#include <boost/algorithm/string.hpp>
|
||||
|
||||
#include "../fastnetmon_configuration_scheme.hpp"
|
||||
|
||||
// Global configuration map
|
||||
extern std::map<std::string, std::string> configuration_map;
|
||||
|
||||
extern fastnetmon_configuration_t fastnetmon_global_configuration;
|
||||
|
||||
std::string raw_udp_packets_received_desc = "Number of raw packets received without any errors";
|
||||
uint64_t raw_udp_packets_received = 0;
|
||||
|
||||
@ -152,52 +156,17 @@ void start_sflow_collection(process_packet_pointer func_ptr) {
|
||||
logger << log4cpp::Priority::INFO << plugin_log_prefix << "plugin started";
|
||||
sflow_process_func_ptr = func_ptr;
|
||||
|
||||
|
||||
std::string sflow_ports_string = "";
|
||||
|
||||
if (configuration_map.count("sflow_port") != 0) {
|
||||
sflow_ports_string = configuration_map["sflow_port"];
|
||||
}
|
||||
|
||||
std::vector<std::string> sflow_ports_for_listen;
|
||||
boost::split(sflow_ports_for_listen, sflow_ports_string, boost::is_any_of(","), boost::token_compress_on);
|
||||
|
||||
std::vector<unsigned int> sflow_ports;
|
||||
|
||||
for (auto port_string : sflow_ports_for_listen) {
|
||||
unsigned int sflow_port = convert_string_to_integer(port_string);
|
||||
|
||||
if (sflow_port == 0) {
|
||||
logger << log4cpp::Priority::ERROR << plugin_log_prefix << "Cannot parse port: " << port_string;
|
||||
continue;
|
||||
}
|
||||
|
||||
sflow_ports.push_back(sflow_port);
|
||||
}
|
||||
|
||||
if (sflow_ports.size() == 0) {
|
||||
logger << log4cpp::Priority::ERROR << plugin_log_prefix << "Please specify least single port for sflow_port field!";
|
||||
if (fastnetmon_global_configuration.sflow_ports.size() == 0) {
|
||||
logger << log4cpp::Priority::ERROR << plugin_log_prefix << "Please specify least single port listen port for sFlow plugin";
|
||||
return;
|
||||
}
|
||||
|
||||
logger << log4cpp::Priority::INFO << plugin_log_prefix << "We parsed " << sflow_ports.size() << " ports for sflow";
|
||||
|
||||
boost::thread_group sflow_collector_threads;
|
||||
|
||||
logger << log4cpp::Priority::INFO << plugin_log_prefix << "We will listen on " << sflow_ports.size() << " ports";
|
||||
logger << log4cpp::Priority::INFO << plugin_log_prefix << "We will listen on " << fastnetmon_global_configuration.sflow_ports.size() << " ports";
|
||||
|
||||
std::string sflow_host;
|
||||
|
||||
if (configuration_map.count("sflow_host") != 0) {
|
||||
sflow_host = configuration_map["sflow_host"];
|
||||
}
|
||||
|
||||
if (configuration_map.count("sflow_read_packet_length_from_ip_header") != 0) {
|
||||
sflow_read_packet_length_from_ip_header = configuration_map["sflow_read_packet_length_from_ip_header"] == "on";
|
||||
}
|
||||
|
||||
for (auto sflow_port : sflow_ports) {
|
||||
sflow_collector_threads.add_thread(new boost::thread(start_sflow_collector, sflow_host, sflow_port));
|
||||
for (auto sflow_port : fastnetmon_global_configuration.sflow_ports) {
|
||||
sflow_collector_threads.add_thread(new boost::thread(start_sflow_collector, fastnetmon_global_configuration.sflow_host, sflow_port));
|
||||
}
|
||||
|
||||
sflow_collector_threads.join_all();
|
||||
|
Loading…
Reference in New Issue
Block a user