INET Framework for OMNeT++/OMNEST
SCTPAssociation.h File Reference
#include <omnetpp.h>
#include "IPvXAddress.h"
#include "IPAddress.h"
#include "SCTP.h"
#include "RoutingTable.h"
#include "RoutingTableAccess.h"
#include "InterfaceTable.h"
#include "InterfaceTableAccess.h"
#include "SCTPQueue.h"
#include "SCTPSendStream.h"
#include "SCTPReceiveStream.h"
#include "SCTPMessage.h"
#include "IPControlInfo.h"
#include <list>
#include <iostream>
#include <errno.h>
#include <math.h>
#include <platdep/intxtypes.h>
#include "common.h"

Classes

class  SCTPPathVariables
class  SCTPDataVariables
class  SCTPStateVariables
class  SCTPAssociation
struct  SCTPAssociation::counter
struct  SCTPAssociation::calcBytesToSend
struct  SCTPAssociation::congestionControlFunctions
struct  SCTPAssociation::streamSchedulingFunctions

Defines

#define SCTP_COMMON_HEADER   12
#define SCTP_INIT_CHUNK_LENGTH   20
#define SCTP_DATA_CHUNK_LENGTH   16
#define SCTP_SACK_CHUNK_LENGTH   16
#define SCTP_HEARTBEAT_CHUNK_LENGTH   4
#define SCTP_ABORT_CHUNK_LENGTH   4
#define SCTP_COOKIE_ACK_LENGTH   4
#define SCTP_FORWARD_TSN_CHUNK_LENGTH   8
#define SCTP_SHUTDOWN_CHUNK_LENGTH   8
#define SCTP_SHUTDOWN_ACK_LENGTH   4
#define SCTP_ERROR_CHUNK_LENGTH   4
#define IP_HEADER_LENGTH   20
#define SCTP_DEFAULT_ARWND   (1<<16)
#define SCTP_DEFAULT_INBOUND_STREAMS   17
#define SCTP_DEFAULT_OUTBOUND_STREAMS   17
#define VALID_COOKIE_LIFE_TIME   10
#define SCTP_COOKIE_LENGTH   76
#define HB_INTERVAL   30
#define PATH_MAX_RETRANS   5
#define SCTP_TIMEOUT_INIT_REXMIT   3
#define SCTP_TIMEOUT_INIT_REXMIT_MAX   240
#define SACK_DELAY   0.2
#define RTO_BETA   0.25
#define RTO_ALPHA   0.125
#define RTO_INITIAL   3
#define IPTOS_DEFAULT   0x10
#define DEFAULT_MAX_SENDQUEUE   0
#define DEFAULT_MAX_RECVQUEUE   0
#define MAX_ASSOCS   10
#define SCTP_MAX_PAYLOAD   1488
#define MAX_GAP_COUNT   500
#define MAX_GAP_REPORTS   4
#define ADD_PADDING(x)   ((((x) + 3) >> 2) << 2)
#define DEBUG   1
#define SHUTDOWN_GUARD_TIMEOUT   180

Typedefs

typedef std::vector< IPvXAddressAddressVector

Enumerations

