X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FDefaultBundle%2FUDPPacket.hh;h=615c5308e3a3afedcd4fc1bc65284238c7015764;hb=96d591f9024bc536e0a643b40c2bf243241d342d;hp=bd0fc5757b2a715ebc551ed7c60f198620afe309;hpb=9357448dc66bc9acfd3bd8db423deb75bcd6a2c4;p=senf.git diff --git a/Packets/DefaultBundle/UDPPacket.hh b/Packets/DefaultBundle/UDPPacket.hh index bd0fc57..615c530 100644 --- a/Packets/DefaultBundle/UDPPacket.hh +++ b/Packets/DefaultBundle/UDPPacket.hh @@ -24,69 +24,79 @@ #define HH_UDPPacket_ 1 // Custom includes -#include "Packets/Packet.hh" -#include "Packets/ParseInt.hh" -#include "Packets/ParseArray.hh" -#include "Packets/PacketRegistry.hh" +#include "Packets/Packets.hh" //#include "UDPPacket.mpp" ///////////////////////////////hh.p//////////////////////////////////////// namespace senf { - // See RFC768 - template - struct Parse_UDP : public ParserBase - { - template - struct rebind { typedef Parse_UDP parser; }; - typedef Iterator byte_iterator; + /** \brief Parse a UDP packet - Parse_UDP() {} - Parse_UDP(Iterator const & i) : ParserBase(i) {} + Parser implementing the UDP header. The fields implemented are: - static unsigned bytes() { return 8; } + + + + + + +
Field nameParser type
source\ref Parse_16bit
destination\ref Parse_16bit
length\ref Parse_16bit
crc\ref Parse_16bit
- /////////////////////////////////////////////////////////////////////////// + \see UDPPacketType + RFC 768 + */ + struct Parse_UDP : public PacketParserBase + { + SENF_PACKET_PARSER_INIT(Parse_UDP); - typedef Parse_UInt16 < Iterator > Parse_16bit; + /////////////////////////////////////////////////////////////////////////// - Parse_16bit source() const { return Parse_16bit (this->i() ); } - Parse_16bit destination() const { return Parse_16bit (this->i() + 2 ); } - Parse_16bit length() const { return Parse_16bit (this->i() + 4 ); } - Parse_16bit crc() const { return Parse_16bit (this->i() + 6 ); } + typedef Parse_UInt16 Parse_16bit; + SENF_PACKET_PARSER_DEFINE_FIXED_FIELDS( + ((Field)( source, Parse_16bit )) + ((Field)( destination, Parse_16bit )) + ((Field)( length, Parse_16bit )) + ((Field)( crc, Parse_16bit )) ); }; - class UDPPacket - : public Packet, - public Parse_UDP - { - public: - /////////////////////////////////////////////////////////////////////////// - // Types + /** \brief UDP packet + + \par Packet type (typedef): + \ref UDPPacket - typedef ptr_t::ptr ptr; + \par Fields: + \ref Parse_UDP - /////////////////////////////////////////////////////////////////////////// - - private: - template - UDPPacket(Arg const & arg); + \ingroup protocolbundle_default + */ + struct UDPPacketType + : public PacketTypeBase, + public PacketTypeMixin + { + typedef PacketTypeMixin mixin; + typedef ConcretePacket packet; + typedef Parse_UDP parser; - virtual void v_nextInterpreter() const; - virtual void v_finalize(); - virtual void v_dump(std::ostream & os) const; + using mixin::nextPacketRange; + using mixin::initSize; + using mixin::init; - friend class Packet; + static void dump(packet p, std::ostream & os); }; + + /** \brief UDP packet typedef */ + typedef UDPPacketType::packet UDPPacket; } ///////////////////////////////hh.e//////////////////////////////////////// +#endif +#ifndef SENF_PACKETS_DECL_ONLY //#include UDPPacket.cci" //#include "UDPPacket.ct" -#include "UDPPacket.cti" +//#include "UDPPacket.cti" #endif @@ -96,4 +106,6 @@ namespace senf { // c-file-style: "senf" // indent-tabs-mode: nil // ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 // End: