First GRE pipe is running.
jkaeber [Tue, 11 Dec 2007 19:56:57 +0000 (19:56 +0000)]
git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@555 270642c3-0616-0410-b53a-bc976706d245

Packets/MPEGDVBBundle/GREPacket.cc
Packets/MPEGDVBBundle/GREPacket.hh

index 48f70e5..4fc8aef 100644 (file)
 //#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////////////////////////////////////////
index 6e29e82..f056b51 100644 (file)
@@ -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 */