INET Framework for OMNeT++/OMNEST
inet::ProtocolGroup Class Reference

#include <ProtocolGroup.h>

Public Member Functions

 ProtocolGroup (const char *name, std::map< int, const Protocol * > protocolNumberToProtocol)
 
const char * getName () const
 
int getNumElements () const
 
const ProtocolgetElement (int index) const
 
const ProtocolfindProtocol (int protocolNumber) const
 
const ProtocolgetProtocol (int protocolNumber) const
 
int findProtocolNumber (const Protocol *protocol) const
 
int getProtocolNumber (const Protocol *protocol) const
 
void addProtocol (int protocolId, const Protocol *protocol)
 
std::string str () const
 

Static Public Attributes

static ProtocolGroup ethertype
 
static ProtocolGroup ieee8022protocol
 
static ProtocolGroup ipprotocol
 
static ProtocolGroup pppprotocol
 
static ProtocolGroup snapOui
 
static ProtocolGroup tcpprotocol
 
static ProtocolGroup udpprotocol
 

Protected Attributes

const char * name
 
std::vector< const Protocol * > protocols
 
std::map< int, const Protocol * > protocolNumberToProtocol
 
std::map< const Protocol *, int > protocolToProtocolNumber
 

Constructor & Destructor Documentation

◆ ProtocolGroup()

inet::ProtocolGroup::ProtocolGroup ( const char *  name,
std::map< int, const Protocol * >  protocolNumberToProtocol 
)
15  :
16  name(name),
18 {
19  for (auto it : protocolNumberToProtocol) {
20  protocols.push_back(it.second);
21  protocolToProtocolNumber[it.second] = it.first;
22  }
23 }

Member Function Documentation

◆ addProtocol()

void inet::ProtocolGroup::addProtocol ( int  protocolId,
const Protocol protocol 
)
56 {
57  protocols.push_back(protocol);
58  protocolNumberToProtocol[protocolId] = protocol;
59  protocolToProtocolNumber[protocol] = protocolId;
60 }

Referenced by inet::IpvxTrafSink::initialize(), and inet::IpvxTrafGen::initialize().

◆ findProtocol()

const Protocol * inet::ProtocolGroup::findProtocol ( int  protocolNumber) const
26 {
27  auto it = protocolNumberToProtocol.find(protocolNumber);
28  return it != protocolNumberToProtocol.end() ? it->second : nullptr;
29 }

Referenced by inet::ieee80211::Ieee80211LlcEpd::decapsulate(), inet::Ieee802EpdProtocolDissector::dissect(), inet::BMacProtocolDissector::dissect(), inet::TcpProtocolDissector::dissect(), inet::UdpProtocolDissector::dissect(), inet::XMacProtocolDissector::dissect(), inet::AckingMacProtocolDissector::dissect(), inet::Ieee802154ProtocolDissector::dissect(), inet::CsmaCaMacProtocolDissector::dissect(), inet::EthernetMacProtocolDissector::dissect(), inet::LMacProtocolDissector::dissect(), inet::PppProtocolDissector::dissect(), inet::physicallayer::Ieee8021qTagEpdProtocolDissector::dissect(), inet::physicallayer::Ieee8021rTagEpdProtocolDissector::dissect(), inet::Ieee8022LlcInserter::getProtocol(), inet::Ieee8022SnapInserter::getProtocol(), inet::Ieee8022LlcChecker::getProtocol(), inet::Ieee8022SnapChecker::getProtocol(), getProtocol(), inet::Ieee8022Llc::getProtocol(), inet::ieee80211::LlcProtocolTag::getProtocol(), inet::FloodingHeader::getProtocol(), inet::ProbabilisticBroadcastHeader::getProtocol(), inet::NextHopForwardingHeader::getProtocol(), inet::WiseRouteHeader::getProtocol(), inet::Ipv6Header::getProtocol(), inet::Ipv4Header::getProtocol(), inet::IpvxTrafSink::initialize(), inet::IpvxTrafGen::initialize(), inet::EthernetTypeOrLengthChecker::matchesPacket(), inet::Ieee8021aeTagEpdHeaderChecker::matchesPacket(), inet::Ieee8021rTagEpdHeaderChecker::matchesPacket(), inet::EthernetMacHeaderChecker::matchesPacket(), inet::Ieee8021qTagEpdHeaderChecker::matchesPacket(), and inet::EthernetEncapsulation::processPacketFromMac().

◆ findProtocolNumber()

◆ getElement()

const Protocol* inet::ProtocolGroup::getElement ( int  index) const
inline
28 { return protocols.at(index); }

◆ getName()

const char* inet::ProtocolGroup::getName ( ) const
inline
26 { return name; }

◆ getNumElements()

int inet::ProtocolGroup::getNumElements ( ) const
inline
27 { return protocols.size(); }

◆ getProtocol()

◆ getProtocolNumber()

int inet::ProtocolGroup::getProtocolNumber ( const Protocol protocol) const
47 {
48  auto protocolNumber = findProtocolNumber(protocol);
49  if (protocolNumber != -1)
50  return protocolNumber;
51  else
52  throw cRuntimeError("Unknown protocol: id = %d, name = %s", protocol->getId(), protocol->getName());
53 }

