X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FDefaultBundle%2FNDPMessage.test.cc;h=2b5914c6d77480be344f3d9e027427bf416b58c7;hb=874b9d37b59223d9b0dce3bddafa130045419750;hp=35b3392071f02f7f0b8b5ad052151db2870bb6c7;hpb=57524bfa72e4536b15700a83eae94093ed32106a;p=senf.git diff --git a/senf/Packets/DefaultBundle/NDPMessage.test.cc b/senf/Packets/DefaultBundle/NDPMessage.test.cc index 35b3392..2b5914c 100644 --- a/senf/Packets/DefaultBundle/NDPMessage.test.cc +++ b/senf/Packets/DefaultBundle/NDPMessage.test.cc @@ -34,45 +34,37 @@ ///////////////////////////////cc.p//////////////////////////////////////// SENF_AUTO_UNIT_TEST(NDPMessage_create) { - senf::ICMPv6Packet icmp (senf::ICMPv6Packet::create()); - icmp->code() = 0; + senf::dumpPacketRegistries(std::cout); - senf::NDPNeighborAdvertisementMessage nadm (senf::NDPNeighborAdvertisementMessage::createAfter(icmp)); - nadm->r() = true; - nadm->s() = true; - nadm->o() = false; - nadm->target() = senf::INet6Address::Loopback; + unsigned char data[] = { + 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3a, 0xff, //IPv6 + 0x20, 0x01, 0x08, 0x90, 0x06, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, + 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xff, 0x03, 0x00, 0x02, + 0x87, 0x00, 0xaf, 0x30, //ICMPv6 + 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x08, 0x90, //Neighbor Solicitation + 0x60, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x02, + 0x01, 0x01, 0x00, 0x0d, //Source Option + 0x88, 0x70, 0xe4, 0xc0, + }; - senf::NDPNeighborAdvertisementMessage::Parser::options_t::container optC(nadm->options()); - senf::NDPMTUTLVParser opt( - optC.push_back_space().init ()); - senf::NDPTargetLLAddressTLVParser opt2( - optC.push_back_space().init ()); - opt.mtu() = 1234u; - opt2.target() = senf::MACAddress::Broadcast; + senf::IPv6Packet ip (senf::IPv6Packet::create(data)); + senf::ICMPv6Packet icmp (ip.find()); - icmp.finalizeAll(); - - BOOST_CHECK_EQUAL(icmp->type(), 0x88 ); + BOOST_CHECK_EQUAL(icmp->type(), 0x87 ); BOOST_CHECK( icmp.next() ); - BOOST_CHECK( icmp.next().is() ); - senf::NDPNeighborAdvertisementMessage rnadm (icmp.next().as()); - - BOOST_CHECK_EQUAL( rnadm->r(), true ); - BOOST_CHECK_EQUAL( rnadm->s(), true ); - BOOST_CHECK_EQUAL( rnadm->o(), false ); + BOOST_CHECK( icmp.next().is() ); + senf::NDPNeighborSolicitationMessage rnadm (icmp.next().as()); + BOOST_CHECK_EQUAL(rnadm.size(),28); - senf::NDPNeighborAdvertisementMessage::Parser::options_t::container roptC(rnadm->options() ); - senf::NDPNeighborAdvertisementMessage::Parser::options_t::container::iterator listIter (roptC.begin()); - BOOST_CHECK( listIter->is() ); - BOOST_CHECK_EQUAL( listIter->type(), 5u ); - BOOST_CHECK_EQUAL( listIter->length(), 1u ); - senf::NDPMTUTLVParser mtuopt (listIter->as()); - BOOST_CHECK_EQUAL( mtuopt.mtu(), 1234u ); - listIter++; - BOOST_CHECK( listIter->is() ); - BOOST_CHECK_EQUAL( listIter->type(), 2u ); + senf::NDPNeighborSolicitationMessage::Parser::options_t::container roptC(rnadm->options() ); + senf::NDPNeighborSolicitationMessage::Parser::options_t::container::const_iterator listIter (roptC.begin()); + BOOST_CHECK( listIter->is() ); + BOOST_CHECK_EQUAL( listIter->type(), 1u ); BOOST_CHECK_EQUAL( listIter->length(), 1u ); + senf::NDPSourceLLAddressTLVParser llopt (listIter->as()); } ///////////////////////////////cc.e////////////////////////////////////////