Public Member Functions | Public Attributes

SCTPPathVariables Class Reference

#include <SCTPAssociation.h>

List of all members.

Public Member Functions

 SCTPPathVariables (const IPvXAddress &addr, SCTPAssociation *assoc)
 ~SCTPPathVariables ()

Public Attributes

SCTPAssociationassociation
IPvXAddress remoteAddress
bool activePath
bool confirmed
bool requiresRtx
bool primaryPathCandidate
bool forceHb
bool newCumAck
uint32 pathErrorCount
uint32 pathErrorThreshold
uint32 pmtu
uint32 cwnd
uint32 ssthresh
uint32 partialBytesAcked
uint32 queuedBytes
uint32 outstandingBytes
uint32 outstandingBytesBeforeUpdate
uint32 newlyAckedBytes
bool fastRecoveryActive
uint32 fastRecoveryExitPoint
simtime_t fastRecoveryEnteringTime
bool findLowestTSN
bool lowestTSNRetransmitted
cMessage * HeartbeatTimer
cMessage * HeartbeatIntervalTimer
cMessage * CwndTimer
cMessage * T3_RtxTimer
simtime_t heartbeatTimeout
simtime_t heartbeatIntervalTimeout
simtime_t rtxTimeout
simtime_t cwndTimeout
simtime_t updateTime
simtime_t lastAckTime
simtime_t pathRto
simtime_t srtt
simtime_t rttvar
unsigned int gapAcksInLastSACK
unsigned int gapNAcksInLastSACK
unsigned int numberOfDuplicates
unsigned int numberOfFastRetransmissions
unsigned int numberOfTimerBasedRetransmissions
unsigned int numberOfHeartbeatsSent
unsigned int numberOfHeartbeatAcksSent
unsigned int numberOfHeartbeatsRcvd
unsigned int numberOfHeartbeatAcksRcvd
cOutVector * pathTSN
cOutVector * pathRcvdTSN
cOutVector * pathHb
cOutVector * pathRcvdHb
cOutVector * pathHbAck
cOutVector * pathRcvdHbAck
cOutVector * statisticsPathRTO
cOutVector * statisticsPathRTT
cOutVector * statisticsPathSSthresh
cOutVector * statisticsPathCwnd

Detailed Description

Definition at line 203 of file SCTPAssociation.h.


Constructor & Destructor Documentation

SCTPPathVariables::SCTPPathVariables ( const IPvXAddress addr,
SCTPAssociation assoc 
)

Definition at line 33 of file SCTPAssociationBase.cc.

{
    InterfaceTableAccess interfaceTableAccess;

    association                  = assoc;
    remoteAddress                = addr;
    activePath                   = true;
    confirmed                    = false;
    primaryPathCandidate         = false;
    pathErrorCount               = 0;
    pathErrorThreshold       = assoc->getSctpMain()->par("pathMaxRetrans");
    if (!pathErrorThreshold) {
        pathErrorThreshold = PATH_MAX_RETRANS;
    }
    pathRto                      = assoc->getSctpMain()->par("rtoInitial");
    heartbeatTimeout             = pathRto;
    double interval              = (double)assoc->getSctpMain()->par("hbInterval");
    if (!interval) {
        interval = HB_INTERVAL;
    }
    heartbeatIntervalTimeout = pathRto+interval;
    srtt                         = pathRto;
    lastAckTime                  = 0;
    forceHb                      = false;
    partialBytesAcked            = 0;
    queuedBytes                  = 0;
    outstandingBytes             = 0;

    RoutingTableAccess routingTableAccess;
    const InterfaceEntry* rtie = routingTableAccess.get()->getInterfaceForDestAddr(remoteAddress.get4());
    if(rtie == NULL) {
        opp_error("No interface for remote address %s found!", remoteAddress.get4().str().c_str());
    }
    pmtu                         = rtie->getMTU();
    rttvar                       = 0.0;

    cwndTimeout                  = pathRto;
    cwnd                         = 0;
    ssthresh                     = 0;
    updateTime                   = 0.0;
    fastRecoveryExitPoint        = 0;
    fastRecoveryActive           = false;

    numberOfFastRetransmissions      = 0;
    numberOfTimerBasedRetransmissions = 0;
    numberOfHeartbeatsSent = 0;
    numberOfHeartbeatsRcvd = 0;
    numberOfHeartbeatAcksSent = 0;
    numberOfHeartbeatAcksRcvd = 0;

    char str[128];
    snprintf(str, sizeof(str), "HB_TIMER %d:%s",assoc->assocId,addr.str().c_str());
    HeartbeatTimer = new cMessage(str);
    snprintf(str, sizeof(str), "HB_INT_TIMER %d:%s",assoc->assocId,addr.str().c_str());
    HeartbeatIntervalTimer = new cMessage(str);
    snprintf(str, sizeof(str), "CWND_TIMER %d:%s",assoc->assocId,addr.str().c_str());
    CwndTimer = new cMessage(str);
    snprintf(str, sizeof(str), "RTX_TIMER %d:%s",assoc->assocId,addr.str().c_str());
    T3_RtxTimer = new cMessage(str);
    HeartbeatTimer->setContextPointer(association);
    HeartbeatIntervalTimer->setContextPointer(association);
    CwndTimer->setContextPointer(association);
    T3_RtxTimer->setContextPointer(association);

    snprintf(str, sizeof(str), "RTO %d:%s",assoc->assocId,addr.str().c_str());
    statisticsPathRTO = new cOutVector(str);
    snprintf(str, sizeof(str), "RTT %d:%s",assoc->assocId,addr.str().c_str());
    statisticsPathRTT = new cOutVector(str);

    snprintf(str, sizeof(str), "Slow Start Threshold %d:%s",assoc->assocId,addr.str().c_str());
    statisticsPathSSthresh = new cOutVector(str);
    snprintf(str, sizeof(str), "Congestion Window %d:%s",assoc->assocId,addr.str().c_str());
    statisticsPathCwnd = new cOutVector(str);

    snprintf(str, sizeof(str), "TSN Sent %d:%s",assoc->assocId,addr.str().c_str());
    pathTSN = new cOutVector(str);
    snprintf(str, sizeof(str), "TSN Received %d:%s",assoc->assocId,addr.str().c_str());
    pathRcvdTSN = new cOutVector(str);

    snprintf(str, sizeof(str), "HB Sent %d:%s",assoc->assocId,addr.str().c_str());
    pathHb = new cOutVector(str);
    snprintf(str, sizeof(str), "HB ACK Sent %d:%s",assoc->assocId,addr.str().c_str());
    pathHbAck = new cOutVector(str);
    snprintf(str, sizeof(str), "HB Received %d:%s",assoc->assocId,addr.str().c_str());
    pathRcvdHb = new cOutVector(str);
    snprintf(str, sizeof(str), "HB ACK Received %d:%s",assoc->assocId,addr.str().c_str());
    pathRcvdHbAck = new cOutVector(str);



    SCTPPathInfo* pinfo = new SCTPPathInfo("pinfo");
    pinfo->setRemoteAddress(addr);
    T3_RtxTimer->setControlInfo(pinfo);
    HeartbeatTimer->setControlInfo(pinfo->dup());
    HeartbeatIntervalTimer->setControlInfo(pinfo->dup());
    CwndTimer->setControlInfo(pinfo->dup());

}

SCTPPathVariables::~SCTPPathVariables (  ) 

Definition at line 132 of file SCTPAssociationBase.cc.

{
    statisticsPathSSthresh->record(0);
    statisticsPathCwnd->record(0);
    delete statisticsPathSSthresh;
    delete statisticsPathCwnd;
    statisticsPathRTO->record(0);
    statisticsPathRTT->record(0);
    delete statisticsPathRTO;
    delete statisticsPathRTT;

    delete pathTSN;
    delete pathRcvdTSN;
    delete pathHb;
    delete pathRcvdHb;
    delete pathHbAck;
    delete pathRcvdHbAck;

}


Member Data Documentation

Definition at line 209 of file SCTPAssociation.h.

Referenced by SCTPPathVariables().

Definition at line 253 of file SCTPAssociation.h.

Referenced by SCTPAssociation::pmDataIsSentOn(), and SCTPPathVariables().

Definition at line 238 of file SCTPAssociation.h.

Referenced by SCTPAssociation::cwndUpdateAfterSack().

Definition at line 263 of file SCTPAssociation.h.

Definition at line 224 of file SCTPAssociation.h.

Referenced by SCTPPathVariables().

Definition at line 230 of file SCTPAssociation.h.

Referenced by SCTPPathVariables().

Definition at line 252 of file SCTPAssociation.h.


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