#!/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_bad_plen => "Send SCTP CHUNK_ABORT (with Invalid Parameter Length)", ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartServer($IF0); vConnect($IF0); vLogHTML('================ Main Test ================='); vSend($IF0, sctp_chunk_abort_bad_plen); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_any_rcv); if($ret{status} == 0 && $ret{recvFrame} eq sctp_chunk_any_rcv) { vLogHTML('Received unexpected SCTP CHUNK
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } vSendMsg($IF0); vClose($IF0); vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME InvalidParamInAbort.seq - ABORT chunk is received with invalid parameter length =head1 PURPOSE To check that if ABORT chunk is received with invalid parameter length, the endpoint should discard the packet. =head1 SYNOPSIS =begin html
  ./InvalidParamInAbort.seq [-tooloption ...] -pkt ./InvalidParamInAbort.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 data in endpoint A such that ABORT message is sent to endpoint B with invalid parameter length. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (ESTABLISHED) (ESTABLISHED) ABORT -----------------> Silently Discard (with Invalid Parameter Length) TEST DESCRIPTION: 1. Send ABORT message from endpoint A to B with invalid parameter length. Record the message sequence using a signal emulator. 2. Check A: ABORT message is discarded and no other actions are taken. 3. Check B: Was the message sequence as above. =head1 NOTE None =head1 REFERENCE RFC 4960 3.3.7. Abort Association (ABORT) (6) The ABORT chunk is sent to the peer of an association to close the association. The ABORT chunk may contain Cause Parameters to inform the receiver about the reason of the abort. DATA chunks MUST NOT be bundled with ABORT. Control chunks (except for INIT, INIT ACK, and SHUTDOWN COMPLETE) MAY be bundled with an ABORT, but they MUST be placed before the ABORT in the SCTP packet or they will be ignored by the receiver. =begin html
    If an endpoint receives an ABORT with a format error or no TCB is
    found, it MUST silently discard it.  Moreover, under any
    circumstances, an endpoint that receives an ABORT MUST NOT respond to
    that ABORT by sending an ABORT of its own.
=end html