X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FDefaultBundle%2FIPv6Packet.hh;h=590eb998814ba0a2c65633d6bedebe3263c74bcc;hb=7661548b20e6c7627f54bff87e0758396fd523ef;hp=c8a06d58c84317b8ff2f1218a7b33682c5665681;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Packets/DefaultBundle/IPv6Packet.hh b/senf/Packets/DefaultBundle/IPv6Packet.hh index c8a06d5..590eb99 100644 --- a/senf/Packets/DefaultBundle/IPv6Packet.hh +++ b/senf/Packets/DefaultBundle/IPv6Packet.hh @@ -1,4 +1,4 @@ -// $Id: EthernetPacket.hh 299 2007-07-10 21:23:49Z g0dil $ +// $Id$ // // Copyright (C) 2007 // Fraunhofer Institute for Open Communication Systems (FOKUS) @@ -27,34 +27,28 @@ #define HH_SENF_Packets_DefaultBundle_IPv6Packet_ 1 // Custom includes -#include "../../Socket/Protocols/INet/INet6Address.hh" -#include "../../Packets/Packets.hh" +#include +#include #include "IPv4Packet.hh" //#include "IPv6Packet.mpp" -///////////////////////////////hh.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace senf { /** \brief Parse an IPv6 address - + \see INet6Address */ - struct INet6AddressParser : public PacketParserBase + struct INet6AddressParser + : public ValueParserBase { - INet6AddressParser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {} - - /////////////////////////////////////////////////////////////////////////// - - typedef INet6Address value_type; - static const size_type fixed_bytes = 16u; + INet6AddressParser(data_iterator i, state_type s) : Base(i,s) {} value_type value() const { return value_type::from_data(i()); } void value(value_type const & v) { std::copy(v.begin(), v.end(), i()); } - operator value_type() const { return value(); } - byte & operator[](size_type index) const { return *boost::next(i(),index); } - INet6AddressParser const & operator= (value_type const & other) - { value(other); return *this; } + + using Base::operator=; }; /** \brief Parse an IPv6 packet @@ -88,7 +82,7 @@ namespace senf { \par Packet type (typedef): \ref IPv6Packet - + \par Fields: \ref IPv6PacketParser @@ -114,7 +108,7 @@ namespace senf { \ref IPv6PacketParser::destination() "Destination Address" - + \par Associated registries: \ref IpTypes @@ -138,27 +132,27 @@ namespace senf { using mixin::initSize; using mixin::init; - static key_t nextPacketKey(packet p) + static key_t nextPacketKey(packet p) { return p->nextHeader(); } - + /** \brief Dump given IPv6Packet in readable form to given output stream */ - static void dump(packet p, std::ostream & os); - + static void dump(packet p, std::ostream & os); + static void finalize(packet p); ///< Finalize packet. - /**< \li set \ref IPv6PacketParser::length() "length" + /**< \li set \ref IPv6PacketParser::length() "length" from payload size - \li set \ref IPv6PacketParser::nextHeader() - "nextHeader" from type of next packet if found + \li set \ref IPv6PacketParser::nextHeader() + "nextHeader" from type of next packet if found in \ref IpTypes */ }; - /** \brief IPv6 packet typedef */ + /** \brief IPv6 packet typedef + \ingroup protocolbundle_default + */ typedef ConcretePacket IPv6Packet; - - ///@} } -///////////////////////////////hh.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// //#include "IPv6Packet.cci" //#include "IPv6Packet.ct" //#include "IPv6Packet.cti"