namespace senf {
- // See RFC2460
+ /** \brief Parse in IpV6 fragment extension header
+
+ Parser implementing the IpV6 fragment extension. The fields implemented are:
+
+ \see IpV6ExtensionType_Fragment \n
+ <a href="http://tools.ietf.org/html/rfc2460">RFC 2460</a>
+ */
struct Parse_IpV6Extension_Fragment : public PacketParserBase
{
- SENF_PACKET_PARSER_INIT(Parse_IpV6Extension_Fragment);
-
- ///////////////////////////////////////////////////////////////////////////
-
- typedef Parse_UInt8 Parse_8bit;
- typedef Parse_UIntField < 0, 13 > Parse_Offset;
- typedef Parse_UIntField < 13, 15 > Parse_Reserved;
- typedef Parse_Flag < 15 > Parse_More;
- typedef Parse_UInt32 Parse_32bit;
-
- SENF_PACKET_PARSER_DEFINE_FIXED_FIELDS(
- ((Field )( nextHeader , Parse_8bit ))
- ((Field )( reserved1 , Parse_8bit ))
- ((OverlayField)( fragmentOffset , Parse_Offset ))
- ((OverlayField)( reserved2 , Parse_Reserved ))
- ((Field )( moreFragments , Parse_More ))
- ((Field )( id , Parse_32bit )) );
+# include SENF_FIXED_PARSER()
+
+ SENF_PARSER_FIELD( nextHeader , Parse_UInt8 );
+ SENF_PARSER_FIELD( reserved1 , Parse_UInt8 );
+
+ 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_FINALIZE(Parse_IpV6Extension_Fragment);
};
+ /** \brief IpV6 fragment extension
+
+ \par Packet type (typedef):
+ \ref IpV6Extension_Fragment
+
+ \par Fields:
+ \ref Parse_IpV6Extension_Fragment
+
+ \par Associated registries:
+ \par IpTypes
+
+ \ingroup protocolbundle_default
+ */
struct IpV6ExtensionType_Fragment
: public PacketTypeBase,
public PacketTypeMixin<IpV6ExtensionType_Fragment, IpTypes>
{ return p->nextHeader(); }
static void dump(packet p, std::ostream & os);
+
+ static void finalize(packet p)
+ { p->nextHeader() << key(p.next()); }
};
+ /** \brief IpV6 fragment extension packet typedef */
typedef IpV6ExtensionType_Fragment::packet IpV6Extension_Fragment;
}
///////////////////////////////hh.e////////////////////////////////////////
+#endif
+#ifndef SENF_PACKETS_DECL_ONLY
//#include "IpV6Extensions.cci"
//#include "IpV6Extensions.ct"
//#include "IpV6Extensions.cti"