#!/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_err => "Send SCTP CHUNK_ASCONF_ACK (Out of Resource)", ); $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_err); %ret = vWarpRecv($IF0, 10, 0, 0, sctp_chunk_abort_rcv); if ($ret{status} != 0 || $ret{recvFrame} ne sctp_chunk_abort_rcv) { 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 AsconfAckWithAddNoMem.seq - ASCONF-ACK chunk is received with Out of Resource Error Cause indicating Add IP Address operation failed =head1 PURPOSE To check that if ASCONF-ACK chunk is received with Out of Resource Error Cause indicating Add IP Address operation failed then the endpoint should either ABORT the association or not consider the address part of the association. =head1 SYNOPSIS =begin html
  ./AsconfAckWithAddNoMem.seq [-tooloption ...] -pkt ./AsconfAckWithAddNoMem.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 (Add IP Address) ASCONF-ACK -----------------> (Out of Resource Error Cause) <----------------- ABORT TEST DESCRIPTION: 1. Sending ASCONF message with Add IP Address Parameter from endpoint B to A. Record the message sequence using a signal emulator. 2. Send ASCONF-ACK message with Out of Resource Error Cause indicating Add IP Address operation failed from endpoint A to B with Add IP Address. 3. Check A: Endpoint B should either ABORT the association or not consider the address part of the association. =head1 NOTE None =head1 REFERENCE RFC 5061 5.3. General Rules for Address Manipulation =begin html
    F10) If an endpoint receives an 'Out of Resource' error in response
         to its request to ADD an IP address to an association, it must
         either ABORT the association or not consider the address part of
         the association.  In other words, if the endpoint does not ABORT
         the association, it must consider the add attempt failed and NOT
         use this address since its peer will treat SCTP packets destined
         to the address as Out Of The Blue packets.
=end html