// $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)
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////////////////////////////////////////