// Custom includes
#include <iomanip>
-#include <senf/Utils/hexdump.hh>
#include <senf/Packets/DefaultBundle/EthernetPacket.hh>
#define prefix_
///////////////////////////////cc.p////////////////////////////////////////
-//namespace {
-// senf::PacketRegistry<senf::EtherTypes>::RegistrationProxy<senf::EthVLanPacketType>
-// registerEthVLanPacket(0x8100);
-//}
-
-
prefix_ boost::uint32_t senf::SNDUPacketParser::calcCrc()
const
{
return std::for_each(
- data().begin(),
- boost::prior(data().end(), 4),
+ data().begin(),
+ boost::prior(data().end(), 4),
ule_crc32() ).checksum();
}
//prefix_ senf::SNDUPacketType::key_t senf::SNDUPacketType::nextPacketKey(packet p)
//{
-// return p->type();
+// return p->type();
//}
prefix_ void senf::SNDUPacketType::init(packet p)
{
if (p.data().size() < 8)
return no_factory();
- PkReg_Entry const * e;
- if (p->type() < 1536)
- e = PacketRegistry<senf::ULEExtHeaderTypes>::lookup( p->type(), nothrow );
- else
- e = PacketRegistry<senf::EtherTypes>::lookup( p->type(), nothrow );
- return e ? e->factory() : no_factory();
+ senf::PacketInterpreterBase::factory_t f (no_factory());
+ if (p->type() < 1536) {
+ PacketRegistry<senf::ULEExtHeaderTypes>::Entry const * e (
+ PacketRegistry<senf::ULEExtHeaderTypes>::lookup( p->type(), nothrow ));
+ if (e) f = e->factory();
+ }
+ else {
+ PacketRegistry<senf::EtherTypes>::Entry const * e (
+ PacketRegistry<senf::ULEExtHeaderTypes>::lookup( p->type(), nothrow ));
+ if (e) f = e->factory();
+ }
+ return f;
}
-prefix_ senf::PacketInterpreterBase::optional_range
-senf::SNDUPacketType::nextPacketRange(packet p)
+prefix_ senf::PacketInterpreterBase::optional_range
+senf::SNDUPacketType::nextPacketRange(packet p)
{
if (p.data().size() < 8)
return no_range();
-
+
size_type sz = 2 + 2; // D-Bit + 15 bits length + 16 bits type field
if (! p->d_bit() )
sz += 6; // + 6 Byte NPA destination address
{
os << "SNDUPacket:\n"
<< std::dec
- << " d_bit : " << p->d_bit() << "\n"
- << " length : " << unsigned(p->length()) << "\n"
+ << senf::fieldName("d_bit") << p->d_bit() << "\n"
+ << senf::fieldName("length") << unsigned(p->length()) << "\n"
<< std::hex
- << " type : 0x" << unsigned(p->type()) << "\n"
+ << senf::fieldName("type") << "0x" << unsigned(p->type()) << "\n"
<< std::dec
- << " crc : " << unsigned(p->crc()) << "\n";
+ << senf::fieldName("crc") << unsigned(p->crc()) << "\n";
}
prefix_ senf::PacketParserBase::size_type senf::SNDUPacketType::initSize()