MODULE SCTPDEF IDENT "SCTPDEF-1-X"; /*++ /* /* Facility: Stream Control Transmission Protocol (SCTP) /* /* /* Abstract: Request for Comments: 2960 /* /* Author: Ruslan R. Laishev /* /* Creation Date: 03-NOV-2009 /* /* Modification History: /* /*-- AGGREGATE tlv STRUCTURE PREFIX sctp$ TAG sctp NOALIGN; tag WORD UNSIGNED; len WORD UNSIGNED; val UNION; val BYTE UNSIGNED DIMENSION 1; val WORD UNSIGNED DIMENSION 1; val LONGWORD UNSIGNED DIMENSION 1; END val; END tlv; /* /* SCTP connection states /* CONSTANT ( closed, cwait, cechoed, estab, shutpnd, shutrcvd, shutsent, shutacked ) EQUALS 1 INCREMENT 0 PREFIX sctp$ TAG state; /* /* SCTP chunk types /* CONSTANT ( data, init, initack, sack, hbeat, hbeatack, abort, shut, shutack, error, cecho, cack, ecne, cwr, shuted ) EQUALS 0 INCREMENT 1 PREFIX sctp$ TAG type; AGGREGATE hdr STRUCTURE PREFIX sctp$ TAG sctp NOALIGN; type BYTE UNSIGNED; /* See SCTP$TYPE* constant flags BYTE UNSIGNED; len WORD UNSIGNED; CONSTANT sz EQUALS .; data BYTE UNSIGNED DIMENSION 1; END hdr; /* /* SCTP Packet structure /* AGGREGATE pkt STRUCTURE PREFIX sctp$ TAG sctp NOALIGN; spn WORD UNSIGNED; dpn WORD UNSIGNED; vtag LONGWORD UNSIGNED; csum LONGWORD UNSIGNED; CONSTANT sz EQUALS .; data sctp_hdr DIMENSION 1; END pkt; /* /* Payload Data (DATA) (0) /* AGGREGATE data STRUCTURE PREFIX chunk$ TAG sctp NOALIGN; CONSTANT ( middle, /* Middle piece of a fragmented user message last, /* Last piece of a fragmented user message first, /* First piece of a fragmented user message unfrag /* Unfragmented Message ) EQUALS 0 INCREMENT 1 PREFIX data$ TAG fata; tsn LONGWORD UNSIGNED; stream WORD UNSIGNED; /* Stream Identifier S seq WORD UNSIGNED; /* Stream Sequence Number n proto LONGWORD UNSIGNED; /* Payload Protocol Identifier CONSTANT sz EQUALS .; data BYTE UNSIGNED DIMENSION 1; /* User Data (seq n of Stream S) END data; /* /* Initiation (INIT) (1) /* Initiation Acknowledgement (INIT ACK) (2) /* AGGREGATE init STRUCTURE PREFIX chunk$ TAG sctp NOALIGN; initag LONGWORD UNSIGNED; a_rwnd LONGWORD UNSIGNED; os WORD UNSIGNED; mis WORD UNSIGNED; itsn LONGWORD UNSIGNED; opts sctp_tlv; END init; /* /* Selective Acknowledgement (SACK) (3) /* AGGREGATE gap STRUCTURE PREFIX chunk$ TAG sctp NOALIGN; bstart WORD UNSIGNED; bend WORD UNSIGNED; END gap; AGGREGATE sack STRUCTURE PREFIX chunk$ TAG sctp NOALIGN; tsn LONGWORD UNSIGNED; a_rwnd LONGWORD UNSIGNED; nack WORD UNSIGNED; ndup WORD UNSIGNED; gap sctp_gap DIMENSION 1; END sack; /* /* Heartbeat Request (HEARTBEAT) (4) /* Heartbeat Acknowledgement (HEARTBEAT ACK) (5) /* AGGREGATE heartbeat STRUCTURE PREFIX chunk$ TAG sctp NOALIGN; opts sctp_tlv; END heartbeat; /* /* Abort Association (ABORT) (6) /* AGGREGATE abort STRUCTURE PREFIX chunk$ TAG sctp NOALIGN; errs sctp_tlv; END abort; /* /* Shutdown Association (SHUTDOWN) (7) /* Shutdown Acknowledgement (SHUTDOWN ACK) (8) - no TSN /* Shutdown Complete (SHUTDOWN COMPLETE) (14) - no TSN /* AGGREGATE shut STRUCTURE PREFIX chunk$ TAG sctp NOALIGN; tsn LONGWORD UNSIGNED ; END shut; /* /* Operation Error (ERROR) (9) /* AGGREGATE err STRUCTURE PREFIX chunk$ TAG sctp NOALIGN; errs sctp_tlv; END err; /* /* Cookie Echo (COOKIE ECHO) (10) /* Cookie Acknowledgement (COOKIE ACK) (11) - no Cookie /* AGGREGATE echo STRUCTURE PREFIX chunk$ TAG sctp NOALIGN; cookie sctp_tlv; END echo; END_MODULE SCTPDEF;