NETWORK ATTACKS FRAMEWORK  1.0.0
A NETwork Attacks framework. Making network attacks impact evaluation easier!
NA_UDPBasicBurst Class Reference

UDP application. More...

#include <NA_UDPBasicBurst.h>

List of all members.

Protected Member Functions

virtual void processPacket (cPacket *msg)
 Overridden function.
virtual void initialize (int stage)
 Method from cSimpleModule class, to initialize the simple module.

Protected Attributes

int numHopsTotal
 Number of hops for all the packets.
double avHopCount
 Average hop count.

Static Protected Attributes

static simsignal_t hopCountSignal = SIMSIGNAL_NULL
 Hop count signal for statistics.

Detailed Description

UDP application.

See NED for more info.

Definition at line 38 of file NA_UDPBasicBurst.h.


Member Function Documentation

void NA_UDPBasicBurst::initialize ( int  stage) [protected, virtual]

Method from cSimpleModule class, to initialize the simple module.

Overridden function.

Definition at line 39 of file NA_UDPBasicBurst.cc.

{
    // because of IPvXAddressResolver, we need to wait until interfaces are registered,
    // address auto-assignment takes place etc.
    if (stage != 3)
        return;

    // Initialization
    numHopsTotal = 0;
    avHopCount = 0;
    hopCountSignal = registerSignal("hopCount");

    UDPBasicBurst::initialize(stage);
}
void NA_UDPBasicBurst::processPacket ( cPacket *  msg) [protected, virtual]

Overridden function.

Definition at line 55 of file NA_UDPBasicBurst.cc.

{

    if (pk->getKind() == UDP_I_ERROR)
    {
        EV << "UDP error received\n";
        delete pk;
        return;
    }

    if (pk->hasPar("sourceId") && pk->hasPar("msgId"))
    {
        // duplicate control
        int moduleId = (int)pk->par("sourceId");
        int msgId = (int)pk->par("msgId");
        SourceSequence::iterator it = sourceSequence.find(moduleId);
        if (it != sourceSequence.end())
        {
            if (it->second >= msgId)
            {
                EV << "Out of order packet: " << UDPSocket::getReceivedPacketInfo(pk) << endl;
                emit(outOfOrderPkSignal, pk);
                delete pk;
                numDuplicated++;
                return;
            }
            else
                it->second = msgId;
        }
        else
            sourceSequence[moduleId] = msgId;
    }

    if (delayLimit > 0)
    {
        if (simTime() - pk->getTimestamp() > delayLimit)
        {
            EV << "Old packet: " << UDPSocket::getReceivedPacketInfo(pk) << endl;
            emit(dropPkSignal, pk);
            delete pk;
            numDeleted++;
            return;
        }
    }

    EV << "Received packet: " << UDPSocket::getReceivedPacketInfo(pk) << endl;
    emit(rcvdPkSignal, pk);
    numReceived++;

    cObject *ctrl = pk->getControlInfo();
    if (dynamic_cast<UDPDataIndication *>(ctrl)!=NULL) {
        UDPDataIndication *udpCtrl = (UDPDataIndication *)ctrl;
        short hopCnt = 32 - udpCtrl->getTtl(); // travelled hops of IP packet

        numHopsTotal = numHopsTotal + hopCnt;
        if ( numReceived > 0 )
            avHopCount = (double)numHopsTotal/(double)numReceived;
        else
            avHopCount = 0;

        //cout << "Hop Count = " << hopCnt << endl;
        //cout << "Num Hop total = " << numHopsTotal << endl;
        //cout << "Average Hop Count = " << numHopsTotal << " / " << numReceived << " = "<< avHopCount << endl << endl;

        emit(hopCountSignal, avHopCount);

    }

    delete pk;

}

Member Data Documentation

double NA_UDPBasicBurst::avHopCount [protected]

Average hop count.

Definition at line 50 of file NA_UDPBasicBurst.h.

simsignal_t NA_UDPBasicBurst::hopCountSignal = SIMSIGNAL_NULL [static, protected]

Hop count signal for statistics.

Definition at line 55 of file NA_UDPBasicBurst.h.

Number of hops for all the packets.

Definition at line 45 of file NA_UDPBasicBurst.h.


The documentation for this class was generated from the following files:
 All Classes Files Functions Variables Typedefs Enumerator Defines