X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FDefaultBundle%2FIPv6Packet.hh;h=590eb998814ba0a2c65633d6bedebe3263c74bcc;hb=394ced7000128fef7e753caea1deda8d55dec8e2;hp=7fecab54286deb92731cdda198d753a1794ee7cd;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/Packets/DefaultBundle/IPv6Packet.hh b/senf/Packets/DefaultBundle/IPv6Packet.hh index 7fecab5..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) @@ -32,29 +32,23 @@ #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"