#!/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_1 $'; } use lib "../common"; use V6evalTool; use SCTP; %pktdesc = ( sctp_chunk_asconf_unknown_param => "Send SCTP CHUNK_ASCONF (Unrecognized Parameter)", sctp_chunk_asconf_ack_err => "Recv SCTP CHUNK_ASCONF_ACK (Unrecognized Parameter Error)", ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartServer($IF0); vConnect($IF0); vLogHTML('================ Main Test ================='); vSend($IF0, sctp_chunk_asconf_unknown_param); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_asconf_ack_err); if($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_asconf_ack_err) { vLogHTML('Cannot receive SCTP CHUNK_ASCONF_ACK
'); vSend($IF0, sctp_chunk_abort_snd); vLogHTML('NG'); exit $V6evalTool::exitFail; } vSendMsg($IF0); vClose($IF0); vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME AsconfWithUnkownParam.seq - ASCONF chunk is received with unrecognized parameter which does not understand =head1 PURPOSE To check if ASCONF chunk is received with unrecognized parameter which does not understand, the receiver MUST send an Error Cause TLV with the error cause set to 'Unrecognized Parameters'. =head1 SYNOPSIS =begin html
  ./AsconfWithUnkownParam.seq [-tooloption ...] -pkt ./AsconfWithUnkownParam.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 date in endpoint A such that ASCONF chunk with unrecognized parameter for any ASCONF is sent to endpoint B. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (ESTABLISHED) (ESTABLISHED) ASCONF ----------------> (Unrecognized Parameter for any ASCONF) <----------------- ASCONF-ACK (Unrecognized Parameters Error) TEST DESCRIPTION: 1. Send ASCONF chunk from endpoint A to B with unrecognized parameter for any ASCONF. 2. Check A: ASCONF-ACK with Unrecognized Parameters error should be received at endpoint A. =head1 NOTE None =head1 REFERENCE RFC 5061 5.2. Upon Reception of an ASCONF Chunk E4) When the Sequence Number matches the next one expected, process the ASCONF as described below and after processing the ASCONF Chunk, append an ASCONF-ACK Chunk to the response packet and cache a copy of it (in the event it later needs to be retransmitted). V1) Process the TLVs contained within the Chunk performing the appropriate actions as indicated by each TLV type. The TLVs MUST be processed in order within the Chunk. For example, if the sender puts 3 TLVs in one chunk, the first TLV (the one closest to the Chunk Header) in the Chunk MUST be processed first. The next TLV in the chunk (the middle one) MUST be processed second and finally, the last TLV in the Chunk MUST be processed last. =begin html
         V2)  In processing the chunk, the receiver should build a
              response message with the appropriate error TLVs, as
              specified in the Parameter type bits, for any ASCONF
              Parameter it does not understand.  To indicate an
              unrecognized parameter, Cause Type 8 should be used as
              defined in the ERROR in Section 3.3.10.8, [RFC4960].  The
              endpoint may also use the response to carry rejections for
              other reasons, such as resource shortages, etc., using the
              Error Cause TLV and an appropriate error condition.
=end html