X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FDefaultBundle%2FIPv6Extensions.hh;h=3124b279a902b3915d2d54203756420bcca5bb30;hb=8bab2fbb2a8272199adc7034ddcd43ecdeb942a9;hp=7d1aab69ec6ee18cf1f4378ecfe65436ccf3b025;hpb=328a72eb2f360d08f2d618ef6aae2ac6b42d76ab;p=senf.git diff --git a/senf/Packets/DefaultBundle/IPv6Extensions.hh b/senf/Packets/DefaultBundle/IPv6Extensions.hh index 7d1aab6..3124b27 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 +#include "IPv6ExtOptions.hh" #include "ListOptionTypeParser.hh" #include "IPv6Packet.hh" @@ -42,7 +40,7 @@ namespace senf { /** \brief Parse in IPv6 fragment extension header Parser implementing the IPv6 fragment extension. The fields implemented are: - \image html IPv6Extensions_Fragment.png + \image html IPv6FragmentPacket.png \see IPv6ExtensionType_Fragment \n RFC 2460 @@ -100,11 +98,12 @@ 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 */ + /** \brief IPv6 fragment extension packet typedef + \ingroup protocolbundle_default + */ typedef ConcretePacket IPv6FragmentPacket; // ===================================================================================================== @@ -113,12 +112,12 @@ namespace senf { Parser implementing the IPv6 routing Header extension (type 0 only). The fields implemented are: - \image html IPv6Extensions_Routing.png + \image html IPv6RoutingPacket.png \see IPv6ExtensionType_Routing \n RFC 2460 */ - struct IPv6PRoutingPacketParser : public PacketParserBase + struct IPv6RoutingPacketParser : public PacketParserBase { /* The Type 0 Routing header has the following format: (RFC 2460) @@ -158,7 +157,7 @@ namespace senf { SENF_PARSER_FIELD ( reserved, UInt32Parser ); //set to zero by RFC SENF_PARSER_VECTOR ( hopAddresses, segmentsLeft, INet6AddressParser ); - SENF_PARSER_FINALIZE ( IPv6PRoutingPacketParser ); + SENF_PARSER_FINALIZE ( IPv6RoutingPacketParser ); //provisionary, since only type 0 is implemented SENF_PARSER_INIT() { @@ -173,7 +172,7 @@ namespace senf { \ref IPv6RoutingPacket \par Fields: - \ref IPv6PRoutingPacketParser + \ref IPv6RoutingPacketParser \par Associated registries: \ref IpTypes @@ -193,7 +192,7 @@ namespace senf { /** \brief IPv6 routing extension packet typedef */ typedef ConcretePacket packet; /** \brief typedef to the parser of IPv6 routing extension packet */ - typedef IPv6PRoutingPacketParser parser; + typedef IPv6RoutingPacketParser parser; using mixin::nextPacketRange; using mixin::nextPacketType; @@ -202,14 +201,16 @@ 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 */ + /** \brief IPv6 routing extension packet typedef + \ingroup protocolbundle_default + */ typedef ConcretePacket IPv6RoutingPacket; @@ -218,20 +219,21 @@ namespace senf { /** \brief Parse in IPv6 Hop-By-Hop extension header Parser implementing the IPv6 routing Header extension. The fields implemented are: - \image html IPv6Extensions_HopByHop.png + \image html IPv6HopByHopOptionsPacket.png \see IPv6ExtensionType_HopByHop \n RFC 2460 */ - struct IPv6HopByHopOptionsPacketParser : public PacketParserBase { + struct IPv6HopByHopOptionsPacketParser : public PacketParserBase + { # 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); @@ -272,17 +274,18 @@ 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 */ + /** \brief IPv6 routing Hop-By-Hop packet typedef + \ingroup protocolbundle_default + */ typedef ConcretePacket IPv6HopByHopOptionsPacket; // ===================================================================================================== @@ -291,7 +294,7 @@ namespace senf { Parser implementing the IPv6 Destination Options Header extension. The fields implemented are: - \image html IPv6Extensions_Destination.png + \image html IPv6DestinationOptionsPacket.png \see IPv6ExtensionType_Destination \n RFC 2460 @@ -347,7 +350,9 @@ namespace senf { p->nextHeader() << key(p.next(nothrow)); } }; - /** \brief IPv6 routing Destination Options packet typedef */ + /** \brief IPv6 routing Destination Options packet typedef + \ingroup protocolbundle_default + */ typedef ConcretePacket IPv6DestinationOptionsPacket; }