#!/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_cookie_ack_bad_tag => "Send SCTP CHUNK_COOKIE_ACK (with invalid Verification Tag)", ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartClient($IF0); vListen($IF0); vLogHTML('================ Main Test ================='); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_cookie_echo_rcv); if($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_cookie_echo_rcv) { vLogHTML('Cannot receive SCTP CHUNK_COOKIE_ECHO
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } vSend($IF0, sctp_chunk_cookie_ack_bad_tag); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_cookie_echo_rcv); if($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_cookie_echo_rcv) { vLogHTML('Cannot receive SCTP CHUNK_COOKIE_ECHO
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } vSend($IF0, sctp_chunk_cookie_ack_snd); vRecvMsg($IF0); vShutdown($IF0); vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME CookieAckWithBadTag.seq - COOKIE-ACK chunk is received with invalid Verification Tag =head1 PURPOSE To check that if COOKIE-ACK chunk is received with invalid Verification Tag, the endpoint should silently discard the packet. =head1 SYNOPSIS =begin html
  ./CookieAckWithBadTag.seq [-tooloption ...] -pkt ./CookieAckWithBadTag.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 an B. Arrange the data in endpoint A such that COOKIE-ACK message with a invalid verification tag is sent in response to COOKIE-ECHO. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (CLOSED) (CLOSED) <----------------- COOKIE-ECHO COOKIE-ACK -----------------> Silently discard (with invalid Verification Tag) <----------------- COOKIE-ECHO TEST DESCRIPTION: 1. Attempt to initiate an association from endpoint A to B. Send COOKIE-ACK message (in response to COOKIE-ECHO) with verification tag value different from received in COOKIE-ECHO. Record the message sequence using a signal emulator. 2. Check A: COOKIE-ACK message is silently discarded. =head1 NOTE None =head1 REFERENCE RFC 4960 8.5. Verification Tag The Verification Tag rules defined in this section apply when sending or receiving SCTP packets that do not contain an INIT, SHUTDOWN COMPLETE, COOKIE ECHO (see Section 5.1), ABORT, or SHUTDOWN ACK chunk. The rules for sending and receiving SCTP packets containing one of these chunk types are discussed separately in Section 8.5.1. When sending an SCTP packet, the endpoint MUST fill in the Verification Tag field of the outbound packet with the tag value in the Initiate Tag parameter of the INIT or INIT ACK received from its peer. =begin html
    When receiving an SCTP packet, the endpoint MUST ensure that the
    value in the Verification Tag field of the received SCTP packet
    matches its own tag.  If the received Verification Tag value does not
    match the receiver's own tag value, the receiver shall silently
    discard the packet and shall not process it any further except for
    those cases listed in Section 8.5.1 below.
=end html