some unimportant clean-ups ;)
[senf.git] / Packets / MPEGDVBBundle / MPESection.cc
index 1459639..0e1c1fe 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 //
 // Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
-//     Thorsten Horstmann <thorsten.horstmann@fokus.fraunhofer.de>
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+//     Thorsten Horstmann <tho@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 #define prefix_
 ///////////////////////////////cc.p////////////////////////////////////////
 
-//prefix_ boost::uint32_t senf::MPESectionParser::calcCrc()
-//    const
-//{
-//    return std::for_each(
-//            data().begin(), 
-//            boost::prior(data().end(), 4), 
-//            crc32_t() ).checksum();
-//}
+
+prefix_ boost::uint32_t senf::MPESectionParser::calcCrc()
+    const
+{
+    return std::for_each(
+            data().begin(),
+            boost::prior(data().end(), 4),
+            crc32_t() ).checksum();
+}
 
 
 prefix_ void senf::MPESectionType::dump(packet p, std::ostream & os)
@@ -56,7 +57,7 @@ prefix_ void senf::MPESectionType::dump(packet p, std::ostream & os)
        << "  private_indicator: " << p->private_indicator() << "\n"
        << std::dec
        << "  section_length: " << p->section_length() << "\n"
-       << std::hex 
+       << std::hex
        << "  MAC_address_6: 0x" << unsigned(p->mac_addr_6()) << "\n"
        << "  MAC_address_5: 0x" << unsigned(p->mac_addr_5()) << "\n"
        << "  payload_scrambling_control: 0x" << p->payload_scrmbl_ctrl() << "\n"
@@ -92,22 +93,22 @@ prefix_ senf::PacketInterpreterBase::factory_t senf::MPESectionType::nextPacketT
         if (p->ip_datagram_version().value() == 4)
             return IPv4Packet::factory();
         if (p->ip_datagram_version().value() == 6)
-            return IPv4Packet::factory();
+            return IPv6Packet::factory();
     }
     return no_factory();
 }
 
 prefix_ void senf::MPESectionType::finalize(packet p)
 {
-    p->llc_snap_flag() = p.next().is<LlcSnapPacket>() ? 1 : 0;
+    p->llc_snap_flag() = p.next(nothrow) && p.next().is<LlcSnapPacket>() ? 1 : 0;
     p->section_length() = p.data().size() - 3;
-//    p->crc() = p->calcCrc();
+    p->crc() = p->calcCrc();
 }
 
 ///////////////////////////////cc.e////////////////////////////////////////
 #undef prefix_
 
-\f
+
 // Local Variables:
 // mode: c++
 // fill-column: 100