Skip to content
Snippets Groups Projects
Commit a053b599 authored by pug's avatar pug
Browse files

added Destination Options skeleton for IPv6 extension Header and added that to IpTypes registry

parent 5a825d5f
No related branches found
No related tags found
No related merge requests found
......@@ -39,6 +39,8 @@ namespace {
registerIPv6ExtensionType_Routing (43);
senf::PacketRegistry<senf::IpTypes>::RegistrationProxy<senf::IPv6Extension_HopByHop>
registerIPv6ExtensionType_HopByHop (0u);
senf::PacketRegistry<senf::IpTypes>::RegistrationProxy<senf::IPv6Extension_Destination>
registerIPv6ExtensionType_Destination (60u);
}
prefix_ void senf::IPv6ExtensionType_Fragment::dump(packet p, std::ostream & os)
......@@ -72,6 +74,13 @@ prefix_ void senf::IPv6ExtensionType_HopByHop::dump(packet p, std::ostream & os)
<< " header length : " << unsigned (p->headerLength()) << "\n";
}
prefix_ void senf::IPv6ExtensionType_Destination::dump(packet p, std::ostream & os)
{
os << "Internet protocol Version 6 Destination Options extension:\n"
<< " next header : " << unsigned (p->nextHeader()) << "\n"
<< " header length : " << unsigned (p->headerLength()) << "\n";
}
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_
//#include "IPv6Extensions.mpp"
......
......@@ -281,6 +281,74 @@ The Type 0 Routing header has the following format: (RFC 2460)
/** \brief IPv6 routing Hop-By-Hop packet typedef */
typedef ConcretePacket<IPv6ExtensionType_HopByHop> IPv6Extension_HopByHop;
// =====================================================================================================
/** \brief Parse in IPv6 Destination Options extension header
Parser implementing the IPv6 Destination Options Header extension. The fields implemented are:
\image html IPv6Extensions_Destination.png
\see IPv6ExtensionType_Destination \n
<a href="http://tools.ietf.org/html/rfc2460">RFC 2460</a>
*/
// Destination Options skeleton without TLV-Options
struct IPv6PacketParserExtension_Destination : public PacketParserBase {
# include SENF_PARSER()
SENF_PARSER_FIELD ( nextHeader, UInt8Parser );
SENF_PARSER_FIELD ( headerLength, UInt8Parser );
SENF_PARSER_FINALIZE ( IPv6PacketParserExtension_Destination );
};
/** \brief IPv6 Destination Options extension
\par Packet type (typedef):
\ref IPv6Extension_Destination
\par Fields:
\ref IPv6PacketParserExtension_Destination
\par Associated registries:
\ref IpTypes
\par Finalize action:
Set \a nextHeader from type of next packet if found in \ref IpTypes
\ingroup protocolbundle_default
*/
struct IPv6ExtensionType_Destination
: public PacketTypeBase,
public PacketTypeMixin<IPv6ExtensionType_Destination, IpTypes>
{
#ifndef DOXYGEN
typedef PacketTypeMixin<IPv6ExtensionType_Destination, IpTypes> mixin;
#endif
/** \brief IPv6 Destination Options extension packet typedef */
typedef ConcretePacket<IPv6ExtensionType_Destination> packet;
/** \brief typedef to the parser of IPv6 Destination Options extension packet */
typedef IPv6PacketParserExtension_Destination parser;
using mixin::nextPacketRange;
using mixin::nextPacketType;
using mixin::init;
using mixin::initSize;
static key_t nextPacketKey(packet p)
{ return p->nextHeader(); }
/** \brief Dump given IPv6Extension_Destination in readable form to given output stream */
static void dump(packet p, std::ostream & os);
static void finalize(packet p) {
p->nextHeader() << key(p.next(nothrow)); }
};
/** \brief IPv6 routing Destination Options packet typedef */
typedef ConcretePacket<IPv6ExtensionType_Destination> IPv6Extension_Destination;
} //namespace senf
///////////////////////////////hh.e////////////////////////////////////////
#endif
......
......@@ -147,7 +147,11 @@ BOOST_AUTO_UNIT_TEST(ipv6Extensions)
BOOST_CHECK_EQUAL( pICMPv6->code(), 0u);
BOOST_CHECK_EQUAL( pICMPv6->checksum(), 0xa3d3);
}
//==============================================================================================
/*
no unittests for Hop by Hop - and Destination - Options extension Header yet. No real implementation there, only IPv6 extension skeleton implemented.
*/
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment