}
BOOST_AUTO_UNIT_TEST(ipv6Extensions_hopByHop_create)
-{
- try{
+{
std::ostringstream oss (std::ostringstream::out);
unsigned char HopByHop_packetData[] = {
//Ethernet
0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //IPv6 Destination address ff02::16
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16,
- //HopByHop option
+// HopByHop option
0x3a, //next Header (ICMPv6)
0x00, //Length (0 = 8Bytes)
- //option Header
+// option Header
0x05, //option type
0x02, //option Length (= 2 byte)
0x00, 0x00, //data (zero data here ...)
0x01, 0x00, //padding
- //ICMPv6
+// ICMPv6
0x8f, //type 143
0x00, //code 0, should always be 0
0x50 ,0xcc , //checksum
- //MLDv2
+// MLDv2
0x00 ,0x00 , //reserved, zero by default
0x00 ,0x01 , //nr of McAddressRecords
0x04 , //recordType
}
senf::ICMPv6Packet icmp (senf::ICMPv6Packet::createAfter (pext));
- icmp->type() = 0x8f;
icmp->code() = 0u;
- icmp->checksum() = 0u;
senf::MLDv2ListenerReport mld ( senf::MLDv2ListenerReport::createAfter(icmp) );
{
senf::MLDv2ListenerReport::Parser::mcastAddrRecords_t::container c (mld->mcastAddrRecords() );
c.back().mcAddress() = addr;
}
eth.finalizeAll();
- SENF_CHECK_NO_THROW( ip.dump(oss) );
+ SENF_CHECK_NO_THROW( eth.dump(oss) );
SENF_CHECK_EQUAL_COLLECTIONS(
HopByHop_packetData, HopByHop_packetData+sizeof(HopByHop_packetData),
eth.data().begin(), eth.data().end() );
- eth.dump(std::cout);
- senf::hexdump(eth.data().begin(), eth.data().end(), std::cout);
- std::cout << "\n\n" << std::endl;
- senf::hexdump(boost::begin(HopByHop_packetData), boost::end(HopByHop_packetData), std::cout);
- }
- catch (std::exception & e)
+}
+
+//provisionary unittest, only creating extensino Header Packet type
+BOOST_AUTO_UNIT_TEST(ipv6Extensions_hopByHop_create_SN) {
+
+ unsigned char data[] = { 0x3a, 0x00, 0x0d, 0x03, 0x01, 0xab, 0xcd, 0x00 };
+
+ senf::IPv6HopByHopOptionsPacket p ( senf::IPv6HopByHopOptionsPacket::create() );
+ p->nextHeader() = 58u;
{
- std::cerr << e.what() << std::endl; throw;
+ senf::IPv6HopByHopOptionsPacket::Parser::options_t::container optC(p->options() );
+ {
+ senf::IPv6ChecksumOptionTLVParser opt ( optC.push_back_space().init<senf::IPv6ChecksumOptionTLVParser>());
+// opt.altAction() = 0u;
+// opt.changeFlag() = 0u;
+// opt.optionType() = 5u;
+ SENF_CHECK_NO_THROW( opt.SlfNetType() = 1u) ;
+ opt.checksum() = 0xabcdu;
+ }
}
+ SENF_CHECK_EQUAL_COLLECTIONS( data, data+sizeof(data),
+ p.data().begin(), p.data().end() );
}
///////////////////////////////cc.e////////////////////////////////////////