mirror of
https://github.com/pavel-odintsov/fastnetmon.git
synced 2024-09-21 10:27:13 +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.count("sflow") != 0) {
|
||||||
if (configuration_map["sflow"] == "on") {
|
if (configuration_map["sflow"] == "on") {
|
||||||
fastnetmon_global_configuration.sflow = true;
|
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.count("netflow") != 0) {
|
||||||
if (configuration_map["netflow"] == "on") {
|
if (configuration_map["netflow"] == "on") {
|
||||||
enable_netflow_collection = true;
|
enable_netflow_collection = true;
|
||||||
|
@ -28,9 +28,13 @@ extern log4cpp::Category& logger;
|
|||||||
|
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
|
#include "../fastnetmon_configuration_scheme.hpp"
|
||||||
|
|
||||||
// Global configuration map
|
// Global configuration map
|
||||||
extern std::map<std::string, std::string> 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";
|
std::string raw_udp_packets_received_desc = "Number of raw packets received without any errors";
|
||||||
uint64_t raw_udp_packets_received = 0;
|
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";
|
logger << log4cpp::Priority::INFO << plugin_log_prefix << "plugin started";
|
||||||
sflow_process_func_ptr = func_ptr;
|
sflow_process_func_ptr = func_ptr;
|
||||||
|
|
||||||
|
if (fastnetmon_global_configuration.sflow_ports.size() == 0) {
|
||||||
std::string sflow_ports_string = "";
|
logger << log4cpp::Priority::ERROR << plugin_log_prefix << "Please specify least single port listen port for sFlow plugin";
|
||||||
|
|
||||||
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!";
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger << log4cpp::Priority::INFO << plugin_log_prefix << "We parsed " << sflow_ports.size() << " ports for sflow";
|
|
||||||
|
|
||||||
boost::thread_group sflow_collector_threads;
|
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;
|
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));
|
||||||
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));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sflow_collector_threads.join_all();
|
sflow_collector_threads.join_all();
|
||||||
|
Loading…
Reference in New Issue
Block a user