#!/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_data_01 => "Send SCTP CHUNK_DATA (bundled with unrecognized chunk type which higher two bytes are set to 01)", sctp_chunk_error_01 => "Recv SCTP CHUNK_ERROR (Unrecognized Chunk Type)", sctp_chunk_sack_01 => "Recv SCTP CHUNK_SACK", ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartServer($IF0); vConnect($IF0); vLogHTML('================ Main Test ================='); vSend($IF0, sctp_chunk_data_01); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_sack_01, sctp_chunk_error_01); if ($ret{status} != 0 && $ret{recvFrame} ne sctp_chunk_error_01) { vLogHTML('Cannot receive SCTP CHUNK_ERROR
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_sack_01); if($ret{status} == 0 && $ret{recvFrame} eq sctp_chunk_sack_01) { vLogHTML('Received unexpected SCTP CHUNK_SACK
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } vSendMsg($IF0); vClose($IF0); vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME ChunkTypeAction01.seq - Unrecognized Chunk Type with higher two bytes are set to 01 =head1 PURPOSE To check that if Unrecognized Chunk Type is received with higher two bytes are set to 01, the endpoint should stop processing this SCTP packet and discard it, do not process any further chunks within it, and report the unrecognized chunk in an 'Unrecognized Chunk Type'. =head1 SYNOPSIS =begin html
  ./ChunkTypeAction01.seq [-tooloption ...] -pkt ./ChunkTypeAction01.def
    -tooloption : v6eval tool option
  See Also: ../common/STD_PKT_COMMON.def
            ../common/SCTP_COMMON.def
=end html =head1 PRE-TEST CONDITION Association is not established between endpoint A and B. Arrange the data in endpoint A such that a datagram with reserved chunk type is sent to endpoint B bundled with DATA chunk in any state and higher two bytes are set to 01. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (ESTABLISHED) (ESTABLISHED) Chunk Type 7F -----------------> (bundled with DATA) <------------------ ERROR (Unrecognized Chunk Type) TEST DESCRIPTION: 1. Send SCTP message from endpoint A to B with higher two bytes are set to 01, which is bundled with DATA chunk. Record the message sequence using a signal emulator. 2. Check A: Datgram with reserved chunk type is discarded and ERROR is also received at endpoint A with cause "Unrecognized Chunk type". 3. Check B: SACK is not received at endpoint A for the DATA chunk. 4. Check C: Association is not disturbed. =head1 NOTE None =head1 REFERENCE RFC 4960 3.2. Chunk Field Descriptions Chunk Types are encoded such that the highest-order 2 bits specify the action that must be taken if the processing endpoint does not recognize the Chunk Type. 00 - Stop processing this SCTP packet and discard it, do not process any further chunks within it. =begin html
      01 -  Stop processing this SCTP packet and discard it, do not
            process any further chunks within it, and report the
            unrecognized chunk in an 'Unrecognized Chunk Type'.
=end html 10 - Skip this chunk and continue processing. 11 - Skip this chunk and continue processing, but report in an ERROR chunk using the 'Unrecognized Chunk Type' cause of error.