X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FDefaultBundle%2FIPv6ExtOptionType.hh;h=29d2f59cced010790249e8e95802e338eeb40b59;hb=ec7f715d7eef5bb915c7ca39587a99fb41d8d3be;hp=ab8adf695f84409a0a3f883ba91c7645e8a36e24;hpb=25976ed67c66d30811fa0a01043e50347e9d1e69;p=senf.git diff --git a/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh b/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh index ab8adf6..29d2f59 100644 --- a/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh +++ b/senf/Packets/DefaultBundle/IPv6ExtOptionType.hh @@ -1,6 +1,6 @@ // $Id: IPv6ExtOptionType.hh 869 2008-06-09 13:57:27Z pug $ // -// Copyright (C) 2007 +// Copyright (C) 2009 // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Philipp.Batroff@fokus.fraunhofer.de @@ -20,8 +20,11 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -#ifndef HH_SENF_Packets_DefaultBundle_IPV6EXTOPTIONTYPE_HH_ -#define HH_SENF_Packets_DefaultBundle_IPV6EXTOPTIONTYPE_HH_1 +/** \file + \brief IPv6Extension-Options public header */ + +#ifndef HH_SENF_Packets_DefaultBundle_IPv6ExtOptionType_HH_ +#define HH_SENF_Packets_DefaultBundle_IPv6ExtOptionType_HH_ 1 // Custom includes #include @@ -30,37 +33,66 @@ ///////////////////////////////hh.p//////////////////////////////////////// namespace senf { -class OptTypeTLVPacketParser: public PacketParserBase { -public: + class IPv6OptionTLVParser : public PacketParserBase + { + public: # include SENF_PARSER() - SENF_PARSER_BITFIELD (altAction, 2, unsigned); - SENF_PARSER_BITFIELD (changeFlag, 1, unsigned); - SENF_PARSER_BITFIELD (optionType, 5, unsigned); - SENF_PARSER_FIELD (optionLength, UInt8Parser); - SENF_PARSER_FINALIZE (OptTypeTLVPacketParser); - -}; //OptTypeTLVPacketParser + SENF_PARSER_BITFIELD (altAction, 2, unsigned); + SENF_PARSER_BITFIELD (changeFlag, 1, unsigned); + SENF_PARSER_BITFIELD (optionType, 5, unsigned); + SENF_PARSER_FIELD (optionLength, UInt8Parser); + SENF_PARSER_FINALIZE (IPv6OptionTLVParser); + }; -struct GenericOptTypeTLVPacketParser: public OptTypeTLVPacketParser { + + struct IPv6GenericOptionTLVParser : public IPv6OptionTLVParser + { # include SENF_PARSER() - SENF_PARSER_INHERIT ( OptTypeTLVPacketParser ); - SENF_PARSER_SKIP ( optionLength(), 0 ); - SENF_PARSER_FINALIZE ( GenericOptTypeTLVPacketParser ); + SENF_PARSER_INHERIT ( IPv6OptionTLVParser ); + SENF_PARSER_SKIP ( optionLength(), 0 ); + SENF_PARSER_FINALIZE ( IPv6GenericOptionTLVParser ); + + senf::PacketInterpreterBase::range value() const; + + template + Parser init(); - senf::PacketInterpreterBase::range value() const; + // template + // Parser& get(); - template - void value(ForwardReadableRange const &range); -}; + static const unsigned int typeCode = 7u; -} //namespace senf + template + void value(ForwardReadableRange const &range); + + 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; + }; +} ///////////////////////////////hh.e//////////////////////////////////////// //#include "IPv6ExtOptionType.cci" #include "IPv6ExtOptionType.ct" //#include "IPv6ExtOptionType.cti" -#endif /* HH_SENF_Packets_DefaultBundle_IPV6EXTOPTIONTYPE_HH_ */ +#endif // Local Variables: // mode: c++