- new method: fieldFlags() - isCksum, isMeta; Note: isMeta is a flag now not a attrib - fieldData() bit fields are now in lsb not msb - protocolFrameValue() and subclasses changed accordingly - protocolFrameValue() now takes an additional bool param indicating whether the frameValue is being requested for a checksum calculation; if so fields which are checksum fields are assumed to be zero and their value is not fetched to prevent infinite recursion - Other Protocols - mac: srcMac/dstMac modes is now working - vlan: implemented VLAN protocol - ip4: src/dst Addr modes is now working - udp/tcp: checksum done - Basic testing done for MAC, VLAN, IPv4, UDP and TCP protocols - sample protocol: .cpp/.h added to repos - need to be made compilable - StreamConfigDialog - Redesigned the protocol selection tab to accomodate "Advanced Protocol Selection" - L2 Tab config widgets are now in 2 columns - Packet Tree View is no longer collapsed if selected protocols don't change
41 lines
1.4 KiB
C++
41 lines
1.4 KiB
C++
#include "protocolmanager.h"
|
|
|
|
#include "mac.h"
|
|
#include "payload.h"
|
|
|
|
#include "eth2.h"
|
|
#include "dot3.h"
|
|
#include "llc.h"
|
|
#include "snap.h"
|
|
#include "vlan.h"
|
|
#include "ip4.h"
|
|
#include "tcp.h"
|
|
#include "udp.h"
|
|
|
|
QMap<int, void*> ProtocolManager::factory;
|
|
QMap<QString, int> ProtocolManager::nameToNumberMap;
|
|
|
|
ProtocolManager OstProtocolManager;
|
|
|
|
ProtocolManager::ProtocolManager()
|
|
{
|
|
registerProtocol(51, QString("mac"), (void*) MacProtocol::createInstance);
|
|
registerProtocol(52, QString("payload"), (void*) PayloadProtocol::createInstance);
|
|
registerProtocol(121, QString("eth2"), (void*) Eth2Protocol::createInstance);
|
|
registerProtocol(122, QString("dot3"), (void*) Dot3Protocol::createInstance);
|
|
registerProtocol(123, QString("llc"), (void*) LlcProtocol::createInstance);
|
|
registerProtocol(124, QString("snap"), (void*) SnapProtocol::createInstance);
|
|
registerProtocol(126, QString("vlan"), (void*) VlanProtocol::createInstance);
|
|
registerProtocol(130, QString("ip4"), (void*) Ip4Protocol::createInstance);
|
|
registerProtocol(140, QString("tcp"), (void*) TcpProtocol::createInstance);
|
|
registerProtocol(141, QString("udp"), (void*) UdpProtocol::createInstance);
|
|
}
|
|
|
|
void ProtocolManager::registerProtocol(int protoNumber, QString protoName,
|
|
void *protoInstanceCreator)
|
|
{
|
|
// TODO: validate incoming params for duplicates with existing
|
|
nameToNumberMap.insert(protoName, protoNumber);
|
|
factory.insert(protoNumber, protoInstanceCreator);
|
|
}
|