#!/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_10 => "Send SCTP CHUNK_DATA (bundled with unrecognized chunk type which higher two bytes are set to 10)", sctp_chunk_sack_10 => "Recv SCTP CHUNK_SACK", sctp_chunk_error_10 => "Recv SCTP CHUNK_ERROR (Unrecognized Chunk Type)", ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartServer($IF0); vConnect($IF0); vLogHTML('================ Main Test ================='); sctpUpdateSendTSN(); vSend($IF0, sctp_chunk_data_10); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_sack_10, sctp_chunk_error_10); if ($ret{status} != 0 || ($ret{recvFrame} ne sctp_chunk_sack_10 && $ret{recvFrame} ne sctp_chunk_error_10)) { vLogHTML('Cannot receive SCTP CHUNK_SACK
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } if($ret{status} == 0 && $ret{recvFrame} eq sctp_chunk_sack_10) { %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_error_10); } if($ret{status} == 0 && $ret{recvFrame} eq sctp_chunk_error_10) { vLogHTML('Received unexpected SCTP CHUNK_ERROR
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } vSendMsg($IF0); vClose($IF0); vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME ChunkTypeAction10.seq - Unrecognized Chunk Type with higher two bytes are set to 10 =head1 PURPOSE To check that if Unrecognized Chunk Type is received with higher two bytes are set to 10, the endpoint should skip this chunk and continue processing. =head1 SYNOPSIS =begin html
  ./ChunkTypeAction10.seq [-tooloption ...] -pkt ./ChunkTypeAction10.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 10. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (ESTABLISHED) (ESTABLISHED) Chunk Type BF -----------------> (bundled with DATA) <------------------ SACK TEST DESCRIPTION: 1. Send SCTP message from endpoint A to B with higher two bytes are set to 10, 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 not received at endpoint A. 3. Check B: SACK is 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. 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'. =begin html
      10 -  Skip this chunk and continue processing.
=end html 11 - Skip this chunk and continue processing, but report in an ERROR chunk using the 'Unrecognized Chunk Type' cause of error.