X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FDefaultBundle%2FIPv6ExtOptionType.hh;h=29d2f59cced010790249e8e95802e338eeb40b59;hb=ec7f715d7eef5bb915c7ca39587a99fb41d8d3be;hp=27be0183aed3aad35bd0fb3001b4e578cc1ad325;hpb=328a72eb2f360d08f2d618ef6aae2ac6b42d76ab;p=senf.git diff --git a/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh b/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh index 27be018..29d2f59 100644 --- a/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh +++ b/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh @@ -33,7 +33,7 @@ ///////////////////////////////hh.p//////////////////////////////////////// namespace senf { - class IPv6OptionTLVParser : public PacketParserBase + class IPv6OptionTLVParser : public PacketParserBase { public: # include SENF_PARSER() @@ -44,6 +44,7 @@ namespace senf { SENF_PARSER_FINALIZE (IPv6OptionTLVParser); }; + struct IPv6GenericOptionTLVParser : public IPv6OptionTLVParser { # include SENF_PARSER() @@ -54,7 +55,7 @@ namespace senf { senf::PacketInterpreterBase::range value() const; template - Parser& init(); + Parser init(); // template // Parser& get(); @@ -68,6 +69,22 @@ namespace senf { void setPayload(ForwardReadableRange const &range); }; + struct IPv6ChecksumOptionTLVParser : public IPv6OptionTLVParser + { +# include SENF_PARSER() + SENF_PARSER_INHERIT ( IPv6OptionTLVParser ); + SENF_PARSER_FIELD ( SlfNetType, UInt8Parser); + SENF_PARSER_FIELD ( checksum, UInt16Parser ); + + SENF_PARSER_INIT() { + optionType() = typeCode; + optionLength() = senf::init_bytes::value -senf::init_bytes::value; + SlfNetType() = SN_typeCode; + } + SENF_PARSER_FINALIZE ( IPv6ChecksumOptionTLVParser ); + static const unsigned int typeCode = 13u; + static const unsigned int SN_typeCode = 77u; + }; }