NAME

  FM_MixA2A3A1.seq - Fragmented DATA chunks are received for reassembly (A2->A3->A1)


PURPOSE

  To check that if fragmented DATA chunks arrive out of order of their
  TSN, the endpoint MUST hold the received DATA chunks from delivery
  to the ULP until they are reassembly.


SYNOPSIS

  ./FM_MixA2A3A1.seq [-tooloption ...] -pkt ./FM_MixA2A3A1.def
    -tooloption : v6eval tool option
  See Also: ../common/STD_PKT_COMMON.def
            ../common/SCTP_COMMON.def


PRE-TEST CONDITION

  Association is established between endpoint A and B. Arrange data 
  in endpoint A such that fragmented DATA messages are sent to
  endpoint B for reassembly.


TEST PROCEDURE

  Endpoint A                           Endpoint B                ULP
  (ESTABLISHED)                        (ESTABLISHED)
  DATA A2      ---------------->
  [TSN=1, B=0, E=0]
               <----------------        SACK
  DATA A3      ---------------->
  [TSN=2, B=0, E=1]
               <----------------        SACK
  DATA A1      ---------------->
  [TSN=0, B=1, E=0]
               <----------------        SACK 
                                        DATA Arrive       ----->
               <----------------        DATA (ECHO of A1, A2 and A3)
  SACK         ---------------->
  TEST DESCRIPTION:
  1. Send DATA A2 from endpoint A to B with B=0, E=0.
  2. Check A: DATA A2 is not delivered to the ULP.
  3. Send DATA A3 from endpoint A to B with B=0, E=1.
  4. Check B: DATA A3 is not delivered to the ULP.
  5. Send DATA A1 from endpoint A to B with B=1, E=0.
  6. Check C: DATA A1, A2 and A3 is delivered to the ULP 
     after reassemble and be send back.


NOTE

  None


REFERENCE

  RFC 4960
  6.9.  Fragmentation and Reassembly
    An endpoint MUST recognize fragmented DATA chunks by examining the
    B/E bits in each of the received DATA chunks, and queue the
    fragmented DATA chunks for reassembly.  Once the user message is
    reassembled, SCTP shall pass the reassembled user message to the
    specific stream for possible reordering and final dispatching.
    Note: If the data receiver runs out of buffer space while still
    waiting for more fragments to complete the reassembly of the message,
    it should dispatch part of its inbound message through a partial
    delivery API (see Section 10), freeing some of its receive buffer
    space so that the rest of the message may be received.