#define BOOST_TEST_DYN_LINK
#include <fstream>
+#include <sstream>
#include <ios>
#include <boost/test/unit_test.hpp>
#include <boost/asio.hpp>
BOOST_AUTO_TEST_SUITE( TestIcmpPacket )
-// just read a pcap file to see if helpers work
-BOOST_AUTO_TEST_CASE( TestInternal )
-{
- std::string file_name = "test_icmppacket_echorequest.pcap";
- IcmpPacketItem packet = read_packet(file_name);
- BOOST_CHECK( packet );
-}
-
-
BOOST_AUTO_TEST_CASE( EchoRequest )
{
- std::string file_name = "test_icmppacket_echorequest.pcap";
- IcmpPacketItem packet = read_packet(file_name);
+ std::string request_file = "icmp_echorequest.pcap";
+
+ // read request file
+ IcmpPacketItem packet = read_packet(request_file);
BOOST_REQUIRE( packet );
BOOST_CHECK_EQUAL( packet->get_type_v4(), Icmpv4Type_EchoRequest );
BOOST_CHECK_EQUAL( packet->get_source_address().to_string(),
BOOST_CHECK_EQUAL( packet->get_icmp_size(), 20 );
}
+
+BOOST_AUTO_TEST_CASE( EchoReply )
+{
+ std::string reply_file = "icmp_echoreply.pcap";
+
+ // read reply file
+ IcmpPacketItem packet = read_packet(reply_file);
+ BOOST_REQUIRE( packet );
+ BOOST_CHECK_EQUAL( packet->get_type_v4(), Icmpv4Type_EchoReply );
+ BOOST_CHECK_EQUAL( packet->get_source_address().to_string(),
+ "38.100.128.10");
+ BOOST_CHECK_EQUAL( packet->get_destination_address().to_string(),
+ "172.16.1.141");
+ BOOST_CHECK_EQUAL( packet->get_icmp_code(), 0 );
+ BOOST_CHECK_EQUAL( packet->get_icmp_size(), 20 );
+ BOOST_CHECK( packet->match_echo_reply(0xaf36, 1,
+ boost::asio::ip::address_v4::from_string("38.100.128.10")) );
+}
+
+BOOST_AUTO_TEST_CASE( TimeExceeded )
+{
+ std::string file_name = "icmp_timeexceeded.pcap";
+
+ // read file
+ IcmpPacketItem packet = read_packet(file_name);
+ BOOST_REQUIRE( packet );
+ BOOST_CHECK_EQUAL( packet->get_type_v4(), Icmpv4Type_TimeExceeded );
+ BOOST_CHECK_EQUAL( packet->get_source_address().to_string(),
+ "193.186.7.1");
+ BOOST_CHECK_EQUAL( packet->get_destination_address().to_string(),
+ "172.16.1.141");
+ BOOST_CHECK_EQUAL( packet->get_icmp_code(), 0 );
+ BOOST_CHECK_EQUAL( packet->get_icmp_size(), 48 );
+ BOOST_CHECK( packet->match_time_exceeded(0x4ae3, 1,
+ boost::asio::ip::address_v4::from_string("193.168.7.1")) );
+}
+
+BOOST_AUTO_TEST_CASE( DestinationUnreachable )
+{
+ std::string file_name = "icmp_destinationunreachable.pcap";
+
+ // read file
+ IcmpPacketItem packet = read_packet(file_name);
+ BOOST_REQUIRE( packet );
+ BOOST_CHECK_EQUAL( packet->get_type_v4(), Icmpv4Type_DestinationUnreachable );
+ BOOST_CHECK_EQUAL( packet->get_source_address().to_string(),
+ "172.16.1.254");
+ BOOST_CHECK_EQUAL( packet->get_destination_address().to_string(),
+ "172.16.1.141");
+ BOOST_CHECK_EQUAL( packet->get_icmp_code(), 3 );
+ BOOST_CHECK_EQUAL( packet->get_icmp_size(), 92 );
+ BOOST_CHECK( packet->match_destination_unreachable(0x077b, 1,
+ boost::asio::ip::address_v4::from_string("85.214.66.2")) );
+}
+
BOOST_AUTO_TEST_SUITE_END()
// (created using vim -- the world's best text editor)