PPI: Fix senf::ppi::init() event hook scheduling
[senf.git] / Packets / DefaultBundle / ICMPv6Packet.cc
index dc8eea1..9d5d104 100644 (file)
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-// Custom includes
-#include "../../Packets/Packets.hh"
+/** \file
+    \brief ICMPv6Packet non-inline non-template implementation */
+
 #include "ICMPv6Packet.hh"
+//#include "ICMPv6Packet.ih"
+
+// Custom includes
 #include <boost/io/ios_state.hpp>
 #include "../../Packets/DefaultBundle/IPv6Packet.hh"
 #include "../../Utils/IpChecksum.hh"
 
 #define prefix_
+///////////////////////////////cc.p////////////////////////////////////////
 
 namespace {
     senf::PacketRegistry<senf::IpTypes>::RegistrationProxy<senf::ICMPv6Packet>
         registerICMPv6Packet (58);
 }
 
-prefix_ boost::uint16_t senf::ICMPv6PacketParser::calcChecksum() const {
+prefix_ boost::uint16_t senf::ICMPv6PacketParser::calcChecksum() 
+    const
+{
 
     senf::IpChecksum summer;
     senf::IPv6Packet ipv6 (packet().rfind<senf::IPv6Packet>(senf::nothrow));
+
+    if (! ipv6)
+        return 0u;
     
     summer.feed( ipv6->source().i(), 
                     ipv6->source().i() + senf::IPv6Packet::Parser::source_t::fixed_bytes );
@@ -69,6 +79,7 @@ prefix_ void senf::ICMPv6PacketType::dump(packet p, std::ostream &os)
        << "Checksum                : " << p->checksum() << "\n";
 }
 
+///////////////////////////////cc.e////////////////////////////////////////
 #undef prefix_
 
 \f