+// $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 <g0dil@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
/** \file
\brief IPv6Extensions public header */
-#ifndef HH_IPv6Extensions_
-#define HH_IPv6Extensions_ 1
+#ifndef HH_SENF_Packets_DefaultBundle_IPv6Extensions_
+#define HH_SENF_Packets_DefaultBundle_IPv6Extensions_ 1
// Custom includes
#include "IPv6Packet.hh"
/** \brief Parse in IPv6 fragment extension header
Parser implementing the IPv6 fragment extension. The fields implemented are:
+ \image html IPv6Extensions_Fragment.png
\see IPv6ExtensionType_Fragment \n
<a href="http://tools.ietf.org/html/rfc2460">RFC 2460</a>
*/
- struct Parse_IPv6Extension_Fragment : public PacketParserBase
+ struct IPv6PacketParserExtension_Fragment : public PacketParserBase
{
# include SENF_FIXED_PARSER()
- SENF_PARSER_FIELD( nextHeader , Parse_UInt8 );
- SENF_PARSER_FIELD( reserved1 , Parse_UInt8 );
+ SENF_PARSER_FIELD( nextHeader , UInt8Parser );
+ SENF_PARSER_FIELD( reserved1 , UInt8Parser );
SENF_PARSER_BITFIELD( fragmentOffset, 13, unsigned );
SENF_PARSER_BITFIELD( reserved2, 2, unsigned );
SENF_PARSER_BITFIELD( moreFragments, 1, bool );
- SENF_PARSER_FIELD( id , Parse_UInt32 );
+ SENF_PARSER_FIELD( id , UInt32Parser );
- SENF_PARSER_FINALIZE(Parse_IPv6Extension_Fragment);
+ SENF_PARSER_FINALIZE(IPv6PacketParserExtension_Fragment);
};
/** \brief IPv6 fragment extension
\ref IPv6Extension_Fragment
\par Fields:
- \ref Parse_IPv6Extension_Fragment
+ \ref IPv6PacketParserExtension_Fragment
\par Associated registries:
- \par IpTypes
+ \ref IpTypes
\par Finalize action:
Set \a nextHeader from type of next packet if found in \ref IpTypes
{
#ifndef DOXYGEN
typedef PacketTypeMixin<IPv6ExtensionType_Fragment, IpTypes> mixin;
- typedef ConcretePacket<IPv6ExtensionType_Fragment> packet;
- typedef Parse_IPv6Extension_Fragment parser;
#endif
+ /** \brief IPv6 fragment extension packet typedef */
+ typedef ConcretePacket<IPv6ExtensionType_Fragment> packet;
+ /** \brief typedef to the parser of IPv6 fragment extension packet */
+ typedef IPv6PacketParserExtension_Fragment parser;
+
using mixin::nextPacketRange;
using mixin::nextPacketType;
using mixin::initSize;
using mixin::init;
- static registry_key_t nextPacketKey(packet p)
+ static key_t nextPacketKey(packet p)
{ return p->nextHeader(); }
- static void dump(packet p, std::ostream & os);
+ /** \brief Dump given IPv6Extension_Fragment 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()); }
+ static void finalize(packet p) {
+ p->nextHeader() << key(p.next(nothrow)); }
};
/** \brief IPv6 fragment extension packet typedef */