X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FDefaultBundle%2FIPv6Extensions.hh;h=bf41e889a5dba37df0d29549a79d31ac0607468b;hb=f13780e9e4da7df981d6f6542fbdc714beb34765;hp=b506914ccff73d36be55e2a18ae1ca8b8d933813;hpb=5a7344d1bc318ab9105b71d65a0cc86337dcd4d5;p=senf.git diff --git a/senf/Packets/DefaultBundle/IPv6Extensions.hh b/senf/Packets/DefaultBundle/IPv6Extensions.hh index b506914..bf41e88 100644 --- a/senf/Packets/DefaultBundle/IPv6Extensions.hh +++ b/senf/Packets/DefaultBundle/IPv6Extensions.hh @@ -28,9 +28,7 @@ #define HH_SENF_Packets_DefaultBundle_IPv6Extensions_ 1 // Custom includes -#include -#include -#include "IPv6ExtOptionType.hh" +#include "IPv6ExtOptions.hh" #include "ListOptionTypeParser.hh" #include "IPv6Packet.hh" @@ -100,8 +98,7 @@ namespace senf { /** \brief Dump given IPv6FragmentPacket in readable form to given output stream */ static void dump(packet p, std::ostream & os); - static void finalize(packet p) { - p->nextHeader() << key(p.next(nothrow)); } + static void finalize(packet p); }; /** \brief IPv6 fragment extension packet typedef @@ -175,7 +172,7 @@ namespace senf { \ref IPv6RoutingPacket \par Fields: - \ref IPv6PRoutingPacketParser + \ref IPv6RoutingPacketParser \par Associated registries: \ref IpTypes @@ -204,11 +201,11 @@ namespace senf { static key_t nextPacketKey(packet p) { return p->nextHeader(); } + /** \brief Dump given IPv6RoutingPacket in readable form to given output stream */ static void dump(packet p, std::ostream & os); - static void finalize(packet p) { - p->nextHeader() << key(p.next(nothrow)); } + static void finalize(packet p); }; /** \brief IPv6 routing extension packet typedef @@ -231,12 +228,12 @@ namespace senf { { # include SENF_PARSER() - SENF_PARSER_FIELD ( nextHeader, UInt8Parser ); - SENF_PARSER_FIELD ( headerLength, UInt8Parser ); + SENF_PARSER_FIELD ( nextHeader, UInt8Parser ); + SENF_PARSER_FIELD_RO ( headerLength, UInt8Parser ); typedef detail::FixedAuxParserPolicy ListOptionTypeAuxPolicy; typedef detail::ListOptionTypeParser_Policy< - IPv6GenericOptionTLVParser, ListOptionTypeAuxPolicy> ListOptionTypePolicy; + IPv6GenericOptionParser, ListOptionTypeAuxPolicy> ListOptionTypePolicy; typedef ListParser ListOptionTypeParser; SENF_PARSER_FIELD ( options, ListOptionTypeParser); @@ -277,14 +274,13 @@ namespace senf { using mixin::init; using mixin::initSize; - static key_t nextPacketKey(packet p) - { return p->nextHeader(); } + static key_t nextPacketKey(packet p) { + return p->nextHeader(); } /** \brief Dump given IPv6HopByHopOptionsPacket in readable form to given output stream */ static void dump(packet p, std::ostream & os); - static void finalize(packet p) { - p->nextHeader() << key(p.next(nothrow)); } + static void finalize(packet p); }; /** \brief IPv6 routing Hop-By-Hop packet typedef @@ -307,8 +303,14 @@ namespace senf { { # include SENF_PARSER() SENF_PARSER_FIELD ( nextHeader, UInt8Parser ); - SENF_PARSER_FIELD ( headerLength, UInt8Parser ); - + SENF_PARSER_FIELD_RO ( headerLength, UInt8Parser ); + typedef detail::FixedAuxParserPolicy ListOptionTypeAuxPolicy; + typedef detail::ListOptionTypeParser_Policy< + IPv6GenericOptionParser, ListOptionTypeAuxPolicy> ListOptionTypePolicy; + typedef ListParser ListOptionTypeParser; + + SENF_PARSER_FIELD ( options, ListOptionTypeParser); + SENF_PARSER_FINALIZE ( IPv6DestinationOptionsPacketParser ); }; @@ -350,8 +352,7 @@ namespace senf { /** \brief Dump given IPv6DestinationOptionsPacket in readable form to given output stream */ static void dump(packet p, std::ostream & os); - static void finalize(packet p) { - p->nextHeader() << key(p.next(nothrow)); } + static void finalize(packet p); }; /** \brief IPv6 routing Destination Options packet typedef