#!/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 GEN_UnregChunkType.seq - Generation of error cause Unrecognized Chunk Type =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
  ./GEN_UnregChunkType.seq [-tooloption ...] -pkt ./GEN_UnregChunkType.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.3.10.6. Unrecognized Chunk Type (6) Cause of error --------------- Unrecognized Chunk Type: This error cause is returned to the originator of the chunk if the receiver does not understand the chunk and the upper bits of the 'Chunk Type' are set to 01 or 11. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Cause Code=6 | Cause Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / Unrecognized Chunk / \ \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Unrecognized Chunk: variable length The Unrecognized Chunk field contains the unrecognized chunk from the SCTP packet complete with Chunk Type, Chunk Flags, and Chunk Length.