Placeholder module that simply "translates" netwControlInfo to macControlInfo. More...
#include <DummyRoute.h>
Inherits BaseNetwLayer.
Public Member Functions | |
virtual void | initialize (int) |
Initialization of the module and some variables. | |
virtual void | finish () |
Called when the simulation has finished. | |
Protected Member Functions | |
virtual void | handleUpperMsg (cMessage *msg) |
Handle messages from upper layer. | |
virtual void | handleLowerMsg (cMessage *msg) |
Handle messages from lower layer. | |
virtual void | handleSelfMsg (cMessage *msg) |
Handle self messages. | |
virtual void | handleLowerControl (cMessage *msg) |
Handle control messages from lower layer. | |
virtual void | handleUpperControl (cMessage *msg) |
Handle control messages from lower layer. | |
NetwPkt * | encapsMsg (cPacket *appPkt) |
Encapsulate higher layer packet into an NetwPkt. | |
cMessage * | decapsMsg (NetwPkt *msg) |
Decapsulate a message. | |
Protected Attributes | |
bool | stats |
bool | trace |
int | networkID |
Placeholder module that simply "translates" netwControlInfo to macControlInfo.
Definition at line 40 of file DummyRoute.h.
NetwPkt * DummyRoute::encapsMsg | ( | cPacket * | appPkt | ) | [protected, virtual] |
Encapsulate higher layer packet into an NetwPkt.
Encapsulates the received ApplPkt into a NetwPkt and set all needed header fields.
Reimplemented from BaseNetwLayer.
Definition at line 63 of file DummyRoute.cc.
References BaseNetwLayer::arp, ArpInterface::getMacAddr(), NetwControlInfo::getNetwAddr(), BaseNetwLayer::headerLength, and BaseNetwLayer::myNetwAddr.
Referenced by handleUpperMsg().
{ int macAddr; int netwAddr; debugEV <<"in encaps...\n"; DummyRoutePkt *pkt = new DummyRoutePkt(appPkt->getName(), appPkt->getKind()); pkt->setBitLength(headerLength); NetwControlInfo* cInfo = dynamic_cast<NetwControlInfo*>(appPkt->removeControlInfo()); if(cInfo == 0){ EV << "warning: Application layer did not specifiy a destination L3 address\n" << "\tusing broadcast address instead\n"; netwAddr = L3BROADCAST; } else { debugEV <<"CInfo removed, netw addr="<< cInfo->getNetwAddr()<<endl; netwAddr = cInfo->getNetwAddr(); delete cInfo; } pkt->setNetworkID(networkID); pkt->setSrcAddr(myNetwAddr); pkt->setDestAddr(netwAddr); debugEV << " netw "<< myNetwAddr << " sending packet" <<endl; if(netwAddr == L3BROADCAST) { debugEV << "sendDown: nHop=L3BROADCAST -> message has to be broadcasted" << " -> set destMac=L2BROADCAST\n"; macAddr = L2BROADCAST; } else{ debugEV <<"sendDown: get the MAC address\n"; macAddr = arp->getMacAddr(netwAddr); } pkt->setControlInfo(new NetwToMacControlInfo(macAddr)); //encapsulate the application packet pkt->encapsulate(appPkt); debugEV <<" pkt encapsulated\n"; return pkt; }