INET Framework for OMNeT++/OMNEST
SCTPAssociation.h File Reference

Classes

class  inet::sctp::SCTPPathVariables
 
class  inet::sctp::SCTPDataVariables
 
class  inet::sctp::SCTPStateVariables
 
struct  inet::sctp::SCTPStateVariables::requestData
 
class  inet::sctp::SCTPAssociation
 
struct  inet::sctp::SCTPAssociation::counter
 
struct  inet::sctp::SCTPAssociation::calcBytesToSend
 
struct  inet::sctp::SCTPAssociation::congestionControlFunctions
 
struct  inet::sctp::SCTPAssociation::streamSchedulingFunctions
 

Namespaces

 inet
 Copyright (c) 2005 Jan Ringo�, www.ringos.cz.
 
 inet::sctp
 

Macros

#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_NRSACK_CHUNK_LENGTH   20
 
#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 SCTP_STREAM_RESET_CHUNK_LENGTH   4
 
#define SCTP_OUTGOING_RESET_REQUEST_PARAMETER_LENGTH   16
 
#define SCTP_INCOMING_RESET_REQUEST_PARAMETER_LENGTH   8
 
#define SCTP_SSN_TSN_RESET_REQUEST_PARAMETER_LENGTH   8
 
#define SCTP_STREAM_RESET_RESPONSE_PARAMETER_LENGTH   12
 
#define SCTP_ADD_STREAMS_REQUEST_PARAMETER_LENGTH   12
 
#define SCTP_SUPPORTED_EXTENSIONS_PARAMETER_LENGTH   4
 
#define SCTP_ADD_IP_CHUNK_LENGTH   8
 
#define SCTP_ADD_IP_PARAMETER_LENGTH   8
 
#define SCTP_AUTH_CHUNK_LENGTH   8
 
#define SCTP_PKTDROP_CHUNK_LENGTH   16
 
#define SHA_LENGTH   20
 
#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_COMPRESSED_NRSACK_CHUNK_LENGTH   16
 
#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 /* unlimited send queue */
 
#define DEFAULT_MAX_RECVQUEUE   0 /* unlimited recv queue - unused really */
 
#define MAX_ASSOCS   10
 
#define SCTP_MAX_PAYLOAD   1488
 
#define ADD_PADDING(x)   ((((x) + 3) >> 2) << 2)
 
#define DEBUG   1
 
#define SHUTDOWN_GUARD_TIMEOUT   180
 
#define SCTP_UINT16_GT(a, b)
 Compare TSNs. More...
 
#define SCTP_UINT16_GE(a, b)   (SCTP_UINT16_GT(a, b) || (a == b))
 
#define SCTP_UINT32_GT(a, b)
 
#define SCTP_UINT32_GE(a, b)   (SCTP_UINT32_GT(a, b) || (a == b))
 
#define SCTP_TSN_GT(a, b)   SCTP_UINT32_GT(a, b)
 
#define SCTP_TSN_GE(a, b)   SCTP_UINT32_GE(a, b)
 
#define SCTP_SSN_GT(a, b)   SCTP_UINT16_GT(a, b)
 
#define SCTP_SSN_GE(a, b)   SCTP_UINT16_GE(a, b)
 

Typedefs

typedef std::vector< L3Address > inet::sctp::AddressVector
 

Enumerations

enum  inet::sctp::SctpState {
  inet::sctp::SCTP_S_CLOSED = 0, inet::sctp::SCTP_S_COOKIE_WAIT = FSM_Steady(1), inet::sctp::SCTP_S_COOKIE_ECHOED = FSM_Steady(2), inet::sctp::SCTP_S_ESTABLISHED = FSM_Steady(3),
  inet::sctp::SCTP_S_SHUTDOWN_PENDING = FSM_Steady(4), inet::sctp::SCTP_S_SHUTDOWN_SENT = FSM_Steady(5), inet::sctp::SCTP_S_SHUTDOWN_RECEIVED = FSM_Steady(6), inet::sctp::SCTP_S_SHUTDOWN_ACK_SENT = FSM_Steady(7)
}
 
