std::array<Codec*, UINT8_MAX> CodecManager::s_protocols {
{ 0 }
};
+
+THREAD_LOCAL uint16_t CodecManager::grinder_id = 0;
THREAD_LOCAL uint8_t CodecManager::grinder = 0;
THREAD_LOCAL uint8_t CodecManager::max_layers = DEFAULT_LAYERMAX;
s_protocols[grinder]->get_name(), cd->get_name(),
cd->get_name());
+ std::vector<uint16_t> ids;
+ s_protocols[i]->get_protocol_ids(ids);
+
+ grinder_id = ( ids.size() > 0 ) ? ids[0] : FINISHED_DECODE;
grinder = (uint8_t)i;
}
}
static std::vector<CodecApiWrapper> s_codecs;
static std::array<uint8_t, max_protocol_id> s_proto_map;
static std::array<Codec*, UINT8_MAX> s_protocols;
+
+ static THREAD_LOCAL uint16_t grinder_id;
static THREAD_LOCAL uint8_t grinder;
static THREAD_LOCAL uint8_t max_layers;
#include <assert.h>
#include "protocols/packet.h"
+#include "protocols/packet_manager.h"
#include "protocols/protocol_ids.h"
#if 0
case PktType::FILE:
if ( proto_bits & PROTO_BIT__TCP )
return "TCP";
+
if ( proto_bits & PROTO_BIT__UDP )
return "UDP";
+
assert(false);
return "Error";
case PktType::NONE:
+ if ( num_layers > 0 )
+ return PacketManager::get_proto_name(layers[num_layers-1].prot_id);
+
+ assert(false);
return "None";
default:
- assert(false);
- return "Error";
+ break;
}
assert(false);
return "Error";
{
PROFILE_VARS;
DecodeData unsure_encap_ptrs;
- uint16_t prev_prot_id = FINISHED_DECODE;
+
uint8_t mapped_prot = CodecManager::grinder;
+ uint16_t prev_prot_id = CodecManager::grinder_id;
RawData raw(pkthdr, pkt);
CodecData codec_data(FINISHED_DECODE);