#include <iostream>
 
+#include <boost/assert.hpp>
+
 #include <logfunc.hpp>
 
 using namespace std;
         const address &source_address
 ) const
 {
+    BOOST_ASSERT( source_address.is_v4() );
+
     return match( Icmpv4Type_EchoReply, identifier, sequence_number, source_address );
 }
 
         const address &source_address
 ) const
 {
+    BOOST_ASSERT( source_address.is_v4() );
+
     return match( Icmpv4Type_DestinationUnreachable, identifier, sequence_number, source_address );
 }
 
         const address &source_address
 ) const
 {
+    BOOST_ASSERT( source_address.is_v4() );
+
     bool type_match = IcmpPayloadHeader.get_type() == type ? true : false;
     bool identifier_match = IcmpPayloadHeader.get_identifier() == identifier ? true: false;
     bool seq_num_match = IcmpPayloadHeader.get_sequence_number() == sequence_number ? true : false;
 
 
 #include <iostream>
 
+#include <boost/assert.hpp>
+
 #include <logfunc.hpp>
 
 using namespace std;
         const address &source_address
 ) const
 {
+    BOOST_ASSERT( source_address.is_v6() );
+
     return match( Icmpv6Type_EchoReply, identifier, sequence_number, source_address );
 }
 
         const address &source_address
 ) const
 {
+    BOOST_ASSERT( source_address.is_v6() );
+
     return match( Icmpv6Type_DestinationUnreachable, identifier, sequence_number, source_address );
 }
 
         const Icmpv6Type type,
         const uint16_t identifier,
         const uint16_t sequence_number,
-        const address &/*source_address*/
+        const address &source_address
 ) const
 {
+    BOOST_ASSERT( source_address.is_v6() );
+
     bool type_match = IcmpPayloadHeader.get_type() == type ? true : false;
     bool identifier_match = IcmpPayloadHeader.get_identifier() == identifier ? true: false;
     bool seq_num_match = IcmpPayloadHeader.get_sequence_number() == sequence_number ? true : false;
 
 
 #include "tcp/tcpipv4segment.h"
 
+#include <boost/assert.hpp>
+
 #include <logfunc.hpp>
 
 using namespace std;
         const address &source_address
 ) const
 {
+    BOOST_ASSERT( source_address.is_v4() );
+
     Ipv4Header ipv4_header = get_ip_header();
     TcpHeader tcp_header = get_tcp_header();
 
 
 
 #include "tcp/tcpipv6segment.h"
 
+#include <boost/assert.hpp>
+
 #include <logfunc.hpp>
 
 using namespace std;
         const address &source_address
 ) const
 {
+    BOOST_ASSERT( source_address.is_v6() );
+
     Ipv6Header ipv6_header = get_ip_header();
     TcpHeader tcp_header = get_tcp_header();