enum  inet::sctp::SCTPEventCode {
  inet::sctp::SCTP_E_ASSOCIATE, inet::sctp::SCTP_E_OPEN_PASSIVE, inet::sctp::SCTP_E_ABORT, inet::sctp::SCTP_E_SHUTDOWN,
  inet::sctp::SCTP_E_CLOSE, inet::sctp::SCTP_E_SEND, inet::sctp::SCTP_E_RCV_INIT, inet::sctp::SCTP_E_RCV_ABORT,
  inet::sctp::SCTP_E_RCV_VALID_COOKIE_ECHO, inet::sctp::SCTP_E_RCV_INIT_ACK, inet::sctp::SCTP_E_RCV_COOKIE_ACK, inet::sctp::SCTP_E_RCV_SHUTDOWN,
  inet::sctp::SCTP_E_RCV_SHUTDOWN_ACK, inet::sctp::SCTP_E_RCV_SHUTDOWN_COMPLETE, inet::sctp::SCTP_E_NO_MORE_OUTSTANDING, inet::sctp::SCTP_E_TIMEOUT_INIT_TIMER,
  inet::sctp::SCTP_E_TIMEOUT_SHUTDOWN_TIMER, inet::sctp::SCTP_E_TIMEOUT_RTX_TIMER, inet::sctp::SCTP_E_TIMEOUT_HEARTBEAT_TIMER, inet::sctp::SCTP_E_IGNORE,
  inet::sctp::SCTP_E_RECEIVE, inet::sctp::SCTP_E_DUP_RECEIVED, inet::sctp::SCTP_E_PRIMARY, inet::sctp::SCTP_E_DELIVERED,
  inet::sctp::SCTP_E_QUEUE_MSGS_LIMIT, inet::sctp::SCTP_E_QUEUE_BYTES_LIMIT, inet::sctp::SCTP_E_SEND_QUEUE_LIMIT, inet::sctp::SCTP_E_SEND_SHUTDOWN_ACK,
  inet::sctp::SCTP_E_STOP_SENDING, inet::sctp::SCTP_E_STREAM_RESET, inet::sctp::SCTP_E_RESET_ASSOC, inet::sctp::SCTP_E_ADD_STREAMS,
  inet::sctp::SCTP_E_SEND_ASCONF, inet::sctp::SCTP_E_SET_STREAM_PRIO, inet::sctp::SCTP_E_ACCEPT, inet::sctp::SCTP_E_SET_RTO_INFO
}
 
enum  inet::sctp::SCTPChunkTypes {
  inet::sctp::DATA = 0, inet::sctp::INIT = 1, inet::sctp::INIT_ACK = 2, inet::sctp::SACK = 3,
  inet::sctp::HEARTBEAT = 4, inet::sctp::HEARTBEAT_ACK = 5, inet::sctp::ABORT = 6, inet::sctp::SHUTDOWN = 7,
  inet::sctp::SHUTDOWN_ACK = 8, inet::sctp::ERRORTYPE = 9, inet::sctp::COOKIE_ECHO = 10, inet::sctp::COOKIE_ACK = 11,
  inet::sctp::SHUTDOWN_COMPLETE = 14, inet::sctp::AUTH = 15, inet::sctp::NR_SACK = 16, inet::sctp::ASCONF_ACK = 128,
  inet::sctp::PKTDROP = 129, inet::sctp::RE_CONFIG = 130, inet::sctp::FORWARD_TSN = 192, inet::sctp::ASCONF = 193,
  inet::sctp::IFORWARD_TSN = 194
}
 
enum  inet::sctp::SCTPPrMethods {
  inet::sctp::PR_NONE = 0, inet::sctp::PR_TTL = 1, inet::sctp::PR_RTX = 2, inet::sctp::PR_PRIO = 3,
  inet::sctp::PR_STRRST = 4
}
 
enum  inet::sctp::SCTPStreamResetConstants {
  inet::sctp::NOTHING_TO_DO = 0, inet::sctp::PERFORMED = 1, inet::sctp::DENIED = 2, inet::sctp::WRONG_SSN = 3,
  inet::sctp::REQUEST_IN_PROGRESS = 4, inet::sctp::NO_RESET = 5, inet::sctp::DEFERRED = 6, inet::sctp::RESET_OUTGOING = 7,
  inet::sctp::RESET_INCOMING = 8, inet::sctp::RESET_BOTH = 9, inet::sctp::SSN_TSN = 10, inet::sctp::ADD_INCOMING = 11,
  inet::sctp::ADD_OUTGOING = 12, inet::sctp::OUTGOING_RESET_REQUEST_PARAMETER = 13, inet::sctp::INCOMING_RESET_REQUEST_PARAMETER = 14, inet::sctp::SSN_TSN_RESET_REQUEST_PARAMETER = 15,
  inet::sctp::STREAM_RESET_RESPONSE_PARAMETER = 16, inet::sctp::ADD_OUTGOING_STREAMS_REQUEST_PARAMETER = 17, inet::sctp::ADD_INCOMING_STREAMS_REQUEST_PARAMETER = 18, inet::sctp::ADD_BOTH = 19,
  inet::sctp::PERFORMED_WITH_OPTION = 20, inet::sctp::PERFORMED_WITH_ADDOUT = 21
}
 
enum  inet::sctp::SCTPAddIPCorrelatedTypes {
  inet::sctp::SET_PRIMARY_ADDRESS = 49156, inet::sctp::ADAPTATION_LAYER_INDICATION = 49158, inet::sctp::SUPPORTED_EXTENSIONS = 32776, inet::sctp::ADD_IP_ADDRESS = 49153,
  inet::sctp::DELETE_IP_ADDRESS = 49154, inet::sctp::ERROR_CAUSE_INDICATION = 49155, inet::sctp::SUCCESS_INDICATION = 49157, inet::sctp::ERROR_DELETE_LAST_IP_ADDRESS = 160,
  inet::sctp::ERROR_DELETE_SOURCE_ADDRESS = 162
}
 
enum  inet::sctp::SCTPParameterTypes {
  inet::sctp::UNRECOGNIZED_PARAMETER = 8, inet::sctp::SUPPORTED_ADDRESS_TYPES = 12, inet::sctp::FORWARD_TSN_SUPPORTED_PARAMETER = 49152, inet::sctp::RANDOM = 32770,
  inet::sctp::CHUNKS = 32771, inet::sctp::HMAC_ALGO = 32772
}
 
enum  inet::sctp::SCTPErrorCauses { inet::sctp::INVALID_STREAM_IDENTIFIER = 1, inet::sctp::NO_USER_DATA = 9, inet::sctp::UNSUPPORTED_HMAC = 261, inet::sctp::MISSING_NAT_ENTRY = 177 }
 
enum  inet::sctp::SCTPCCModules { inet::sctp::RFC4960 = 0 }
 
enum  inet::sctp::SCTPStreamSchedulers {
  inet::sctp::ROUND_ROBIN = 0, inet::sctp::ROUND_ROBIN_PACKET = 1, inet::sctp::RANDOM_SCHEDULE = 2, inet::sctp::RANDOM_SCHEDULE_PACKET = 3,
  inet::sctp::FAIR_BANDWITH = 4, inet::sctp::FAIR_BANDWITH_PACKET = 5, inet::sctp::PRIORITY = 6, inet::sctp::FCFS = 7,
  inet::sctp::PATH_MANUAL = 8, inet::sctp::PATH_MAP_TO_PATH = 9
}
 

Functions

double inet::sctp::min (const double a, const double b)
 Returns the minimum of a and b. More...
 
double inet::sctp::max (const double a, const double b)
 Returns the maximum of a and b. More...
 

Macro Definition Documentation

#define ADD_PADDING (   x)    ((((x) + 3) >> 2) << 2)

Referenced by inet::sctp::SCTPAsconfChunk::addAsconfParam(), inet::sctp::SCTPAsconfAckChunk::addAsconfResponse(), inet::sctp::SCTPMessage::addChunk(), inet::sctp::SCTPStreamResetChunk::addParameter(), inet::sctp::SCTPErrorChunk::addParameters(), PacketDrill::buildInitAckChunk(), PacketDrill::buildInitChunk(), inet::sctp::SCTPAssociation::createForwardTsnChunk(), inet::sctp::SCTPAssociation::decreaseOutstandingBytes(), inet::sctp::SCTPAssociation::dequeueOutboundDataMsg(), inet::serializer::SCTPSerializer::deserialize(), inet::sctp::SCTPAssociation::fragmentOutboundDataMsgs(), inet::sctp::SCTPAssociation::getOutboundDataChunk(), inet::sctp::SCTPAssociation::handleChunkReportedAsMissing(), inet::sctp::SCTPAssociation::increaseOutstandingBytes(), inet::sctp::SCTPAssociation::makeRoomForTsn(), inet::sctp::SCTPAssociation::moveChunkToOtherPath(), inet::sctp::SCTPAssociation::nextChunkFitsIntoPacket(), inet::sctp::SCTPAssociation::nonRenegablyAckChunk(), inet::serializer::SCTPSerializer::parse(), inet::sctp::SCTPAssociation::process_SEND(), inet::sctp::SCTPAssociation::pushUlp(), inet::sctp::SCTPAssociation::putInDeliveryQ(), inet::sctp::SCTPAssociation::putInTransmissionQ(), inet::sctp::SCTPAsconfChunk::removeAsconfParam(), inet::sctp::SCTPAsconfAckChunk::removeAsconfResponse(), inet::sctp::SCTPMessage::removeChunk(), inet::sctp::SCTPMessage::removeLastChunk(), inet::sctp::SCTPErrorChunk::removeParameter(), inet::sctp::SCTPStreamResetChunk::removeParameter(), inet::sctp::SCTPAssociation::renegablyAckChunk(), inet::sctp::SCTPAssociation::sendInit(), and inet::sctp::SCTPAssociation::sendInitAck().

#define DEBUG   1
#define DEFAULT_MAX_RECVQUEUE   0 /* unlimited recv queue - unused really */
#define DEFAULT_MAX_SENDQUEUE   0 /* unlimited send queue */
#define HB_INTERVAL   30
#define IPTOS_DEFAULT   0x10
#define MAX_ASSOCS   10
#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_COMMON_HEADER   12

Referenced by PacketDrill::buildSCTPPacket(), inet::PacketDrillApp::closeAllSockets(), inet::sctp::SCTPAssociation::createSack(), inet::sctp::SCTP::handleMessage(), inet::serializer::SCTPSerializer::parse(), inet::sctp::SCTPAssociation::pmStartPathManagement(), inet::sctp::SCTPAssociation::processAddInAndOutResetRequestArrived(), inet::sctp::SCTPAssociation::processAsconfArrived(), inet::sctp::SCTPAssociation::processPacketDropArrived(), inet::sctp::SCTPAssociation::retransmitAsconf(), inet::sctp::SCTPAssociation::retransmitCookieEcho(), inet::sctp::SCTPAssociation::retransmitInit(), inet::sctp::SCTPAssociation::retransmitReset(), inet::sctp::SCTPAssociation::retransmitShutdown(), inet::sctp::SCTPAssociation::retransmitShutdownAck(), inet::sctp::SCTPAssociation::sendAbort(), inet::sctp::SCTP::sendAbortFromMain(), inet::sctp::SCTPAssociation::sendAddInAndOutStreamsRequest(), inet::sctp::SCTPAssociation::sendAddOutgoingStreamsRequest(), inet::sctp::SCTPAssociation::sendAsconf(), inet::sctp::SCTPAssociation::sendAsconfAck(), inet::sctp::SCTPNatHook::sendBackError(), inet::sctp::SCTPAssociation::sendBundledOutgoingResetAndResponse(), inet::sctp::SCTPAssociation::sendCookieAck(), inet::sctp::SCTPAssociation::sendCookieEcho(), inet::sctp::SCTPAssociation::sendDoubleStreamResetResponse(), inet::sctp::SCTPAssociation::sendHeartbeat(), inet::sctp::SCTPAssociation::sendHeartbeatAck(), inet::sctp::SCTPAssociation::sendHMacError(), inet::sctp::SCTPAssociation::sendInit(), inet::sctp::SCTPAssociation::sendInitAck(), inet::sctp::SCTPAssociation::sendInvalidStreamError(), inet::sctp::SCTPAssociation::sendOnPath(), inet::sctp::SCTPAssociation::sendOutgoingRequestAndResponse(), inet::sctp::SCTPAssociation::sendOutgoingResetRequest(), inet::sctp::SCTPAssociation::sendPacketDrop(), inet::sctp::SCTPAssociation::sendSack(), inet::sctp::SCTPAssociation::sendShutdown(), inet::sctp::SCTPAssociation::sendShutdownAck(), inet::sctp::SCTPAssociation::sendShutdownComplete(), inet::sctp::SCTP::sendShutdownCompleteFromMain(), inet::sctp::SCTPAssociation::sendStreamResetRequest(), and inet::sctp::SCTPAssociation::sendStreamResetResponse().

#define SCTP_COMPRESSED_NRSACK_CHUNK_LENGTH   16
#define SCTP_DEFAULT_ARWND   (1 << 16)
#define SCTP_DEFAULT_INBOUND_STREAMS   17
#define SCTP_DEFAULT_OUTBOUND_STREAMS   17
#define SCTP_FORWARD_TSN_CHUNK_LENGTH   8
#define SCTP_MAX_PAYLOAD   1488
#define SCTP_NRSACK_CHUNK_LENGTH   20
#define SCTP_PKTDROP_CHUNK_LENGTH   16
#define SCTP_SACK_CHUNK_LENGTH   16
#define SCTP_SHUTDOWN_CHUNK_LENGTH   8
#define SCTP_SSN_GE (   a,
 
)    SCTP_UINT16_GE(a, b)
#define SCTP_SSN_GT (   a,
 
)    SCTP_UINT16_GT(a, b)
#define SCTP_TIMEOUT_INIT_REXMIT_MAX   240
#define SCTP_UINT16_GE (   a,
 
)    (SCTP_UINT16_GT(a, b) || (a == b))
#define SCTP_UINT16_GT (   a,
 
)
Value:
(((a < b) && ((uint16_t)(b - a) > (1U<<15))) || \
((a > b) && ((uint16_t)(a - b) < (1U<<15))))
value< double, units::m > b
Definition: Units.h:1054

Compare TSNs.

#define SCTP_UINT32_GE (   a,
 
)    (SCTP_UINT32_GT(a, b) || (a == b))
#define SCTP_UINT32_GT (   a,
 
)
Value:
(((a < b) && ((uint32_t)(b - a) > (1U<<31))) || \
((a > b) && ((uint32_t)(a - b) < (1U<<31))))
value< double, units::m > b
Definition: Units.h:1054
#define SHUTDOWN_GUARD_TIMEOUT   180
#define VALID_COOKIE_LIFE_TIME   10