ostinato/common/protocolmanager.cpp
Srivats P. 0103696016 - AbstractProtocol
- 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
2009-05-24 14:54:11 +00:00

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);
}