From 7028b80b6df6dd3504983df034f66273464a44a6 Mon Sep 17 00:00:00 2001 From: Guilherme Maciel Ferreira Date: Thu, 14 Jul 2011 23:38:29 -0300 Subject: [PATCH] Adding the ping protocol configuration option --- src/config/configuration.cpp | 21 +++++++++++++++++++-- src/config/configuration.h | 5 +++++ src/config/configurationreader.cpp | 14 ++++++++++++++ src/config/configurationreader.h | 2 ++ 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/config/configuration.cpp b/src/config/configuration.cpp index 8c56aca..4cf3747 100644 --- a/src/config/configuration.cpp +++ b/src/config/configuration.cpp @@ -32,6 +32,7 @@ Configuration::Configuration() : ConfigFileName( "" ), SourceNetworkInterface( "" ), NameServer( "" ), + Protocol( PingProtocol_ICMP ), HostsDownLimit( 0 ), MinHostsDownLimit( 0 ), MaxHostsDownLimit( 50 ), @@ -95,6 +96,18 @@ void Configuration::set_source_network_interface( SourceNetworkInterface = source_network_interface; } +PingProtocol Configuration::get_ping_protocol() const +{ + return Protocol; +} + +void Configuration::set_ping_protocol( const PingProtocol ping_protocol ) +{ + BOOST_ASSERT( ( PingProtocol_First <= ping_protocol ) && ( ping_protocol <= PingProtocol_Last ) ); + + Protocol = ping_protocol; +} + int Configuration::get_hosts_down_limit() const { return HostsDownLimit; @@ -136,7 +149,9 @@ int Configuration::get_link_up_interval_in_min() const return LinkUpIntervalInMin; } -void Configuration::set_link_up_interval_in_min( const int link_up_interval_in_min ) +void Configuration::set_link_up_interval_in_min( + const int link_up_interval_in_min +) { BOOST_ASSERT( ( MinStableLinkIntervalInMin <= link_up_interval_in_min ) && ( link_up_interval_in_min <= MaxStableLinkIntervalInMin ) ); @@ -148,7 +163,9 @@ int Configuration::get_link_down_interval_in_min() const return LinkDownIntervalInMin; } -void Configuration::set_link_down_interval_in_min( const int link_down_interval_in_min ) +void Configuration::set_link_down_interval_in_min( + const int link_down_interval_in_min +) { BOOST_ASSERT( ( MinStableLinkIntervalInMin <= link_down_interval_in_min ) && ( link_down_interval_in_min <= MaxStableLinkIntervalInMin ) ); diff --git a/src/config/configuration.h b/src/config/configuration.h index 190fe53..54c3b3c 100644 --- a/src/config/configuration.h +++ b/src/config/configuration.h @@ -28,6 +28,7 @@ on this file might be covered by the GNU General Public License. #include #include "config/host.h" +#include "host/pingprotocol.h" //----------------------------------------------------------------------------- // Configuration @@ -53,6 +54,9 @@ public: const std::string &source_network_interface ); + PingProtocol get_ping_protocol() const; + void set_ping_protocol( const PingProtocol ping_protocol ); + int get_hosts_down_limit() const; void set_hosts_down_limit( const int hosts_down_limit ); @@ -76,6 +80,7 @@ private: std::string ConfigFileName; std::string SourceNetworkInterface; std::string NameServer; + PingProtocol Protocol; int HostsDownLimit; int MinHostsDownLimit; int MaxHostsDownLimit; diff --git a/src/config/configurationreader.cpp b/src/config/configurationreader.cpp index b8d1f8c..855e583 100644 --- a/src/config/configurationreader.cpp +++ b/src/config/configurationreader.cpp @@ -56,6 +56,8 @@ ConfigurationReader::ConfigurationReader() : DefaultNameServer( "127.0.0.1" ), NameServerCmdStr( "nameserver" ), NameServerCmdDesc( "The local address from where the DNS query will be made." ), + PingProtocolCmdStr( "ping-protocol" ), + PingProtocolCmdDesc( "Defines which protocol will be used to ping the destination." ), DefaultHostsDownLimit( 0 ), // no host down HostsDownLimitCmdStr( "hosts-down-limit" ), HostsDownLimitCmdDesc( "Limit of host that have to be down in order to notify." ), @@ -207,6 +209,7 @@ options_description ConfigurationReader::get_configuration_options() const options.add_options() ( SourceNetworkInterfaceCmdStr.c_str(), value(), SourceNetworkInterfaceCmdDesc.c_str() ) ( NameServerCmdStr.c_str(), value()->default_value( DefaultNameServer ), NameServerCmdDesc.c_str() ) + ( PingProtocolCmdStr.c_str(), value(), PingProtocolCmdDesc.c_str() ) ( HostsDownLimitCmdStr.c_str(), value()->default_value( DefaultHostsDownLimit ), HostsDownLimitCmdDesc.c_str() ) ( PingFailLimitCmdStr.c_str(), value()->default_value( DefaultPingFailLimit ), PingFailLimitCmdDesc.c_str() ) ( StatusNotifierCmdCmdStr.c_str(), value(), StatusNotifierCmdCmdDesc.c_str() ) @@ -242,6 +245,17 @@ bool ConfigurationReader::parse_configuration_options( const variables_map &vm ) << nameserver << endl; } + // ping-protocol + if ( vm.count( PingProtocolCmdStr ) > 0 ) + { + string protocol_string = vm[ PingProtocolCmdStr ].as (); + PingProtocol protocol = get_ping_protocol_from_string( protocol_string ); + Config.set_ping_protocol( protocol ); + + GlobalLogger.info() << PingProtocolCmdStr << "=" + << protocol_string << endl; + } + // hosts-down-limit int host_down_limit = 0; if ( vm.count( HostsDownLimitCmdStr ) > 0 ) diff --git a/src/config/configurationreader.h b/src/config/configurationreader.h index 4e22552..338db85 100644 --- a/src/config/configurationreader.h +++ b/src/config/configurationreader.h @@ -89,6 +89,8 @@ private: const std::string DefaultNameServer; const std::string NameServerCmdStr; const std::string NameServerCmdDesc; + const std::string PingProtocolCmdStr; + const std::string PingProtocolCmdDesc; const int DefaultHostsDownLimit; const std::string HostsDownLimitCmdStr; const std::string HostsDownLimitCmdDesc; -- 1.7.1