X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FDefaultBundle%2FIPv6Extensions.hh;h=bac52d5c4917ebd546739aa393602983daf9a283;hb=1ac8479aaaa1491e2668c6f09d042ae9de1f2113;hp=24b94de23182f31953af1551dbe9b23c7e5fa0f6;hpb=67608d39cb73231d6deaae285aa5477762246e50;p=senf.git diff --git a/Packets/DefaultBundle/IPv6Extensions.hh b/Packets/DefaultBundle/IPv6Extensions.hh index 24b94de..bac52d5 100644 --- a/Packets/DefaultBundle/IPv6Extensions.hh +++ b/Packets/DefaultBundle/IPv6Extensions.hh @@ -1,6 +1,8 @@ +// $Id$ +// // Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -21,8 +23,8 @@ /** \file \brief IPv6Extensions public header */ -#ifndef HH_IPv6Extensions_ -#define HH_IPv6Extensions_ 1 +#ifndef HH_SENF_Packets_DefaultBundle_IPv6Extensions_ +#define HH_SENF_Packets_DefaultBundle_IPv6Extensions_ 1 // Custom includes #include "IPv6Packet.hh" @@ -35,24 +37,25 @@ namespace senf { /** \brief Parse in IPv6 fragment extension header Parser implementing the IPv6 fragment extension. The fields implemented are: + \image html IPv6Extensions_Fragment.png \see IPv6ExtensionType_Fragment \n RFC 2460 */ - struct Parse_IPv6Extension_Fragment : public PacketParserBase + struct IPv6PacketParserExtension_Fragment : public PacketParserBase { # include SENF_FIXED_PARSER() - SENF_PARSER_FIELD( nextHeader , Parse_UInt8 ); - SENF_PARSER_FIELD( reserved1 , Parse_UInt8 ); + SENF_PARSER_FIELD ( nextHeader , UInt8Parser ); + SENF_PARSER_PRIVATE_FIELD ( reserved1 , UInt8Parser ); - SENF_PARSER_BITFIELD( fragmentOffset, 13, unsigned ); - SENF_PARSER_BITFIELD( reserved2, 2, unsigned ); - SENF_PARSER_BITFIELD( moreFragments, 1, bool ); + SENF_PARSER_BITFIELD ( fragmentOffset , 13, unsigned ); + SENF_PARSER_PRIVATE_BITFIELD ( reserved2 , 2, unsigned ); + SENF_PARSER_BITFIELD ( moreFragments , 1, bool ); - SENF_PARSER_FIELD( id , Parse_UInt32 ); + SENF_PARSER_FIELD ( id , UInt32Parser ); - SENF_PARSER_FINALIZE(Parse_IPv6Extension_Fragment); + SENF_PARSER_FINALIZE(IPv6PacketParserExtension_Fragment); }; /** \brief IPv6 fragment extension @@ -61,10 +64,10 @@ namespace senf { \ref IPv6Extension_Fragment \par Fields: - \ref Parse_IPv6Extension_Fragment + \ref IPv6PacketParserExtension_Fragment \par Associated registries: - \par IpTypes + \ref IpTypes \par Finalize action: Set \a nextHeader from type of next packet if found in \ref IpTypes @@ -77,21 +80,25 @@ namespace senf { { #ifndef DOXYGEN typedef PacketTypeMixin mixin; - typedef ConcretePacket packet; - typedef Parse_IPv6Extension_Fragment parser; #endif + /** \brief IPv6 fragment extension packet typedef */ + typedef ConcretePacket packet; + /** \brief typedef to the parser of IPv6 fragment extension packet */ + typedef IPv6PacketParserExtension_Fragment parser; + using mixin::nextPacketRange; using mixin::nextPacketType; using mixin::initSize; using mixin::init; - static registry_key_t nextPacketKey(packet p) + static key_t nextPacketKey(packet p) { return p->nextHeader(); } - static void dump(packet p, std::ostream & os); + /** \brief Dump given IPv6Extension_Fragment 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()); } + static void finalize(packet p) { + p->nextHeader() << key(p.next(nothrow)); } }; /** \brief IPv6 fragment extension packet typedef */