#include <boost/test/unit_test.hpp>
#include "icmp/icmptype.h"
-#include "icmp/icmpv4header.h"
+#include "icmp/icmpheader.h"
+#include "icmp/icmpechodata.h"
+#include "icmp/icmpdestinationunreachabledata.h"
BOOST_AUTO_TEST_SUITE( TestIcmpv4Header )
sb.pubsetbuf( raw_packet_stream, sizeof(raw_packet_stream) );
std::basic_istream<uint8_t> is( &sb );
- Icmpv4Header icmp_header;
- reinterpret_cast<std::istream&>(is) >> icmp_header;
+ IcmpHeader icmp_header;
+ IcmpEchoData icmp_data(64 - 4);
+ reinterpret_cast<std::istream&>(is) >> icmp_header >> icmp_data;
BOOST_CHECK_EQUAL( icmp_header.get_type(), Icmpv4Type_EchoReply );
BOOST_CHECK_EQUAL( icmp_header.get_code(), 0 );
BOOST_CHECK_EQUAL( icmp_header.get_checksum(), 0x787D );
- BOOST_CHECK_EQUAL( icmp_header.get_identifier(), 0x090F );
- BOOST_CHECK_EQUAL( icmp_header.get_sequence_number(), 1 );
+ BOOST_CHECK_EQUAL( icmp_data.get_identifier(), 0x090F );
+ BOOST_CHECK_EQUAL( icmp_data.get_sequence_number(), 1 );
}
BOOST_AUTO_TEST_CASE( echo_request )
sb.pubsetbuf( raw_packet_stream, sizeof(raw_packet_stream) );
std::basic_istream<uint8_t> is( &sb );
- Icmpv4Header icmp_header;
- reinterpret_cast<std::istream&>(is) >> icmp_header;
+ IcmpHeader icmp_header;
+ IcmpEchoData icmp_data(64 - 4);
+ reinterpret_cast<std::istream&>(is) >> icmp_header >> icmp_data;
BOOST_CHECK_EQUAL( icmp_header.get_type(), Icmpv4Type_EchoRequest );
BOOST_CHECK_EQUAL( icmp_header.get_code(), 0 );
BOOST_CHECK_EQUAL( icmp_header.get_checksum(), 0x28D1 );
- BOOST_CHECK_EQUAL( icmp_header.get_identifier(), 0x0921 );
- BOOST_CHECK_EQUAL( icmp_header.get_sequence_number(), 2 );
+ BOOST_CHECK_EQUAL( icmp_data.get_identifier(), 0x0921 );
+ BOOST_CHECK_EQUAL( icmp_data.get_sequence_number(), 2 );
}
BOOST_AUTO_TEST_CASE( destination_unreachable )
sb.pubsetbuf( raw_packet_stream, sizeof(raw_packet_stream) );
std::basic_istream<uint8_t> is( &sb );
- Icmpv4Header icmp_header;
- reinterpret_cast<std::istream&>(is) >> icmp_header;
+ IcmpHeader icmp_header;
+ IcmpDestinationUnreachableData icmp_data(92-4);
+ reinterpret_cast<std::istream&>(is) >> icmp_header >> icmp_data;
BOOST_CHECK_EQUAL( icmp_header.get_type(), Icmpv4Type_DestinationUnreachable );
BOOST_CHECK_EQUAL( icmp_header.get_code(), 1 );
#include <boost/test/unit_test.hpp>
#include "icmp/icmptype.h"
-#include "icmp/icmpv6header.h"
+#include "icmp/icmpheader.h"
+#include "icmp/icmpechodata.h"
+#include "icmp/icmpdestinationunreachabledata.h"
BOOST_AUTO_TEST_SUITE( TestIcmpv6Header )
sb.pubsetbuf( raw_packet_stream, sizeof(raw_packet_stream) );
std::basic_istream<uint8_t> is( &sb );
- Icmpv6Header icmp_header;
- reinterpret_cast<std::istream&>(is) >> icmp_header;
+ IcmpHeader icmp_header;
+ IcmpEchoData icmp_data(64 - 4);
+ reinterpret_cast<std::istream&>(is) >> icmp_header >> icmp_data;
BOOST_CHECK_EQUAL( icmp_header.get_type(), Icmpv6Type_EchoReply );
BOOST_CHECK_EQUAL( icmp_header.get_code(), 0 );
BOOST_CHECK_EQUAL( icmp_header.get_checksum(), 0xBF50 );
- BOOST_CHECK_EQUAL( icmp_header.get_identifier(), 0x0EBE );
- BOOST_CHECK_EQUAL( icmp_header.get_sequence_number(), 26 );
+ BOOST_CHECK_EQUAL( icmp_data.get_identifier(), 0x0EBE );
+ BOOST_CHECK_EQUAL( icmp_data.get_sequence_number(), 26 );
}
BOOST_AUTO_TEST_CASE( echo_request )
sb.pubsetbuf( raw_packet_stream, sizeof(raw_packet_stream) );
std::basic_istream<uint8_t> is( &sb );
- Icmpv6Header icmp_header;
- reinterpret_cast<std::istream&>(is) >> icmp_header;
+ IcmpHeader icmp_header;
+ IcmpEchoData icmp_data(64 - 4);
+ reinterpret_cast<std::istream&>(is) >> icmp_header >> icmp_data;
BOOST_CHECK_EQUAL( icmp_header.get_type(), Icmpv6Type_EchoRequest );
BOOST_CHECK_EQUAL( icmp_header.get_code(), 0 );
BOOST_CHECK_EQUAL( icmp_header.get_checksum(), 0xEDA4 );
- BOOST_CHECK_EQUAL( icmp_header.get_identifier(), 0x11FD );
- BOOST_CHECK_EQUAL( icmp_header.get_sequence_number(), 6 );
+ BOOST_CHECK_EQUAL( icmp_data.get_identifier(), 0x11FD );
+ BOOST_CHECK_EQUAL( icmp_data.get_sequence_number(), 6 );
}
BOOST_AUTO_TEST_SUITE_END()