Adding the ping protocol configuration option
authorGuilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Fri, 15 Jul 2011 02:38:29 +0000 (23:38 -0300)
committerGuilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Fri, 15 Jul 2011 02:38:29 +0000 (23:38 -0300)
src/config/configuration.cpp
src/config/configuration.h
src/config/configurationreader.cpp
src/config/configurationreader.h

index 8c56aca..4cf3747 100644 (file)
@@ -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 ) );
 
index 190fe53..54c3b3c 100644 (file)
@@ -28,6 +28,7 @@ on this file might be covered by the GNU General Public License.
 #include <boost/shared_ptr.hpp>
 
 #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;
index b8d1f8c..855e583 100644 (file)
@@ -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<string>(), SourceNetworkInterfaceCmdDesc.c_str() )
         ( NameServerCmdStr.c_str(), value<string>()->default_value( DefaultNameServer ), NameServerCmdDesc.c_str() )
+        ( PingProtocolCmdStr.c_str(), value<string>(), PingProtocolCmdDesc.c_str() )
         ( HostsDownLimitCmdStr.c_str(), value<int>()->default_value( DefaultHostsDownLimit ), HostsDownLimitCmdDesc.c_str() )
         ( PingFailLimitCmdStr.c_str(), value<int>()->default_value( DefaultPingFailLimit ), PingFailLimitCmdDesc.c_str() )
         ( StatusNotifierCmdCmdStr.c_str(), value<string>(), 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<string> ();
+        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 )
index 4e22552..338db85 100644 (file)
@@ -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;