#!/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_add_addr => "Recv SCTP CHUNK_ASCONF (Add IP Address)", sctp_chunk_asconf_ack_bund => "Send SCTP CHUNK_ASCONF_ACK (Bunding with ASCONF_ACK)", sctp_chunk_abort_bad_seq => "Recv SCTP CHUNK_ABORT (Illegal ASCONF-ACK)", ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartInteractiveServer($IF0, "recv", "add=$SCTP::CONF{'SCTP_NUT_NET1_ADDR'}", "recv"); vConnect($IF0); vLogHTML('================ Main Test ================='); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_asconf_add_addr); if ($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_asconf_add_addr) { vLogHTML('Cannot receive SCTP CHUNK_ASCONF
'); vSend($IF0, sctp_chunk_abort_snd); vLogHTML('NG'); exit $V6evalTool::exitFail; } sctpFetchAsconfField(\%ret); vSend($IF0, sctp_chunk_asconf_ack_bund); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_abort_bad_seq); if ($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_abort_bad_seq) { vLogHTML('Cannot receive SCTP CHUNK_ABORT
'); vSend($IF0, sctp_chunk_abort_snd); vLogHTML('NG'); exit $V6evalTool::exitFail; } vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME BundledAsconfAckChunks.seq - ASCONF-ACK chunk is received bundled with other ASCONF-ACK chunk =head1 PURPOSE To check that if ASCONF-ACK chunk is received bundled with other ASCONF-ACK chunk then the endpoint should process the next ASCONF-ACK chunk after processing the first ASCONF-ACK chunk. =head1 SYNOPSIS =begin html
  ./BundledAsconfAckChunks.seq [-tooloption ...] -pkt ./BundledAsconfAckChunks.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 B such that ASCONF chunk with Add IP Address Parameter is sent to endpoint A. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (ESTABLISHED) (ESTABLISHED) <----- Asconf <----------------- ASCONF ASCONF-ACK -----------------> (Bunding with illegal ASCONF-ACK) <----------------- ABORT TEST DESCRIPTION: 1. Sending ASCONF message with Delete IP Address Parameter from endpoint B to A. Record the message sequence using a signal emulator. 2. Send ASCONF-ACK message bundled with illegal ASCONF-ACK from endpoint A to B. 3. Check A: Endpoint B process the next ASCONF-ACK chunk after processing the first ASCONF-ACK chunk and ABORT chunk should be received to response the illegal ASCONF-ACK chunk at endpoint A. =head1 NOTE None =head1 REFERENCE RFC 5061 5.1.1. Congestion Control of ASCONF Chunks In defining the ASCONF Chunk transfer procedures, it is essential that these transfers MUST NOT cause congestion within the network. To achieve this, we place these restrictions on the transfer of ASCONF Chunks: C2) An ASCONF Chunk may be bundled with any other chunk type including other ASCONF Chunks. If bundled with other ASCONF Chunks, the chunks MUST appear in sequential order with respect to their Sequence Number. =begin html
    C3)  An ASCONF-ACK Chunk may be bundled with any other chunk type
         including other ASCONF-ACK Chunks.  If bundled with other
         ASCONF-ACK Chunks, the chunks MUST appear in sequential order
         with respect to their Sequence Number.
=end html