X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FDefaultBundle%2FIPv6Packet.test.cc;h=b3f271185844f221cf9f1a18d7dbdfc529fa7273;hb=fd3a0e8ac95d1158e9ea661ddf9187b67c70169f;hp=f0af3a5fdbcfeb0d370199c60694fa96359838b0;hpb=6116cb96ea7bdcb42b7d12165a05fcbe0687226d;p=senf.git diff --git a/Packets/DefaultBundle/IPv6Packet.test.cc b/Packets/DefaultBundle/IPv6Packet.test.cc index f0af3a5..b3f2711 100644 --- a/Packets/DefaultBundle/IPv6Packet.test.cc +++ b/Packets/DefaultBundle/IPv6Packet.test.cc @@ -1,8 +1,8 @@ // $Id$ // // Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -37,22 +37,24 @@ #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// -BOOST_AUTO_UNIT_TEST(ipV6Packet_packet) +BOOST_AUTO_UNIT_TEST(ipV6Packet_parse) { - unsigned char data[] = { 0x60, 0x12, 0x20, 0x30, - 0x01, 0x02, 0x03, 0x04, - 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, - 0xff }; + unsigned char data[] = { + 0x60, 0x12, 0x20, 0x30, + 0x00, 0x01, 0x03, 0x04, + 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, + 0xff + }; senf::IPv6Packet p (senf::IPv6Packet::create(data)); BOOST_CHECK_EQUAL( p->version(), 0x06u ); BOOST_CHECK_EQUAL( p->trafficClass(), 0x01u ); BOOST_CHECK_EQUAL( p->flowLabel(), 0x22030u ); - BOOST_CHECK_EQUAL( p->length(), 0x0102u ); + BOOST_CHECK_EQUAL( p->length(), 0x0001u ); BOOST_CHECK_EQUAL( p->nextHeader(), 0x03u ); BOOST_CHECK_EQUAL( p->hopLimit(), 0x04u ); BOOST_CHECK_EQUAL( p->source().value(), @@ -63,12 +65,39 @@ BOOST_AUTO_UNIT_TEST(ipV6Packet_packet) BOOST_CHECK( p.next() ); BOOST_CHECK( p.next().is() ); BOOST_CHECK_EQUAL( p.next().size(), 1u ); + + std::ostringstream oss (std::ostringstream::out); + SENF_CHECK_NO_THROW( p.dump( oss)); +} + +BOOST_AUTO_UNIT_TEST(ipV6Packet_create) +{ + senf::IPv6Packet ip (senf::IPv6Packet::create()); + + ip->trafficClass() = 0x01u; + ip->flowLabel() = 0x22030u; + ip->hopLimit() = 0x04u; + ip->source() = senf::INet6Address::from_string("1011:1213:1415:1617:1819:1a1b:1c1d:1e1f"); + ip->destination() = senf::INet6Address::from_string("2021:2223:2425:2627:2829:2a2b:2c2d:2e2f"); + + ip.finalizeAll(); + + unsigned char data[] = { + 0x60, 0x12, 0x20, 0x30, + 0x00, 0x00, 0x3b, 0x04, + 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 + }; + BOOST_CHECK_EQUAL_COLLECTIONS( + data, data+sizeof(data), ip.data().begin(), ip.data().end() ); } ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_ - + // Local Variables: // mode: c++ // fill-column: 100