diff --git a/Packets/MPEGDVBBundle/GREPacket.cc b/Packets/MPEGDVBBundle/GREPacket.cc index 48f70e508c9eebf246eae0f60a156ab89454229a..4fc8aef2c23e686fca042430c32f903f005670fd 100644 --- a/Packets/MPEGDVBBundle/GREPacket.cc +++ b/Packets/MPEGDVBBundle/GREPacket.cc @@ -27,27 +27,24 @@ //#include "GREPacket.ih" // Custom includes +#include <boost/io/ios_state.hpp> #include <iomanip> #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// +namespace { + senf::PacketRegistry<senf::EtherTypes>::RegistrationProxy<senf::EthernetPacket> + registerTransparentEthernetBridging (0x6558); +} + prefix_ void senf::GREPacketType::dump(packet p, std::ostream & os) { - /* - os << "GREPacket:\n" - << std::hex - << " syncByte: 0x" << unsigned(p->sync_byte()) << "\n" - << " transport_error_indicator: 0x" << unsigned(p->transport_error_indicator()) << "\n" - << " payload_unit_start_indicator (pusi): 0x" << unsigned(p->pusi()) << "\n" - << " transport_priority: 0x" << unsigned(p->transport_priority()) << "\n" - << std::dec - << " pid: " << unsigned(p->pid()) << "\n" - << std::hex - << " transport_scrambling_control: 0x" << unsigned(p->transport_scrmbl_ctrl()) << "\n" - << " adaptation_field_control: 0x" << unsigned(p->adaptation_field_ctrl()) << "\n" - << " continuity_counter: 0x" << unsigned(p->continuity_counter()) << "\n"; - */ + boost::io::ios_all_saver ias(os); + os << "GRE Encapsulation:\n" + << " checksum_present : " << p->checksum_present() << "\n" + << " protocol_type : 0x" << std::hex << p->protocol_type() << "\n" + ; } ///////////////////////////////cc.e//////////////////////////////////////// diff --git a/Packets/MPEGDVBBundle/GREPacket.hh b/Packets/MPEGDVBBundle/GREPacket.hh index 6e29e82871af245dcda18418c6f1aed698df809a..f056b51e54fc2726011afe05fb7a807eb6dc41ed 100644 --- a/Packets/MPEGDVBBundle/GREPacket.hh +++ b/Packets/MPEGDVBBundle/GREPacket.hh @@ -29,6 +29,7 @@ // Custom includes #include <algorithm> #include "../../Packets/Packets.hh" +#include "../DefaultBundle/EthernetPacket.hh" //#include "GREPacket.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -78,17 +79,20 @@ namespace senf { */ struct GREPacketType : public PacketTypeBase, - public PacketTypeMixin<GREPacketType> + public PacketTypeMixin<GREPacketType, EtherTypes> { - typedef PacketTypeMixin<GREPacketType> mixin; + typedef PacketTypeMixin<GREPacketType, EtherTypes> mixin; typedef ConcretePacket<GREPacketType> packet; typedef Parse_GREPacket parser; using mixin::nextPacketRange; + using mixin::nextPacketType; using mixin::init; using mixin::initSize; static void dump(packet p, std::ostream & os); + static EtherTypes::key_t nextPacketKey(packet p) { return p->protocol_type(); } + static void finalize(packet p) { p->protocol_type() << key(p.next()); } }; /** \brief GRE packet typedef */