#!/usr/bin/perl # # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # Yokogawa Electric 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. # # $TAHI: ct/icmp.p2/Dst_Unreach_3_Global.seq,v 1.5 2005/04/11 08:58:38 akisada Exp $ ######################################################################## BEGIN { $V6evalTool::TestVersion = '$Name: V6LC_P2_1_4_3 $'; } use V6evalTool; use icmp; $IF=Link0; checkNUT(router); %pktdesc = ( echo_request => 'Send Echo Request', dst_unreach => 'Receive Destination Unreachable (Address Unreach)' ); # # # vLogHTML("Initialization
"); vCapture($IF); $ret = setup(); if ($ret == $icmp::subFail){ goto error; } # # # vLogHTML("Test
"); vSend($IF, echo_request); #%ret = vRecv($IF, $icmp::wait_reply, 0, 0,dst_unreach); %ret = icmp_vRecv($IF, $icmp::wait_reply, 0, 0,dst_unreach); if ($ret{status} != 0) { vLogHTML('TN can not receive ICMPv6 error message from NUT
'); goto error; } elsif ($ret{recvFrame} eq 'dst_unreach') { vLog("TN can receive Echo Reply from NUT"); vLog("OK"); cleanup(); vStop($IF); exit($V6evalTool::exitPass); } else { vLogHTML('TN receive unexpected packets from NUT
'); goto error; } error: vLogHTML('FAIL
'); cleanup(); vStop($IF); exit($V6evalTool::exitFail); ######################################################################## __END__ =head1 NAME Dst_Unreach_3_Global.seq - check ICMPv6 Destination Unreachable code 3 =head1 TARGET Router =head1 SYNOPSIS Dst_Unreach_3_Global.seq [-tooloption ...] -p Dst_Unreach_3_Global.def =head1 NETWORK CONFIGURATION This test is OFF-LINK Network Configuration test. Physical Network configuration --------------------------------------- | | NUT TN Logical Network Configuration TN | ---------------------------------- | NUT | ---------------------------------- | OFFLINKA Host =head1 INITIALIZATION When test stars, configure a default route with TN as the next hop. And states of Neighbor Cache Entry for TN's addresses are reachable. =head1 TEST PROCEDURE This test verifies that NUT sends valid ICMPv6 Destination Unreachable (code 3) in response to a packet which can not be delivered to destination address (e.g. Address Resolution in ND). TN NUT --------------------------- 1. === Echo Request packet ===> src address : TN global address dst address : on-link unreachable address 2. << JUDGEMENT >> <=== ICMPv6 Destination Unreachable === Code is 3 =head1 JUDGEMENT << PASS >> NUT send ICMPv6 Destination Unreachable. << FAIL >> NUT do not send ICMPv6 Destination Unreachable. =cut # =head1 REFERENCE # # RFC2463 # 3.1 Destination Unreachable Message # # 0 1 2 3 # 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ # | Type | Code | Checksum | # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ # | Unused | # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ # | As much of invoking packet | # + as will fit without the ICMPv6 packet + # | exceeding the minimum IPv6 MTU [IPv6] | # # IPv6 Fields: # # =begin html #
#    Destination Address
# Copied from the Source Address field of the invoking # packet. #
# # =end html # # ICMPv6 Fields: # # =begin html #
#    Type           1
# 
# # =end html # # =begin html #
#    Code           0 - no route to destination
#                   1 - communication with destination
#                         administratively prohibited
#                   2 - (not assigned)
#                   3 - address unreachable
#                   4 - port unreachable
# 
# # =end html # # Unused This field is unused for all code values. # It must be initialized to zero by the sender # and ignored by the receiver. # # Description # # A Destination Unreachable message SHOULD be generated by a router, or # by the IPv6 layer in the originating node, in response to a packet # that cannot be delivered to its destination address for reasons other # than congestion. (An ICMPv6 message MUST NOT be generated if a # packet is dropped due to congestion.) # # in the forwarding node's routing table, the Code field is set to 0 # (NOTE: this error can occur only in nodes that do not hold a "default # route" in their routing tables). # # If the reason for the failure to deliver is administrative # prohibition, e.g., a "firewall filter", the Code field is set to 1. # # =begin html #
#    If the reason for the failure to deliver is lack of a matching entry
#    If there is any other reason for the failure to deliver, e.g.,
#    inability to resolve the IPv6 destination address into a
#    corresponding link address, or a link-specific problem of some sort,
#    then the Code field is set to 3.
# 
# # =end html # # A destination node SHOULD send a Destination Unreachable message with # Code 4 in response to a packet for which the transport protocol # (e.g., UDP) has no listener, if that transport protocol has no # alternative means to inform the sender. # =pod =head1 REFERENCE =begin html
RFC 2463 - ICMPv6 (ICMP for IPv6)
=end html =head1 SEE ALSO perldoc V6evalTool =cut