enum  SctpState {
  SCTP_S_CLOSED = 0, SCTP_S_COOKIE_WAIT = FSM_Steady(1), SCTP_S_COOKIE_ECHOED = FSM_Steady(2), SCTP_S_ESTABLISHED = FSM_Steady(3),
  SCTP_S_SHUTDOWN_PENDING = FSM_Steady(4), SCTP_S_SHUTDOWN_SENT = FSM_Steady(5), SCTP_S_SHUTDOWN_RECEIVED = FSM_Steady(6), SCTP_S_SHUTDOWN_ACK_SENT = FSM_Steady(7)
}
enum  SCTPEventCode {
  SCTP_E_ASSOCIATE, SCTP_E_OPEN_PASSIVE, SCTP_E_ABORT, SCTP_E_SHUTDOWN,
  SCTP_E_CLOSE, SCTP_E_SEND, SCTP_E_RCV_INIT, SCTP_E_RCV_ABORT,
  SCTP_E_RCV_VALID_COOKIE_ECHO, SCTP_E_RCV_INIT_ACK, SCTP_E_RCV_COOKIE_ACK, SCTP_E_RCV_SHUTDOWN,
  SCTP_E_RCV_SHUTDOWN_ACK, SCTP_E_RCV_SHUTDOWN_COMPLETE, SCTP_E_NO_MORE_OUTSTANDING, SCTP_E_TIMEOUT_INIT_TIMER,
  SCTP_E_TIMEOUT_SHUTDOWN_TIMER, SCTP_E_TIMEOUT_RTX_TIMER, SCTP_E_TIMEOUT_HEARTBEAT_TIMER, SCTP_E_IGNORE,
  SCTP_E_RECEIVE, SCTP_E_DUP_RECEIVED, SCTP_E_PRIMARY, SCTP_E_DELIVERED,
  SCTP_E_QUEUE_MSGS_LIMIT, SCTP_E_QUEUE_BYTES_LIMIT, SCTP_E_SEND_QUEUE_LIMIT, SCTP_E_SEND_SHUTDOWN_ACK,
  SCTP_E_STOP_SENDING
}
enum  SCTPChunkTypes {
  DATA = 0, INIT = 1, INIT_ACK = 2, SACK = 3,
  HEARTBEAT = 4, HEARTBEAT_ACK = 5, ABORT = 6, SHUTDOWN = 7,
  SHUTDOWN_ACK = 8, ERRORTYPE = 9, COOKIE_ECHO = 10, COOKIE_ACK = 11,
  SHUTDOWN_COMPLETE = 14
}
enum  SCTPFlags { COMPLETE_MESG_UNORDERED = 1, COMPLETE_MESG_ORDERED = 0 }
enum  SCTPParameterTypes { UNRECOGNIZED_PARAMETER = 8, SUPPORTED_ADDRESS_TYPES = 12 }
enum  SCTPCCModules { RFC4960 = 0 }
enum  SCTPStreamSchedulers { ROUND_ROBIN = 0 }

Functions

double min (const double a, const double b)
double max (const double a, const double b)

Define Documentation

#define DEBUG   1
#define DEFAULT_MAX_RECVQUEUE   0
#define DEFAULT_MAX_SENDQUEUE   0
#define HB_INTERVAL   30
#define IP_HEADER_LENGTH   20
#define IPTOS_DEFAULT   0x10
#define MAX_ASSOCS   10
#define MAX_GAP_REPORTS   4
#define PATH_MAX_RETRANS   5
#define RTO_ALPHA   0.125
#define RTO_BETA   0.25
#define RTO_INITIAL   3
#define SACK_DELAY   0.2
#define SCTP_ABORT_CHUNK_LENGTH   4
#define SCTP_COOKIE_LENGTH   76
#define SCTP_DEFAULT_ARWND   (1<<16)
#define SCTP_DEFAULT_INBOUND_STREAMS   17
#define SCTP_DEFAULT_OUTBOUND_STREAMS   17
#define SCTP_ERROR_CHUNK_LENGTH   4

Referenced by UDPSerializer::parse().

#define SCTP_FORWARD_TSN_CHUNK_LENGTH   8
#define SCTP_HEARTBEAT_CHUNK_LENGTH   4
#define SCTP_INIT_CHUNK_LENGTH   20
#define SCTP_MAX_PAYLOAD   1488
#define SCTP_SACK_CHUNK_LENGTH   16
#define SCTP_SHUTDOWN_ACK_LENGTH   4
#define SCTP_SHUTDOWN_CHUNK_LENGTH   8
#define SCTP_TIMEOUT_INIT_REXMIT_MAX   240
#define SHUTDOWN_GUARD_TIMEOUT   180
#define VALID_COOKIE_LIFE_TIME   10

Typedef Documentation

