Packets/DefaultBundle: IPv6ExtensionsHeaders: set nextHeader to 59 if their is no...
[senf.git] / senf / Packets / DefaultBundle / IPv6Extensions.hh
index c8749f7..3124b27 100644 (file)
@@ -28,8 +28,7 @@
 #define HH_SENF_Packets_DefaultBundle_IPv6Extensions_ 1
 
 // Custom includes
-#include <senf/Packets/Packets.hh>
-#include "IPv6ExtOptionType.hh"
+#include "IPv6ExtOptions.hh"
 #include "ListOptionTypeParser.hh"
 #include "IPv6Packet.hh"
 
@@ -99,8 +98,7 @@ namespace senf {
         /** \brief Dump given IPv6FragmentPacket in readable form to given output stream */
         static void dump(packet p, std::ostream & os); 
 
-        static void finalize(packet p) { 
-            p->nextHeader() << key(p.next(nothrow)); }
+        static void finalize(packet p);
     };
 
     /** \brief IPv6 fragment extension packet typedef 
@@ -203,11 +201,11 @@ namespace senf {
         
         static key_t nextPacketKey(packet p) 
             { return p->nextHeader(); }
+        
         /** \brief Dump given IPv6RoutingPacket in readable form to given output stream */
         static void dump(packet p, std::ostream & os); 
         
-        static void finalize(packet p) { 
-            p->nextHeader() << key(p.next(nothrow)); }
+        static void finalize(packet p);
     };
     
     /** \brief IPv6 routing extension packet typedef
@@ -230,12 +228,12 @@ namespace senf {
     {
 #       include SENF_PARSER()
       
-        SENF_PARSER_FIELD ( nextHeader, UInt8Parser   );
-        SENF_PARSER_FIELD ( headerLength, UInt8Parser );
+        SENF_PARSER_FIELD    ( nextHeader, UInt8Parser   );
+        SENF_PARSER_FIELD_RO ( headerLength, UInt8Parser );
 
         typedef detail::FixedAuxParserPolicy<UInt8Parser, 1u> ListOptionTypeAuxPolicy;
         typedef detail::ListOptionTypeParser_Policy<
-            IPv6GenericOptionTLVParser, ListOptionTypeAuxPolicy> ListOptionTypePolicy;
+            IPv6GenericOptionParser, ListOptionTypeAuxPolicy> ListOptionTypePolicy;
         typedef ListParser<ListOptionTypePolicy> ListOptionTypeParser;
 
         SENF_PARSER_FIELD  ( options, ListOptionTypeParser);
@@ -276,14 +274,13 @@ namespace senf {
         using mixin::init;
         using mixin::initSize;
         
-        static key_t nextPacketKey(packet p) 
-        { return p->nextHeader(); }
+        static key_t nextPacketKey(packet p) {
+            return p->nextHeader(); }
         
         /** \brief Dump given IPv6HopByHopOptionsPacket in readable form to given output stream */
         static void dump(packet p, std::ostream & os); 
         
-        static void finalize(packet p) { 
-            p->nextHeader() << key(p.next(nothrow)); }
+        static void finalize(packet p);
     };
     
     /** \brief IPv6 routing Hop-By-Hop packet typedef