// $Id$
//
// Copyright (C) 2007
-// Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// 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
#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)
<< " 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"
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