Fix boot auto unit tests for Boost V1.34 compatibility
[senf.git] / Packets / DefaultBundle / UDPPacket.hh
index 560c360..296597c 100644 (file)
@@ -27,7 +27,7 @@
 #define HH_UDPPacket_ 1
 
 // Custom includes
-#include "Packets/Packets.hh"
+#include "../../Packets/Packets.hh"
 
 //#include "UDPPacket.mpp"
 ///////////////////////////////hh.p////////////////////////////////////////
@@ -43,26 +43,20 @@ namespace senf {
      */
     struct Parse_UDP : public PacketParserBase
     {
-        typedef Parse_UInt16 Parse_16bit;
+#       include SENF_FIXED_PARSER()
 
-#       ifndef DOXYGEN
+        SENF_PARSER_FIELD( source,      senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( destination, senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( length,      senf::Parse_UInt16 );
+        SENF_PARSER_FIELD( checksum,    senf::Parse_UInt16 );
 
-        SENF_PACKET_PARSER_INIT(Parse_UDP);
+        SENF_PARSER_FINALIZE(Parse_UDP);
 
-        SENF_PACKET_PARSER_DEFINE_FIXED_FIELDS(
-            ((Field)( source,      Parse_16bit ))
-            ((Field)( destination, Parse_16bit ))
-            ((Field)( length,      Parse_16bit ))
-            ((Field)( crc,         Parse_16bit )) );
+        boost::uint16_t calcChecksum() const;
 
-#       else
-
-        Parse_16bit source();
-        Parse_16bit destination();
-        Parse_16bit length();
-        Parse_16bit crc();
-
-#       endif
+        bool validateChecksum() const {
+            return checksum() == 0u || checksum() == calcChecksum();
+        }
     };
 
     /** \brief UDP packet
@@ -88,6 +82,8 @@ namespace senf {
         using mixin::init;
 
         static void dump(packet p, std::ostream & os);
+
+        static void finalize(packet p);
     };
 
     /** \brief UDP packet typedef */