X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FDefaultBundle%2FICMPv6Packet.hh;h=7cba25e634af114c007a53246cd35cad0c3e9d70;hb=225f601ae7b61c510ccd9596e80aa6cf9cc7cbbe;hp=aff2010485447f0c26d9da5cc05f53316f9a332a;hpb=d70c73b66dbc60224d373f7a97cada419fe57c05;p=senf.git diff --git a/senf/Packets/DefaultBundle/ICMPv6Packet.hh b/senf/Packets/DefaultBundle/ICMPv6Packet.hh index aff2010..7cba25e 100644 --- a/senf/Packets/DefaultBundle/ICMPv6Packet.hh +++ b/senf/Packets/DefaultBundle/ICMPv6Packet.hh @@ -31,7 +31,7 @@ //#include "ICMPv6Packet.mpp" ///////////////////////////////hh.p//////////////////////////////////////// -namespace senf +namespace senf { struct ICMPv6PacketParser : public PacketParserBase { @@ -39,15 +39,15 @@ namespace senf SENF_PARSER_FIELD ( type, UInt8Parser ); SENF_PARSER_FIELD ( code, UInt8Parser ); SENF_PARSER_FIELD ( checksum, UInt16Parser ); - + SENF_PARSER_FINALIZE ( ICMPv6PacketParser ); - + boost::uint16_t calcChecksum() const; }; - + struct ICMPTypes { // ICMP type registry - typedef boost::uint16_t key_t; + typedef boost::uint8_t key_t; }; /** \brief ICMP Packet for IPv6 @@ -58,37 +58,40 @@ namespace senf \par Fields: \ref ICMPv6PacketParser \image html ICMPv6Packet.png - + \par Associated registries: \ref ICMPTypes \ingroup protocolbundle_default */ - struct ICMPv6PacketType + struct ICMPv6PacketType : public PacketTypeBase, public PacketTypeMixin { typedef PacketTypeMixin mixin; typedef ConcretePacket packet; typedef ICMPv6PacketParser parser; - + using mixin::nextPacketRange; using mixin::nextPacketType; using mixin::init; using mixin::initSize; - + static void dump(packet p, std::ostream & os); - - static key_t nextPacketKey(packet p) { + + static key_t nextPacketKey(packet p) { return p->type(); } - + static void finalize(packet p) { p->type() << key(p.next(senf::nothrow)); p->checksum() << p->calcChecksum(); } }; - + + /** \brief ICMPv6 packet typedef + \ingroup protocolbundle_default + */ typedef ConcretePacket ICMPv6Packet; }