#!/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_error => "Recv SCTP CHUNK_ERROR (Stale Cookie Error)", ); $IF0 = Link0; vCapture($IF0); sctpCheckEnv($IF0); sctpStartServer($IF0); vLogHTML('================ Main Test ================='); vSend($IF0, sctp_chunk_init_snd); %ret = vWarpRecv3($IF0, 10, 0, 0, sctp_chunk_init_ack_rcv); if($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_init_ack_rcv) { vLogHTML('Cannot receive SCTP CHUNK_INIT_ACK
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } sctpFetchInitField(\%ret); vSleep($SCTP::CONF{COOKIE_LIFE} + 5); vSend($IF0, sctp_chunk_cookie_echo_snd); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_error); if($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_error) { vLogHTML('Cannot receive SCTP CHUNK_ERROR
'); vLogHTML('NG'); exit $V6evalTool::exitFail; } vSend($IF0, sctp_chunk_abort_snd); vLogHTML(OK); exit $V6evalTool::exitPass; ###################################################################### __END__ =head1 NAME GEN_StaleCookieError.seq - Generation of error cause Stale Cookie Error =head1 PURPOSE To check that if a COOKIE-ECHO chunk is received with state cookie expired, the endpoint should send ERROR message with cause Stale Cookie Error. =head1 SYNOPSIS =begin html
  ./GEN_StaleCookieError.seq [-tooloption ...] -pkt ./GEN_StaleCookieError.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 data in endpoint A such that COOKIE-ECHO chunk with stale cookie expired is sent to endpoint B. =head1 TEST PROCEDURE Endpoint A Endpoint B ULP (COOKIE-ECHOED) (CLOSED) COOKIE-ECHO -----------------> (with State Cookie expired) <----------------- ERROR (Stale Cookie Error) TEST DESCRIPTION: 1. Send COOKIE-ECHO chunk from endpoint A to B with stale cookie expired. 2. Check A: ERROR chunk should be received at endpoint A. 3. Check B: Error cause in ERROR chunk is set to "Stale Cookie Error". =head1 NOTE None =head1 REFERENCE RFC 4960 3.3.10.3. Stale Cookie Error (3) Cause of error -------------- Stale Cookie Error: Indicates the receipt of a valid State Cookie that has expired. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Cause Code=3 | Cause Length=8 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Measure of Staleness (usec.) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Measure of Staleness: 32 bits (unsigned integer) This field contains the difference, in microseconds, between the current time and the time the State Cookie expired. The sender of this error cause MAY choose to report how long past expiration the State Cookie is by including a non-zero value in the Measure of Staleness field. If the sender does not wish to provide this information, it should set the Measure of Staleness field to the value of zero.