ShutdownFromULP.seq - Termination of an association by receiving Terminate primitive from upper layers
To check that receiving Terminate primitive will cause the endpoint to send a SHUTDOWN message to its peer only when all the outstanding DATA has been acknowledged.
./ShutdownFromULP.seq [-tooloption ...] -pkt ./ShutdownFromULP.def -tooloption : v6eval tool option See Also: ../common/STD_PKT_COMMON.def ../common/SCTP_COMMON.def
Association is established between endpoint A and B. Arrange the data in endpoint B such that Terminate primitive is received from upper layers.
Endpoint A Endpoint B ULP (ESTABLISHED) (ESTABLISHED)
<--------- Send Don't send SACK <--------------- DATA <--------- Terminate <--------------- DATA (retransmission)
SACK ---------------->
<--------------- SHUTDOWN
SHUTDOWN ACK --------------->
<--------------- SHUTDOWN COMPLETE
TEST DESCRIPTION:
1. Try to terminate an association between endpoint A and endpoint B by sending Terminate primitive to endpoint B from ULP. Before sending Terminate, send some data to endpoint A and don't send SACK for them from A. 2. Check A: SHUTDOWN message is sent to endpoint A. 3. Check B: SHUTDOWN is sent only when any data queued up at B has been sent to A and acknowledged by A.
None
RFC 4960
9.2. Shutdown of an Association
Using the SHUTDOWN primitive (see Section 10.1), the upper layer of an endpoint in an association can gracefully close the association. This will allow all outstanding DATA chunks from the peer of the shutdown initiator to be delivered before the association terminates.
Upon receipt of the SHUTDOWN primitive from its upper layer, the endpoint enters the SHUTDOWN-PENDING state and remains there until all outstanding data has been acknowledged by its peer. The endpoint accepts no new data from its upper layer, but retransmits data to the far end if necessary to fill gaps.
Once all its outstanding data has been acknowledged, the endpoint shall send a SHUTDOWN chunk to its peer including in the Cumulative TSN Ack field the last sequential TSN it has received from the peer. It shall then start the T2-shutdown timer and enter the SHUTDOWN-SENT state. If the timer expires, the endpoint must resend the SHUTDOWN with the updated last sequential TSN received from its peer.