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