X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FDefaultBundle%2FIPv6ExtOptionType.hh;h=29d2f59cced010790249e8e95802e338eeb40b59;hb=ec7f715d7eef5bb915c7ca39587a99fb41d8d3be;hp=0811d119db50b9f0bed73e878b6ec11c6ea032bc;hpb=943a0081e419e87e958889eb630f09180a9c196c;p=senf.git diff --git a/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh b/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh index 0811d11..29d2f59 100644 --- a/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh +++ b/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh @@ -33,7 +33,7 @@ ///////////////////////////////hh.p//////////////////////////////////////// namespace senf { - class OptTypeTLVParser : public PacketParserBase + class IPv6OptionTLVParser : public PacketParserBase { public: # include SENF_PARSER() @@ -41,20 +41,21 @@ namespace senf { SENF_PARSER_BITFIELD (changeFlag, 1, unsigned); SENF_PARSER_BITFIELD (optionType, 5, unsigned); SENF_PARSER_FIELD (optionLength, UInt8Parser); - SENF_PARSER_FINALIZE (OptTypeTLVParser); + SENF_PARSER_FINALIZE (IPv6OptionTLVParser); }; - struct GenericOptTypeTLVParser : public OptTypeTLVParser + + struct IPv6GenericOptionTLVParser : public IPv6OptionTLVParser { # include SENF_PARSER() - SENF_PARSER_INHERIT ( OptTypeTLVParser ); + SENF_PARSER_INHERIT ( IPv6OptionTLVParser ); SENF_PARSER_SKIP ( optionLength(), 0 ); - SENF_PARSER_FINALIZE ( GenericOptTypeTLVParser ); + SENF_PARSER_FINALIZE ( IPv6GenericOptionTLVParser ); senf::PacketInterpreterBase::range value() const; template - Parser& init(); + Parser init(); // template // Parser& get(); @@ -66,9 +67,24 @@ namespace senf { template 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; + }; }