#!/usr/bin/perl # # SCTP Conformance Test Suite Implementation # (C) Copyright Fujitsu Ltd. 2008, 2009 # # This file is part of the SCTP Conformance Test Suite implementation. # # The SCTP Conformance Test Suite implementation is free software; # you can redistribute it and/or modify it under the terms of # the GNU General Public License version 2 as published by # the Free Software Foundation. # # The SCTP Conformance Test Suite implementation 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 GNU CC; see the file COPYING. If not, write to # the Free Software Foundation, 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # # Please send any bug reports or fixes you make to the # email address(es): # networktest sctp # # Or submit a bug report through the following website: # http://networktest.sourceforge.net/ # # Written or modified by: # Hiroaki Kago # Wei Yongjun # # Any bugs reported given to us we will try to fix... any fixes shared will # be incorporated into the next SCTP release. # ############################################################################## BEGIN { $V6evalTool::TestVersion = '$Name: REL_1_0_0 $'; } use lib "../common"; use V6evalTool; use SCTP; %pktdesc = ( sctp_chunk_abort_flag0 => "Send SCTP CHUNK_ABORT (with own's Verification Tag and TFlag=0)", ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartServer($IF0); vConnect($IF0); vLogHTML('================ Main Test ================='); vSend($IF0, sctp_chunk_abort_flag0); vLogHTML('=== Check Whether Association is removed ==='); vSend($IF0, sctp_chunk_data_snd); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_abort_rcv); if ($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_abort_rcv) { vLogHTML('Cannot receive SCTP CHUNK_ABORT
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME AbortWithOwnTag0.seq - ABORT chunk is received with the own's Verification Tag and T bit is not set =head1 PURPOSE To check that receiving ABORT message with the own's Verification Tag and T bit is not set can terminate an association. =head1 SYNOPSIS =begin html
  ./AbortWithOwnTag0.seq [-tooloption ...] -pkt ./AbortWithOwnTag0.def
    -tooloption : v6eval tool option
  See Also: ../common/STD_PKT_COMMON.def
            ../common/SCTP_COMMON.def
=end html =head1 PRE-TEST CONDITION Association is established between endpoint A and B. Arrange the data in endpoint A such that an ABORT message is sent to endpoint B containing the own's Verification Tag and T bit is not set. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (ESTABLISHED) (ESTABLISHED) ABORT -----------------> Association is removed (with own's Verification Tag and T bit is not set) Communication Lost ---------> TEST DESCRIPTION: 1. Attempt to terminate an association between endpoint A and endpoint B by sending ABORT message with no error cause. 2. ABORT message is sent with own's Verification Tag with T-bit set to 0. 3. Check A: No Acknowledgement is sent for the ABORT message and association is removed. 4. Check B: ULP are reported of the association closure. =head1 NOTE None =head1 REFERENCE RFC 4960 8.5.1. Exceptions in Verification Tag Rules B) Rules for packet carrying ABORT: - The endpoint MUST always fill in the Verification Tag field of the outbound packet with the destination endpoint's tag value, if it is known. - If the ABORT is sent in response to an OOTB packet, the endpoint MUST follow the procedure described in Section 8.4. =begin html
    -   The receiver of an ABORT MUST accept the packet if the
        Verification Tag field of the packet matches its own tag and the
        T bit is not set OR if it is set to its peer's tag and the T bit
        is set in the Chunk Flags.  Otherwise, the receiver MUST silently
        discard the packet and take no further action.
=end html