INET Framework for OMNeT++/OMNEST
AnsaIPTrafGen Class Reference

#include <AnsaIPTrafGen.h>

Inheritance diagram for AnsaIPTrafGen:
AnsaIPTrafSink

List of all members.

Protected Member Functions

virtual IPvXAddress chooseDestAddr ()
virtual void sendPacket ()
virtual int numInitStages () const
virtual void initialize (int stage)
virtual void handleMessage (cMessage *msg)

Protected Attributes

std::string nodeName
int protocol
int msgByteLength
int numPackets
std::vector< IPvXAddressdestAddresses
int numSent

Static Protected Attributes

static int counter

Detailed Description

IP traffic generator application. See NED for more info.

Definition at line 50 of file AnsaIPTrafGen.h.


Member Function Documentation

IPvXAddress AnsaIPTrafGen::chooseDestAddr ( ) [protected, virtual]

Definition at line 126 of file AnsaIPTrafGen.cc.

Referenced by sendPacket().

{
    int k = intrand(destAddresses.size());
    return destAddresses[k];
}
void AnsaIPTrafGen::handleMessage ( cMessage *  msg) [protected, virtual]

Reimplemented from AnsaIPTrafSink.

Definition at line 170 of file AnsaIPTrafGen.cc.

{
    if (msg->isSelfMessage())
    {
        // send, then reschedule next sending
        sendPacket();

        if (!numPackets || numSent<numPackets)
            scheduleAt(simTime()+(double)par("packetInterval"), msg);
    }
    else
    {
        // process incoming packet
        processPacket(PK(msg));
    }

    if (ev.isGUI())
    {
        char buf[40];
        sprintf(buf, "rcvd: %d pks\nsent: %d pks", numReceived, numSent);
        getDisplayString().setTagArg("t",0,buf);
    }
}
void AnsaIPTrafGen::initialize ( int  stage) [protected, virtual]

Definition at line 94 of file AnsaIPTrafGen.cc.

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

    AnsaIPTrafSink::initialize();

    protocol = par("protocol");
    msgByteLength = par("packetLength");
    numPackets = par("numPackets");
    simtime_t startTime = par("startTime");

    const char *destAddrs = par("destAddresses");
    cStringTokenizer tokenizer(destAddrs);
    const char *token;
    while ((token = tokenizer.nextToken())!=NULL)
        destAddresses.push_back(IPAddressResolver().resolve(token));

    counter = 0;

    numSent = 0;
    WATCH(numSent);

    if (destAddresses.empty())
        return;

    cMessage *timer = new cMessage("sendTimer");
    scheduleAt(startTime, timer);
}
virtual int AnsaIPTrafGen::numInitStages ( ) const [inline, protected, virtual]

Definition at line 68 of file AnsaIPTrafGen.h.

{return 4;}
void AnsaIPTrafGen::sendPacket ( ) [protected, virtual]

Definition at line 132 of file AnsaIPTrafGen.cc.

Referenced by handleMessage().

{
    char msgName[32];
    sprintf(msgName,"appData-%d", counter++);

    cPacket *payload = new cPacket(msgName);
    payload->setByteLength(msgByteLength);

    IPvXAddress destAddr = chooseDestAddr();
    if (!destAddr.isIPv6())
    {
        // send to IPv4
        IPControlInfo *controlInfo = new IPControlInfo();
        controlInfo->setDestAddr(destAddr.get4());
        controlInfo->setProtocol(protocol);
        payload->setControlInfo(controlInfo);

        EV << "Sending packet: ";
        printPacket(payload);
        std::cout << "Send: " << payload->getFullName() << " at time = " << simTime()  << endl;
        send(payload, "ipOut");
    }
    else
    {
        // send to IPv6
        IPv6ControlInfo *controlInfo = new IPv6ControlInfo();
        controlInfo->setDestAddr(destAddr.get6());
        controlInfo->setProtocol(protocol);
        payload->setControlInfo(controlInfo);

        EV << "Sending packet: ";
        printPacket(payload);

        send(payload, "ipv6Out");
    }
    numSent++;
}

Member Data Documentation

int AnsaIPTrafGen::counter [static, protected]

Definition at line 59 of file AnsaIPTrafGen.h.

Referenced by initialize(), and sendPacket().

std::vector<IPvXAddress> AnsaIPTrafGen::destAddresses [protected]

Definition at line 57 of file AnsaIPTrafGen.h.

Referenced by chooseDestAddr(), and initialize().

Definition at line 55 of file AnsaIPTrafGen.h.

Referenced by initialize(), and sendPacket().

std::string AnsaIPTrafGen::nodeName [protected]

Definition at line 53 of file AnsaIPTrafGen.h.

int AnsaIPTrafGen::numPackets [protected]

Definition at line 56 of file AnsaIPTrafGen.h.

Referenced by handleMessage(), and initialize().

int AnsaIPTrafGen::numSent [protected]

Definition at line 61 of file AnsaIPTrafGen.h.

Referenced by handleMessage(), initialize(), and sendPacket().

int AnsaIPTrafGen::protocol [protected]

Definition at line 54 of file AnsaIPTrafGen.h.

Referenced by initialize(), and sendPacket().


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