Referenced by inet::Ipv4Encap::encapsulate(), inet::Ipv4::encapsulate(), inet::CsmaCaMac::encapsulate(), inet::IpvxTrafSink::printPacket(), inet::IpvxTrafGen::printPacket(), and inet::EthernetEncapsulation::processPacketFromHigherLayer().

◆ str()

std::string inet::ProtocolGroup::str ( ) const
inline
36 { return name; }

Referenced by inet::operator<<().

Member Data Documentation

◆ ethertype

ProtocolGroup inet::ProtocolGroup::ethertype
static

Referenced by inet::ieee80211::Ieee80211LlcEpd::decapsulate(), inet::AckingMac::decapsulate(), inet::LMac::decapsulate(), inet::CsmaCaMac::decapsulate(), inet::BMac::decapsulate(), inet::XMac::decapsulate(), inet::Ieee802154Mac::decapsulate(), inet::Ieee802EpdProtocolDissector::dissect(), inet::CsmaCaMacProtocolDissector::dissect(), inet::EthernetMacProtocolDissector::dissect(), inet::LMacProtocolDissector::dissect(), inet::AckingMacProtocolDissector::dissect(), inet::BMacProtocolDissector::dissect(), inet::XMacProtocolDissector::dissect(), inet::Ieee802154ProtocolDissector::dissect(), inet::physicallayer::Ieee8021qTagEpdProtocolDissector::dissect(), inet::physicallayer::Ieee8021rTagEpdProtocolDissector::dissect(), inet::ieee80211::Ieee80211LlcEpd::encapsulate(), inet::Ieee8022Llc::encapsulate(), inet::AckingMac::encapsulate(), inet::LMac::encapsulate(), inet::CsmaCaMac::encapsulate(), inet::BMac::encapsulate(), inet::XMac::encapsulate(), inet::Ieee802154Mac::encapsulate(), inet::queueing::EcnMarker::getEcn(), inet::Ieee8022SnapInserter::getProtocol(), inet::Ieee8022SnapChecker::getProtocol(), inet::Ieee8022Llc::getProtocol(), inet::DscpMarker::markPacket(), inet::EthernetTypeOrLengthChecker::matchesPacket(), inet::Ieee8021aeTagEpdHeaderChecker::matchesPacket(), inet::Ieee8021rTagEpdHeaderChecker::matchesPacket(), inet::EthernetMacHeaderChecker::matchesPacket(), inet::Ieee8021qTagEpdHeaderChecker::matchesPacket(), inet::Ieee8021aeTagEpdHeaderChecker::processPacket(), inet::EthernetTypeOrLengthChecker::processPacket(), inet::EthernetTypeOrLengthInserter::processPacket(), inet::Ieee8021aeTagEpdHeaderInserter::processPacket(), inet::Ieee8022SnapInserter::processPacket(), inet::Ieee8021rTagEpdHeaderChecker::processPacket(), inet::Ieee8021rTagEpdHeaderInserter::processPacket(), inet::EthernetMacHeaderInserter::processPacket(), inet::EthernetMacHeaderChecker::processPacket(), inet::Ieee8021qTagEpdHeaderChecker::processPacket(), inet::Ieee8021qTagEpdHeaderInserter::processPacket(), inet::EthernetEncapsulation::processPacketFromHigherLayer(), inet::EthernetEncapsulation::processPacketFromMac(), and inet::queueing::EcnMarker::setEcn().

◆ ieee8022protocol

◆ ipprotocol

◆ name

const char* inet::ProtocolGroup::name
protected

◆ pppprotocol

ProtocolGroup inet::ProtocolGroup::pppprotocol
static

◆ protocolNumberToProtocol

std::map<int, const Protocol *> inet::ProtocolGroup::protocolNumberToProtocol
protected

◆ protocols

std::vector<const Protocol *> inet::ProtocolGroup::protocols
protected

Referenced by addProtocol(), and ProtocolGroup().

◆ protocolToProtocolNumber

std::map<const Protocol *, int> inet::ProtocolGroup::protocolToProtocolNumber
protected

◆ snapOui

◆ tcpprotocol

ProtocolGroup inet::ProtocolGroup::tcpprotocol
static

◆ udpprotocol

ProtocolGroup inet::ProtocolGroup::udpprotocol
static

The documentation for this class was generated from the following files:
protocol
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down protocol
Definition: IUdp-gates.txt:25
inet::ProtocolGroup::findProtocol
const Protocol * findProtocol(int protocolNumber) const
Definition: ProtocolGroup.cc:25
inet::ProtocolGroup::protocolToProtocolNumber
std::map< const Protocol *, int > protocolToProtocolNumber
Definition: ProtocolGroup.h:21
inet::ProtocolGroup::findProtocolNumber
int findProtocolNumber(const Protocol *protocol) const
Definition: ProtocolGroup.cc:40
inet::ProtocolGroup::name
const char * name
Definition: ProtocolGroup.h:18
inet::ProtocolGroup::protocolNumberToProtocol
std::map< int, const Protocol * > protocolNumberToProtocol
Definition: ProtocolGroup.h:20
inet::ProtocolGroup::protocols
std::vector< const Protocol * > protocols
Definition: ProtocolGroup.h:19