#!/usr/bin/perl # # Copyright (C) 1999,2000 Yokogawa Electric Corporation and # YDC Corporation. # All rights reserved. # # Redistribution and use of this software in source and binary # forms, with or without modification, are permitted provided that # the following conditions and disclaimer are agreed and accepted # by the user: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with # the distribution. # # 3. Neither the names of the copyrighters, the name of the project # which is related to this software (hereinafter referred to as # "project") nor the names of the contributors may be used to # endorse or promote products derived from this software without # specific prior written permission. # # 4. No merchantable use may be permitted without prior written # notification to the copyrighters. # # 5. The copyrighters, the project and the contributors may prohibit # the use of this software at any time. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING # BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # $Id: icmpv4.seq,v 1.1.1.1 2000/10/31 22:39:56 sekiya Exp $ ######################################################################## BEGIN { $V6evalTool::TestVersion = '$Name: $'; } use V6evalTool; use tunnel; checkNUT(router); $IF=$tunnel::IF_ID_0; $IF1=$tunnel::IF_ID_1; $Decision_hop_limit="WARN"; $Decision_unreachable="WARN"; vCapture($IF); vCapture($IF1); $ret=config_another_tunnel($IF1); if( $ret !=0) { vLogHTML("

NUT can not config another tunnel !!

"); goto error; }else { vLogHTML("

--- TN can another tunnel ---

"); } $ret=makeNCE_TN_LLA(); if( $ret !=0) { vLogHTML("

NUT can not be initialized !!

"); goto error; }else { vLogHTML("

--- TN can make TN's link local address NCE in TN ---

"); } $ret=makeNCE_TN_GA(); if( $ret !=0) { vLogHTML("

NUT can not be initialized !!

"); goto error; }else { vLogHTML("

--- TN can make TN's global address NCE in TN ---

"); } $ret=makeARPTable_LINK1(); if( $ret !=0) { vLogHTML("

NUT can not convert v4 address to ethernet address !!

"); goto error; }else { vLogHTML("

--- NUT can convert v4 address to ethernet address ---

"); } vSend($IF, v6_echo_request_LINK0_tn2nut_OFFLINK); %ret=vRecv($IF1,5,0,0,v6overv4_echo_request_LINK1_nut2tn); if( $ret{status} !=0) { vLogHTML("

TN can not receive Echo Reply from NUT


"); goto error; } # # Hop limit exceeded - ICMPv6 Time Exceeded Message - # vSend($IF1, icmpv4_hop_limit_LINK1_tn2nut); %ret=vRecv($IF,5,0,0,icmpv6_hop_limit_LINK0_nut2tn); if( $ret{status} !=0) { vLogHTML("

NUT do not send ICMPv6 Time Exceeded (hop limit exceeded)

"); }else { vLogHTML("

NUT send ICMPv6 Time Exceeded (hop limit exceeded)

"); $Decision_hop_limit="PASS"; } # # Address unreachable - ICMPv6 Destination Unreachable Message - # vSend($IF1, icmpv4_unreachable_LINI1_tn2nut); %ret=vRecv($IF,5,0,0,icmpv6_unreachable_LINK0_nut2tn); if( $ret{status} !=0) { vLogHTML("

NUT do not send ICMPv6 Destination Unreachable (address unreachable)

"); }else { vLogHTML("

NUT send ICMPv6 Destination Unreachable (address unreachable)

"); $Decision_unreachable="PASS"; } vLogHTML("
packetdecision
hoplimit$Decision_hop_limit
unreachable$Decision_unreachable

"); if($Decision_unreachable eq "WARN" || $Decision_hop_limit eq "WARN") { vLogHTML("

WARN

"); exit $V6evalTool::exitWarn; }else { vLogHTML("

OK

"); exit $V6evalTool::exitPass; } error: vLogHTML("

NG

"); exit $V6evalTool::exitFail; ######################################################################## __END__ =head1 NAME icmpv4.seq - Verify that node send a ICMPv6 error message when receive a ICMPv4 error message =head1 TARGET Router =head1 SYNOPSIS icmpv4.seq [-tooloption ...] -p icmpv4.def =head1 INITIALIZATION =begin html
	Before this test starts, run initialize.seq.
=end html =head1 TEST PROCEDURE This test verifies that NUT received valid ICMPv6 Error Message in response to receive ICMPv4 Error Message generated by IPv4 tunneling packet Network Topology Link0 -------------------------- | | TN NUT | | -------------------------- Link1 TN -- (Link0) -- NUT TN -- (Link1) -- NUT --------------------- ------------------------ 0. ===================> ICMPv6 Echo Request (#1) IPv6 Header src address : TN LINK0 IPv6 global address dst address : Off-link IPv6 global address <=================== v6 over v4 packet (#2) Outer Header (IPv4) src address : NUT Link1 IPv4 address dst address : Off-link IPv4 address Inner Header (IPv6) src address : TN LINK0 IPv6 global address dst address : Off-link IPv6 global address -- hop limit -- 1. ===================> ICMPv4 Time Exceed message IPv4 Header src address : Off-link IPv4 address dst address : NUT Link1 IPv4 address ICMPv4 code : 0 payload : v6 over v4 packet (#2) 2. << JUDGMENT >> <=================== ICMPv6 Time Exceed message IPv6 Header src address : NUT LINK0 IPv6 global address dst address : TN LINK0 IPv6 global address ICMPv6 code : 0 payload : v6 packet (#1) -- address unreachable -- 1. ===================> ICMPv4 Destination Unreachable message IPv4 Header src address : Off-link IPv4 address dst address : NUT Link1 IPv4 address ICMPv4 code : 1 payload : v6 over v4 packet (#2) 2. << JUDGMENT >> <=================== ICMPv6 Destination Unreachable message IPv6 Header src address : NUT LINK0 IPv6 global address dst address : TN LINK0 IPv6 global address ICMPv6 code : 3 payload : v6 packet (#1) =head1 JUDGMENT << PASS >> NUT received ICMPv6 error messages << FAIL >> NUT did not receive ICMPv6 error messages =head1 SEE ALSO perldoc V6evalTool =cut