#include <logfunc.hpp>
 
 #include "dns/dnsresolver.h"
+#include "host/pingerfactory.h"
 #include "icmp/icmppinger.h"
 #include "link/linkstatus.h"
 
 // PingScheduler
 //-----------------------------------------------------------------------------
 
+/**
+ * @brief Parameterized constructor.
+ *
+ * @param network_interface The name of the network interface originating the pings.
+ * @param destination_address The remote address to ping.
+ * @param destination_port The remote port to ping.
+ * @param ping_protocol_list A list of protocols to use.
+ * @param ping_interval_in_sec Amount of time between each ping.
+ * @param ping_fail_percentage_limit Maximum amount of pings that can fail.
+ * @param nameserver Server to resolve the addresses.
+ * @param link_analyzer The object to monitor the link status.
+ */
 PingScheduler::PingScheduler(
         const string &network_interface,
         const string &destination_address,
         const uint16_t destination_port,
-        const PingProtocol ping_protocol,
+        const PingProtocolList ping_protocol_list,
         const long ping_interval_in_sec,
         const int ping_fail_percentage_limit,
         const string &nameserver,
     BOOST_ASSERT( !network_interface.empty() );
     BOOST_ASSERT( !destination_address.empty() );
     BOOST_ASSERT( 0 < destination_port );
-    BOOST_ASSERT( /*(PingProtocol_First <= ping_protocol) && */(ping_protocol <= PingProtocol_Last) );
     BOOST_ASSERT( 0 < ping_interval_in_sec );
     BOOST_ASSERT( (0 <= ping_fail_percentage_limit) && (ping_fail_percentage_limit <= 100) );
     BOOST_ASSERT( !nameserver.empty() );
 
-    Ping = PingerFactory::createPinger( ping_protocol, IoService, network_interface );
+    Ping = PingerFactory::createPinger( ping_protocol_list, IoService, network_interface );
 }
 
+/**
+ * @brief Destructor.
+ */
 PingScheduler::~PingScheduler()
 {
 }
 
 #include "link/linkstatus.h"
 #include "host/hoststatus.h"
 #include "host/pinger.h"
-#include "host/pingerfactory.h"
 #include "host/pinginterval.h"
 #include "host/pingprotocol.h"
-#include "icmp/icmppinger.h"
 
 //-----------------------------------------------------------------------------
 // PingScheduler
             const std::string &network_interface,
             const std::string &destination_address,
             const uint16_t destination_port,
-            const PingProtocol ping_protocol,
+            const PingProtocolList ping_protocol_list,
             const long ping_interval_in_sec,
             const int ping_fail_percentage_limit,
             const std::string &nameserver,