-// $Id:DatagramSection.hh 327 2007-07-20 10:03:44Z tho $
+// $Id$
//
// Copyright (C) 2007
// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
\see GREPacketType
*/
+ struct GREChecksumParser : public PacketParserBase {
+# include SENF_PARSER()
+ SENF_PARSER_FIELD ( checksum1_, Parse_UInt16 );
+ SENF_PARSER_PRIVATE_FIELD ( reserved1_, Parse_UInt16 );
+ SENF_PARSER_FINALIZE(GREChecksumParser);
+ };
+
struct Parse_GREPacket : public PacketParserBase
{
# include SENF_PARSER()
SENF_PARSER_BITFIELD_RO ( version_number, 3, unsigned ); // TODO: Always Zero !!
SENF_PARSER_FIELD ( protocol_type, Parse_UInt16 );
SENF_PARSER_PRIVATE_VARIANT ( checksum_, checksum_present,
- (VoidPacketParser) (Parse_UInt16) );
- SENF_PARSER_PRIVATE_VARIANT ( reserved1_, checksum_present,
- (VoidPacketParser) (Parse_UInt16) );
-
+ (VoidPacketParser) (GREChecksumParser) );
+
SENF_PARSER_FINALIZE( Parse_GREPacket );
private:
Parse_UInt16 checksum() const /// only defined if checksum_present() == \c true
- { return checksum_().get<1>(); }
+ { return checksum_().get<1>().checksum1_(); }
};
/** \brief GRE packet