#!/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_init_ack_param_01 => "Send SCTP CHUNK_INIT_ACK (with unrecognized paramter type which higher two bytes are set to 01)", sctp_chunk_cookie_echo_and_error => "Recv SCTP CHUNK_COOKIE_ECHO (bundled with error Unrecognized Parameter Type)", sctp_chunk_error => "Recv SCTP CHUNK_ERROR (Unrecognized Parameter Type)" ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartClient($IF0); vLogHTML('================ Main Test ================='); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_init_rcv); if($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_init_rcv) { vLogHTML('Cannot receive SCTP CHUNK_INIT
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } sctpFetchInitField(\%ret); vSend($IF0, sctp_chunk_init_ack_param_01); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_cookie_echo_and_error, sctp_chunk_cookie_echo_rcv); if ($ret{status} != 0 || ($ret{recvFrame} ne 'sctp_chunk_cookie_echo_and_error' && $ret{recvFrame} ne 'sctp_chunk_cookie_echo_rcv')) { vLogHTML('Cannot receive SCTP CHUNK_COOKIE_ECHO
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } if ($ret{recvFrame} eq 'sctp_chunk_cookie_echo_rcv') { %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_error); if ($ret{status} != 0 && $ret{recvFrame} ne 'sctp_chunk_error') { vLogHTML('Unrecognized Parameter Type Error is not report'); vLogHTML('NG'); exit $V6evalTool::exitFail; } } vSend($IF0, sctp_chunk_cookie_ack_snd); vRecvMsg($IF0); vShutdown($IF0); vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME GEN_UnregParamType.seq - Generation of error cause Unrecognized Parameters =head1 PURPOSE To check that if unrecognized parameter type is received with higher two bytes are set to 01, the endpoint should stop processing this parameter, do not process any further parameters within this chunk, and report the unrecognized parameter in an 'Unrecognized Parameter'. =head1 SYNOPSIS =begin html
  ./GEN_UnregParamType.seq [-tooloption ...] -pkt ./GEN_UnregParamType.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 INIT-ACK chunk is sent to endpoint B with unrecognized parameter type in which higher two bytes are set to 01. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (CLOSED) (CLOSED) <----- Associate <----------------- INIT INIT-ACK -----------------> (with unrecognized parameter type 0x7F00) <----------------- COOKIE-ECHO <----------------- ERROR (with Unrecognized Parameter type) COOKIE-ACK -----------------> TEST DESCRIPTION: 1. Attempt to initiate an association from endpoint A to B. Send INIT-ACK message with one optional parameter which is not defined in INIT-ACK. The highest order two bits in that parameter should be 01. 2. Check A: That parameter is skipped and COOKIE-ECHO is received at endpoint A. 3. Check B: ERROR is received with Unrecognized parameter error cause at endpoint A. =head1 NOTE None =head1 REFERENCE RFC 4960 3.3.10.8. Unrecognized Parameters (8) Cause of error --------------- Unrecognized Parameters: This error cause is returned to the originator of the INIT ACK chunk if the receiver does not recognize one or more Optional TLV parameters in the INIT ACK chunk. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Cause Code=8 | Cause Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / Unrecognized Parameters / \ \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Unrecognized Parameters: variable length The Unrecognized Parameters field contains the unrecognized parameters copied from the INIT ACK chunk complete with TLV. This error cause is normally contained in an ERROR chunk bundled with the COOKIE ECHO chunk when responding to the INIT ACK, when the sender of the COOKIE ECHO chunk wishes to report unrecognized parameters.