#!/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_bad_tag => "Send SCTP CHUNK_INIT (With Verification Tag not set to 0)", sctp_chunk_abort_bad_tag => "Recv SCTP CHUNK_ABORT", ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartServer($IF0); vLogHTML('================ Main Test ================='); vSend($IF0, sctp_chunk_init_bad_tag); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_abort_bad_tag); if($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_abort_bad_tag) { vLogHTML('Cannot receive SCTP CHUNK_ABORT
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } vConnect($IF0); vSendMsg($IF0); vClose($IF0); vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME InitWithBadTag.seq - INIT chunk is received with the Verification Tag not set to 0 =head1 PURPOSE To check that if INIT chunk is received with the Verification Tag not set to 0, the enpoint should responds it with ABORT message. =head1 SYNOPSIS =begin html
  ./InitWithBadTag.seq [-tooloption ...] -pkt ./InitWithBadTag.def
    -tooloption : v6eval tool option
  See Also: ../common/STD_PKT_COMMON.def
            ../common/SCTP_COMMON.def
=end html =head1 PRE-TEST CONDITION Association not established between endpoint A and B. Arrange the data in endpoint A such that an INIT message is sent to endpoint B with Verification Tag not set to 0 in it. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (ESTABLISHED) (ESTABLISHED) INIT -----------------> (with Verification Tag not set to 0) <----------------- ABORT TEST DESCRIPTION: 1. From endpoint A, send INIT message with no zero Verification Tag endpoint B, when there is no association between them. 2. Check A: INIT message will be silently discarded. 3. Check B: State of endpoint B is not disturbed. =head1 NOTE None =head1 REFERENCE RFC 4960 8.4. Handle "Out of the Blue" Packets =begin html
    3)  If the packet contains an INIT chunk with a Verification Tag set
        to '0', process it as described in Section 5.1.  If, for whatever
        reason, the INIT cannot be processed normally and an ABORT has to
        be sent in response, the Verification Tag of the packet
        containing the ABORT chunk MUST be the Initiate Tag of the
        received INIT chunk, and the T bit of the ABORT chunk has to be
        set to 0, indicating that the Verification Tag is NOT reflected.
=end html 8.5.1. Exceptions in Verification Tag Rules A) Rules for packet carrying INIT: - The sender MUST set the Verification Tag of the packet to 0. - When an endpoint receives an SCTP packet with the Verification Tag set to 0, it should verify that the packet contains only an INIT chunk. Otherwise, the receiver MUST silently discard the packet.