X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FDefaultBundle%2FICMPv6Packet.test.cc;h=0d288d137816b4dd946b89753036b9c9560ed6d0;hb=6c0332484574ed1cb571bbc0dc9f0a37d6653282;hp=a1b9b8c45e826c9fff17149f92e12b563f395072;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Packets/DefaultBundle/ICMPv6Packet.test.cc b/senf/Packets/DefaultBundle/ICMPv6Packet.test.cc index a1b9b8c..0d288d1 100644 --- a/senf/Packets/DefaultBundle/ICMPv6Packet.test.cc +++ b/senf/Packets/DefaultBundle/ICMPv6Packet.test.cc @@ -24,12 +24,14 @@ \brief ICMPv6Packet unit tests */ // Custom includes +#include #include "ICMPv6Packet.hh" #include "ICMPv6TypePacket.hh" -#include "../../Utils/auto_unit_test.hh" +#include #include +///////////////////////////////cc.p//////////////////////////////////////// BOOST_AUTO_UNIT_TEST(ICMPv6Packet_packet) { @@ -157,6 +159,86 @@ BOOST_AUTO_UNIT_TEST(ICMPv6Packet_packet) } +BOOST_AUTO_UNIT_TEST(ICMPv6Packet_create) +{ + std::ostringstream oss (std::ostringstream::out); + + unsigned char ping[] = { 0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3a, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x80, 0x00, 0xda, 0xe0, 0x9f, 0x7e, 0x00, 0x09, + + 0xb7, 0x3c, 0xbb, 0x4a, 0x9d, 0x90, 0x0a, 0x00, //payload + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 + }; + + senf::IPv6Packet ip (senf::IPv6Packet::create()); + ip->hopLimit() = 64; + ip->source() = senf::INet6Address::Loopback; + ip->destination() = senf::INet6Address::Loopback; + + senf::ICMPv6Packet icmp (senf::ICMPv6Packet::createAfter(ip)); + icmp->code() = 0; + + senf::ICMPv6EchoRequest ereq (senf::ICMPv6EchoRequest::createAfter(icmp)); + ereq->identifier() = 0x9f7e; + ereq->seqNr() = 9; + + senf::DataPacket data ( + senf::DataPacket::createAfter(ereq, std::make_pair(ping+48, ping+sizeof(ping)))); + + ip.finalizeAll(); + + SENF_CHECK_NO_THROW (ip.dump( oss )); + + std::string dump ( + "Internet protocol Version 6:\n" + " version : 6\n" + " traffic class : 0x00\n" + " flow label : 0x00000\n" + " payload length : 64\n" + " next header : 58\n" + " hop limit : 64\n" + " source : ::1\n" + " destination : ::1\n" + "ICMPv6 protocol:\n" + " type : 128\n" + " code : 0\n" + " checksum : 0xdae0\n" + "ICMPv6 Echo Request:\n" + " Identifier : 40830\n" + " SequenceNumber : 9\n" + "Payload data (56 bytes)\n" + ); + + { + std::stringstream ss; + ip.dump(ss); + BOOST_CHECK_EQUAL( ss.str(), dump ); + } + + SENF_CHECK_EQUAL_COLLECTIONS( ip.data().begin(), ip.data().end(), + ping, ping+sizeof(ping) ); + + senf::IPv6Packet orig (senf::IPv6Packet::create(ping)); + + { + std::stringstream ss; + orig.dump(ss); + BOOST_CHECK_EQUAL( ss.str(), dump ); + } +} + +///////////////////////////////cc.e//////////////////////////////////////// + + // Local Variables: // mode: c++ // fill-column: 100