typedef std::vector<IPvXAddress> AddressVector

Enumeration Type Documentation

Enumerator:
RFC4960 
{
    RFC4960 = 0
};
Enumerator:
DATA 
INIT 
INIT_ACK 
SACK 
HEARTBEAT 
HEARTBEAT_ACK 
ABORT 
SHUTDOWN 
SHUTDOWN_ACK 
ERRORTYPE 
COOKIE_ECHO 
COOKIE_ACK 
SHUTDOWN_COMPLETE 
{
    DATA                = 0,
    INIT                = 1,
    INIT_ACK            = 2,
    SACK                = 3,
    HEARTBEAT           = 4,
    HEARTBEAT_ACK       = 5,
    ABORT               = 6,
    SHUTDOWN            = 7,
    SHUTDOWN_ACK        = 8,
    ERRORTYPE           = 9,
    COOKIE_ECHO         = 10,
    COOKIE_ACK          = 11,
    SHUTDOWN_COMPLETE   = 14,

};
Enumerator:
SCTP_E_ASSOCIATE 
SCTP_E_OPEN_PASSIVE 
SCTP_E_ABORT 
SCTP_E_SHUTDOWN 
SCTP_E_CLOSE 
SCTP_E_SEND 
SCTP_E_RCV_INIT 
SCTP_E_RCV_ABORT 
SCTP_E_RCV_VALID_COOKIE_ECHO 
SCTP_E_RCV_INIT_ACK 
SCTP_E_RCV_COOKIE_ACK 
SCTP_E_RCV_SHUTDOWN 
SCTP_E_RCV_SHUTDOWN_ACK 
SCTP_E_RCV_SHUTDOWN_COMPLETE 
SCTP_E_NO_MORE_OUTSTANDING 
SCTP_E_TIMEOUT_INIT_TIMER 
SCTP_E_TIMEOUT_SHUTDOWN_TIMER 
SCTP_E_TIMEOUT_RTX_TIMER 
SCTP_E_TIMEOUT_HEARTBEAT_TIMER 
SCTP_E_IGNORE 
SCTP_E_RECEIVE 
SCTP_E_DUP_RECEIVED 
SCTP_E_PRIMARY 
SCTP_E_DELIVERED 
SCTP_E_QUEUE_MSGS_LIMIT 
SCTP_E_QUEUE_BYTES_LIMIT 
SCTP_E_SEND_QUEUE_LIMIT 
SCTP_E_SEND_SHUTDOWN_ACK 
SCTP_E_STOP_SENDING 
enum SCTPFlags
Enumerator:
COMPLETE_MESG_UNORDERED 
COMPLETE_MESG_ORDERED 
Enumerator:
UNRECOGNIZED_PARAMETER 
SUPPORTED_ADDRESS_TYPES 
enum SctpState
Enumerator:
SCTP_S_CLOSED 
SCTP_S_COOKIE_WAIT 
SCTP_S_COOKIE_ECHOED 
SCTP_S_ESTABLISHED 
SCTP_S_SHUTDOWN_PENDING 
SCTP_S_SHUTDOWN_SENT 
SCTP_S_SHUTDOWN_RECEIVED 
SCTP_S_SHUTDOWN_ACK_SENT 
{
    SCTP_S_CLOSED                = 0,
    SCTP_S_COOKIE_WAIT           = FSM_Steady(1),
    SCTP_S_COOKIE_ECHOED         = FSM_Steady(2),
    SCTP_S_ESTABLISHED          = FSM_Steady(3),
    SCTP_S_SHUTDOWN_PENDING     = FSM_Steady(4),
    SCTP_S_SHUTDOWN_SENT        = FSM_Steady(5),
    SCTP_S_SHUTDOWN_RECEIVED    = FSM_Steady(6),
    SCTP_S_SHUTDOWN_ACK_SENT    = FSM_Steady(7)
};
Enumerator:
ROUND_ROBIN 
{
    ROUND_ROBIN             = 0
};

Function Documentation