Public Member Functions | Protected Member Functions | Protected Attributes

DummyRoute Class Reference
[netwLayer - network layer modules]

Placeholder module that simply "translates" netwControlInfo to macControlInfo. More...

#include <DummyRoute.h>

Inherits BaseNetwLayer.

Collaboration diagram for DummyRoute:
Collaboration graph
[legend]

List of all members.

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

Detailed Description

Placeholder module that simply "translates" netwControlInfo to macControlInfo.

Author:
Jerome Rousselot

Definition at line 40 of file DummyRoute.h.


Member Function Documentation

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


The documentation for this class was generated from the following files: