Packets/80221Bundle: fix for MIHF_Id parser
[senf.git] / senf / Packets / DefaultBundle / IPv6Extensions.cc
index 6e8d714..d9b1dc9 100644 (file)
@@ -52,6 +52,16 @@ prefix_ void senf::IPv6FragmentPacketType::dump(packet p, std::ostream & os)
        << "0x" << std::hex << unsigned(p->id()) << "\n";
 }
 
+prefix_ void senf::IPv6FragmentPacketType::finalize(packet p)
+{
+    try {
+        p->nextHeader() << key(p.next());
+    }
+    catch (InvalidPacketChainException & ex) {
+        p->nextHeader() << 59; // No next header
+    }
+}
+
 prefix_ void senf::IPv6RoutingPacketType::dump(packet p, std::ostream & os)
 {
     os << "Internet protocol Version 6 routing extension:\n"
@@ -67,6 +77,16 @@ prefix_ void senf::IPv6RoutingPacketType::dump(packet p, std::ostream & os)
             os << "    " << *i << "\n";
 }
 
+prefix_ void senf::IPv6RoutingPacketType::finalize(packet p)
+{
+    try {
+        p->nextHeader() << key(p.next());
+    }
+    catch (InvalidPacketChainException & ex) {
+        p->nextHeader() << 59; // No next header
+    }
+}
+
 prefix_ void senf::IPv6HopByHopOptionsPacketType::dump(packet p, std::ostream & os)
 {
     os << "Internet protocol Version 6 Hop-By-Hop extension:\n"
@@ -79,6 +99,16 @@ prefix_ void senf::IPv6HopByHopOptionsPacketType::dump(packet p, std::ostream &
         i->dump( os);
 }
 
+prefix_ void senf::IPv6HopByHopOptionsPacketType::finalize(packet p)
+{
+    try {
+        p->nextHeader() << key(p.next());
+    }
+    catch (InvalidPacketChainException & ex) {
+        p->nextHeader() << 59; // No next header
+    }
+}
+
 prefix_ void senf::IPv6DestinationOptionsPacketType::dump(packet p, std::ostream & os)
 {
     os << "Internet protocol Version 6 Destination Options extension:\n"