X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FDefaultBundle%2FIpV4Packet.test.cc;h=68fc7b09c892cdb59a544a41432763a944d66302;hb=d6abda313f70c8a849c5e3f3bbfc12ce301789f1;hp=6fe9b67124c1b9545e64da2608e9cb3108b3a071;hpb=9357448dc66bc9acfd3bd8db423deb75bcd6a2c4;p=senf.git diff --git a/Packets/DefaultBundle/IpV4Packet.test.cc b/Packets/DefaultBundle/IpV4Packet.test.cc index 6fe9b67..68fc7b0 100644 --- a/Packets/DefaultBundle/IpV4Packet.test.cc +++ b/Packets/DefaultBundle/IpV4Packet.test.cc @@ -27,8 +27,9 @@ // Custom includes #include "IpV4Packet.hh" +#include "UDPPacket.hh" -#include +#include "../../Utils/auto_unit_test.hh" #include #define prefix_ @@ -36,37 +37,6 @@ using namespace senf; -BOOST_AUTO_UNIT_TEST(ipV4Packet_parser) -{ - unsigned char data[] = { 0x01, 0x02, 0x03, 0x04, - 0x05, 0x06, 0x07, 0x08, - 0x09, 0x0A, 0x0B, 0x0C, - 0x11, 0x12, 0x13, 0x14, - 0x15, 0x16, 0x17, 0x18 - }; - - typedef unsigned char * iterator; - Parse_IpV4 p(data); - - BOOST_CHECK_EQUAL( p.version(), 0x00u ); - BOOST_CHECK_EQUAL( p.ihl(), 0x01u ); - // the static_cast is to silence gcc-3.3 - BOOST_CHECK_EQUAL( static_cast(p.tos()), 0x02u ); - BOOST_CHECK_EQUAL( static_cast(p.length()), 0x0304u ); - BOOST_CHECK_EQUAL( static_cast(p.identifier()), 0x0506u ); - BOOST_CHECK_EQUAL( p.reserved(), 0 ); - BOOST_CHECK_EQUAL( p.df(), 0 ); - BOOST_CHECK_EQUAL( p.mf(), 0 ); - BOOST_CHECK_EQUAL( p.frag(), 0x0708u ); - BOOST_CHECK_EQUAL( static_cast(p.ttl()), 0x09u ); - BOOST_CHECK_EQUAL( static_cast(p.protocol()), 0x0Au ); - BOOST_CHECK_EQUAL( static_cast(p.crc()), 0x0B0Cu ); - BOOST_CHECK_EQUAL( p.source(), 0x11121314u ); - BOOST_CHECK_EQUAL( p.destination(), 0x15161718u ); - -} - - BOOST_AUTO_UNIT_TEST(ipV4Packet_packet) { @@ -77,28 +47,47 @@ BOOST_AUTO_UNIT_TEST(ipV4Packet_packet) 0x15, 0x16, 0x17, 0x18 }; - IpV4Packet::ptr p (Packet::create(data, data+sizeof(data))); + senf::IpV4Packet p (senf::IpV4Packet::create(data)); BOOST_CHECK_EQUAL( p->version(), 0x00u ); BOOST_CHECK_EQUAL( p->ihl(), 0x01u ); - // the static_cast is to silence gcc-3.3 - BOOST_CHECK_EQUAL( static_cast(p->tos()), 0x02u ); - BOOST_CHECK_EQUAL( static_cast(p->length()), 0x0304u ); - BOOST_CHECK_EQUAL( static_cast(p->identifier()), 0x0506u ); + BOOST_CHECK_EQUAL( p->tos(), 0x02u ); + BOOST_CHECK_EQUAL( p->length(), 0x0304u ); + BOOST_CHECK_EQUAL( p->identifier(), 0x0506u ); BOOST_CHECK_EQUAL( p->reserved(), 0 ); BOOST_CHECK_EQUAL( p->df(), 0 ); BOOST_CHECK_EQUAL( p->mf(), 0 ); BOOST_CHECK_EQUAL( p->frag(), 0x0708u ); - BOOST_CHECK_EQUAL( static_cast(p->ttl()), 0x09u ); - BOOST_CHECK_EQUAL( static_cast(p->protocol()), 0x0Au ); - BOOST_CHECK_EQUAL( static_cast(p->crc()), 0x0B0Cu ); - BOOST_CHECK_EQUAL( p->source(), 0x11121314u ); - BOOST_CHECK_EQUAL( p->destination(), 0x15161718u ); + BOOST_CHECK_EQUAL( p->ttl(), 0x09u ); + BOOST_CHECK_EQUAL( p->protocol(), 0x0Au ); + BOOST_CHECK_EQUAL( p->checksum(), 0x0B0Cu ); + BOOST_CHECK_EQUAL( p->source().value(), senf::INet4Address(0x11121314u) ); + BOOST_CHECK_EQUAL( p->destination().value(), senf::INet4Address(0x15161718u) ); +} +BOOST_AUTO_UNIT_TEST(ipV4Packet_create) +{ + senf::IpV4Packet ip (senf::IpV4Packet::create()); -} + BOOST_CHECK_EQUAL( ip->version(), 4u ); + BOOST_CHECK_EQUAL( ip->ihl(), 5u ); + BOOST_CHECK_EQUAL( ip.size(), 20u ); + senf::UDPPacket udp (senf::UDPPacket::createAfter(ip)); + BOOST_CHECK( ! ip->validateChecksum() ); + + ip.finalize(); + BOOST_CHECK_EQUAL( ip->length(), 28u ); + BOOST_CHECK_EQUAL( ip->protocol(), 17u ); + BOOST_CHECK_EQUAL( ip->checksum(), 0xbad2 ); + + // Check, that the checksum field is correctly skipped + ip.finalize(); + BOOST_CHECK_EQUAL( ip->checksum(), 0xbad2 ); + + BOOST_CHECK( ip->validateChecksum() ); +} ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_ @@ -110,4 +99,6 @@ BOOST_AUTO_UNIT_TEST(ipV4Packet_packet) // c-file-style: "senf" // indent-tabs-mode: nil // ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 // End: