Msg File src/inet/transportlayer/sctp/SCTPMessage.msg

Name Type Description
SCTPMessage message (no description)
SCTPChunk message (no description)
SCTPInitChunk message (no description)
SCTPInitAckChunk message (no description)
SCTPCookieEchoChunk message (no description)
SCTPCookie message (no description)
SCTPCookieAckChunk message (no description)
SCTPDataMsg message (no description)
SCTPDataChunk message (no description)
SCTPForwardTsnChunk message (no description)
SCTPSackChunk message (no description)
SCTPAbortChunk message (no description)
SCTPHeartbeatChunk message (no description)
SCTPHeartbeatAckChunk message (no description)
SCTPShutdownChunk message (no description)
SCTPShutdownAckChunk message (no description)
SCTPShutdownCompleteChunk message (no description)
SCTPErrorChunk message (no description)
SCTPParameter message (no description)
SCTPPacketDropChunk message (no description)
SCTPStreamResetChunk message (no description)
SCTPOutgoingSSNResetRequestParameter message (no description)
SCTPIncomingSSNResetRequestParameter message (no description)
SCTPSSNTSNResetRequestParameter message (no description)
SCTPStreamResetResponseParameter message (no description)
SCTPAddStreamsRequestParameter message (no description)
SCTPResetTimer message (no description)
SCTPAuthenticationChunk message (no description)
SCTPAsconfChunk message (no description)
SCTPAsconfAckChunk message (no description)
SCTPAddIPParameter message (no description)
SCTPDeleteIPParameter message (no description)
SCTPSetPrimaryIPParameter message (no description)
SCTPSupportedExtensionsParameter message (no description)
SCTPErrorCauseParameter message (no description)
SCTPSimpleErrorCauseParameter message (no description)
SCTPSuccessIndication message (no description)
NatMessage message (no description)

Source code:

//
// Copyright (C) 2008 Irene Ruengeler
// Copyright (C) 2009-2012 Thomas Dreibholz
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, see <http://www.gnu.org/licenses/>.
//

cplusplus {{
#include "inet/networklayer/common/L3Address.h"
}}

namespace inet::sctp;

cplusplus {{
typedef cPacket *cPacketPtr;
}}


struct cPacketPtr;


class noncobject L3Address;

message SCTPMessage extends cPacket
{
    @customize(true);
    // Source Port
    uint16 srcPort;
    // Destination Port
    uint16 destPort;
    // Verification Tag
    uint32 tag;
    bool checksumOk;
    abstract cPacketPtr chunks[];
}


message SCTPChunk extends cPacket
{
    @customize(false);
    // Chunk Type
    uint8 chunkType;
    uint32 flags;
}

message SCTPInitChunk extends SCTPChunk
{
    // Initiate Tag
    uint32 initTag;
    // Advertised Receiver Window
    uint32 a_rwnd;
    // Number of Outbound Streams
    uint16 noOutStreams;
    // Number of Inbound Streams
    uint16 noInStreams;
    // Initial TSN
    uint32 initTSN;
    bool forwardTsn;
    bool ipv4Supported;
    bool ipv6Supported;
    L3Address addresses[];
    uint8 unrecognizedParameters[]; //Will be filled by the Parser, if unrecognized Parameters arrive.
    uint32 msg_rwnd;
    uint16 chunkTypes[]; //Chunk list parameter, i.e. for SCTP AUTH
    uint16 sepChunks[]; //Supported extensions parameter, i.e. for StreamReset
    uint16 hmacTypes[]; //HMAC Identifier for HMAC algorithm parameter
    uint8 random[]; //Random Parameter for SCTP AUTH
}

message SCTPInitAckChunk extends SCTPChunk
{
    // Initiate Tag
    uint32 initTag;
    // Advertised Receiver Window
    uint32 a_rwnd;
    // Number of Outbound Streams
    uint16 noOutStreams;
    // Number of Inbound Streams
    uint16 noInStreams;
    // Initial TSN
    uint32 initTSN;
    bool forwardTsn;
    bool ipv4Supported;
    bool ipv6Supported;
    L3Address addresses[];
    char cookie[];
    uint8 unrecognizedParameters[];
    cPacketPtr stateCookie = nullptr;
    uint32 msg_rwnd;
    uint8 random[]; //Random Number
    uint16 chunkTypes[];
    uint16 sepChunks[]; //Supported extensions parameter, i.e. for StreamReset
    uint16 hmacTypes[];
}



message SCTPCookieEchoChunk extends SCTPChunk
{
    char cookie[];
    cPacketPtr stateCookie = nullptr;
    uint8 unrecognizedParameters[]; //for the serializer to send an Error chunk bundled with a Cookie-Echo
}

message SCTPCookie extends cPacket
{
    simtime_t creationTime;
    uint32 localTag;
    uint32 peerTag;
    uint8 localTieTag[];
    uint8 peerTieTag[];
}

message SCTPCookieAckChunk extends SCTPChunk
{
}

message SCTPDataMsg extends cPacket
{
    // Chunk Flags
    bool eBit = 0;
    bool bBit = 0;
    simtime_t enqueuingTime;
    simtime_t expiryTime;
    uint32 ppid;
    L3Address initialDestination;
    uint32 msgNum;
    uint16 sid;
    bool ordered;
    uint32 booksize;
    uint32 rtx;
    bool fragment;
    uint32 prMethod;
    uint32 priority;
    bool strReset;
    bool sackNow;
}

message SCTPDataChunk extends SCTPChunk
{
    // Chunk Flags
    bool eBit = 0;
    bool bBit = 0;
    bool uBit = 0;
    bool iBit = 0;
    // Transmission Sequence Number
    uint32 tsn;
    // Stream identifier
    uint16 sid;
    // Stream Sequence Number
    uint16 ssn;
    // Payload Protocol Identifier
    uint32 ppid;
    simtime_t enqueuingTime;
    simtime_t firstSendTime;
}

message SCTPForwardTsnChunk extends SCTPChunk
{
    uint32 newCumTsn;
    uint16 sid[];
    short ssn[]; // set -1 in case of unordered delivery
}

message SCTPSackChunk extends SCTPChunk
{
    // Cumulative TSN Ack
    uint32 cumTsnAck;
    // Advertised Receiver Window Credit
    uint32 a_rwnd;
    // Number of Gap Ack Blocks
    uint16 numGaps;
    // Number of Non-Revokable Gap Ack Blocks
    uint16 numNrGaps;
    // Number of Duplicate TSNs
    uint16 numDupTsns;
    // Start and End of Gap Ack Blocks
    bool   isNrSack;
    uint32 gapStart[];
    uint32 gapStop[];
    uint32 dupTsns[];
    uint32 sackSeqNum = 0;
    uint32 nrGapStart[];
    uint32 nrGapStop[];
    uint32 msg_rwnd;
    uint8  dacPacketsRcvd = 0;
    bool   nrSubtractRGaps = false;
}

message SCTPAbortChunk extends SCTPChunk
{
    // Chunk Flags
    bool T_Bit = 0;
}

message SCTPHeartbeatChunk extends SCTPChunk
{
    L3Address remoteAddr;
    simtime_t timeField;
    char info[];
}

message SCTPHeartbeatAckChunk extends SCTPChunk
{
    L3Address remoteAddr;
    simtime_t timeField;
    char info[];
}

message SCTPShutdownChunk extends SCTPChunk
{
    uint32 cumTsnAck;
}

message SCTPShutdownAckChunk extends SCTPChunk
{
}

message SCTPShutdownCompleteChunk extends SCTPChunk
{
    bool TBit = 0;
}

message SCTPErrorChunk extends SCTPChunk
{
    @customize(true);
    bool TBit = 0;
    bool MBit = 0;
    abstract cPacketPtr parameters[];
}

message SCTPParameter extends cPacket
{
    uint16 parameterType;
}

message SCTPPacketDropChunk extends SCTPChunk
{
    bool cFlag;
    bool tFlag;
    bool bFlag;
    bool mFlag;
    uint32 maxRwnd;
    uint32 queuedData;
    uint16 truncLength;
}

message SCTPStreamResetChunk extends SCTPChunk
{
    @customize(true);
    abstract cPacketPtr parameters[];
}

message SCTPOutgoingSSNResetRequestParameter extends SCTPParameter
{
    uint32 srReqSn; //Stream Reset Request Sequence Number: initialized with the initial TSN, then incremented
    uint32 srResSn; //Stream Reset Response Sequence Number
    uint32 lastTsn; //Senders last assigned TSN
    uint16 streamNumbers[];
}

message SCTPIncomingSSNResetRequestParameter extends SCTPParameter
{
    @customize(true);
    uint32 srReqSn; //Stream Reset Request Sequence Number
    uint16 streamNumbers[];
}

message SCTPSSNTSNResetRequestParameter extends SCTPParameter
{
    uint32 srReqSn; //Stream Reset Request Sequence Number
}

message SCTPStreamResetResponseParameter extends SCTPParameter
{
    uint32 srResSn; //Stream Reset Response Sequence Number
    uint32 result;
    uint32 sendersNextTsn = 0;
    uint32 receiversNextTsn = 0;
}

message SCTPAddStreamsRequestParameter extends SCTPParameter
{
    uint32 srReqSn; //Stream Reset Request Sequence Number
    uint16 numberOfStreams;
    uint16 reserved = 0;
}

message SCTPResetTimer extends cPacket
{
    uint32 inSN; //Stream Reset Response Sequence Number for Incoming Reset Request
    bool inAcked;   // false, when timer is running for the Reset Response Sequence Number, true otherwise
    uint32 outSN; //Stream Reset Response Sequence Number for Outgoing Reset Request
    bool outAcked;
}

message SCTPAuthenticationChunk extends SCTPChunk
{
    uint16 sharedKey;
    uint16 hMacIdentifier;
    bool hMacOk;
    uint32 HMAC[];
}

message SCTPAsconfChunk extends SCTPChunk
{
    @customize(true);
    uint32 serialNumber;
    L3Address addressParam;
    uint32 peerVTag; //for NAT
    abstract cPacketPtr asconfParams[];
}

message SCTPAsconfAckChunk extends SCTPChunk
{
    @customize(true);
    uint32 serialNumber;
    abstract cPacketPtr asconfResponse[];
}

message SCTPAddIPParameter extends SCTPParameter
{
    uint32 requestCorrelationId; //assigned by the sender to identify each request parameter
    L3Address addressParam;
}

message SCTPDeleteIPParameter extends SCTPParameter
{
    uint32 requestCorrelationId; //assigned by the sender to identify each request parameter
    L3Address addressParam;
}

message SCTPSetPrimaryIPParameter extends SCTPParameter
{
    uint32 requestCorrelationId; //assigned by the sender to identify each request parameter
    L3Address addressParam;
}

message SCTPSupportedExtensionsParameter extends SCTPParameter
{
    uint16 chunkTypes[];
}

message SCTPErrorCauseParameter extends SCTPParameter
{
    uint32 responseCorrelationId;
    uint32 errorCauseType;
}

message SCTPSimpleErrorCauseParameter extends SCTPParameter
{
    uint16 value;
}

message SCTPSuccessIndication extends SCTPParameter
{
    uint32 responseCorrelationId;
}

message NatMessage extends cPacket
{
    bool        multi;
    uint16      peer1;
    L3Address     peer1Addresses[];
    uint32      portPeer1;
    uint16      peer2;
    L3Address     peer2Addresses[];
    uint32      portPeer2;
}