#!/usr/bin/perl # # $Name: V6LC_4_0_5 $ # # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # 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. # # $Id: IP_NH_Unrecognized.seq,v 1.7 2008/07/31 02:40:32 hide Exp $ # ###################################################################### BEGIN { $V6evalTool::TestVersion = '$Name: V6LC_4_0_5 $'; } use V6evalTool; use CommonSPEC; $pktdesc{'packet_ur'} = 'Send packet with Unrecognized Next Header in IPv6 Header'; $pktdesc{'icmperr'} = 'Recv Parameter Problem (unrecognized Next Header type encountered)'; $pktdesc{'echo_request'} = 'Send Echo Request'; $pktdesc{'echo_reply'} = 'Recv Echo Reply'; $min = 138; $max = 252; ###################################################################### $endStatus = $V6evalTool::exitPass; $IF = 'Link0'; vCapture($IF); ###################################################################### vLogHTML(' -- Test --
'); for ($step = $min; $step <= $max; $step++) { vLogHTML("Next Header = $step
"); vCPP("-DNEXTHEADER=$step"); vSend($IF, 'packet_ur'); %ret = nd_vRecv_EN($IF, $CommonSPEC::wait_reply, 0, 0, 'icmperr'); if ($ret{'status'} != 0) { vLogHTML('Cannot receive ICMPv6 Parameter Promlem Message
'); vLogHTML('NG
'); $endStatus = $V6evalTool::exitFail; last; } vClear($IF); vSend($IF, 'echo_request'); %ret = nd_vRecv_EN($IF, $CommonSPEC::wait_reply, 0, 0, 'echo_reply'); if ($ret{'status'} == 0) { vLogHTML('Receive Echo Reply
'); vLogHTML('OK
'); } else { vLogHTML('Cannot receive Echo Reply
'); vLogHTML('NG'); $endStatus = $V6evalTool::exitFail; last; } vClear($IF); vSleep(2); } #----- end test $ret = cleanup($IF); vStop($IF); if ($ret == $CommonSPEC::Success) { exit($endStatus); } else { exit($V6evalTool::exitFatal); } ###################################################################### __END__ =head1 NAME IP_NH_Unrecognized - Unrecognized Next Header in IPv6 Header (Multiple Values) =head1 TARGET Host and Router =head1 SYNOPSIS =begin html
    IP_NH_Unrecognized.seq [-tooloption ...] -pkt IP_NH_Unrecognized.def
        -tooloption: v6eval tool option
    
=end html =head1 INITIALIZATION None =head1 TEST PROCEDURE Verify that a node generates the appropriate response to an unrecognized Next Header field. TN NUT | | |-------------------------->| | Echo Request (Invalid) | | | | | |-------------------------->| | Echo Request (Valid) | | | | | |<--------------------------| | Echo Reply | | | | | v v 1. TN transmits an Echo Request which has an IPv6 header with a Next Header field of 138. 2. TN transmits a valid Echo Request to the NUT. 3. Observe the packets transmitted by the NUT. 4. Repeat Step 1 to 3 with all unrecognized Next Header values between 139 and 252 in Step 1. Unrecognized Next Header packet is: IPv6 Header Version = 6 Traffic Class = 0 FlowLabel = 0 PayloadLength = 16 NextHeader = 138 - 252 (be increased for each packets.) HopLimit = 255 SourceAddress = TN Link Local Address DestinationAddress = NUT Link Local Address =head1 JUDGEMENT PASS : The NUT should send an ICMPv6 Parameter Problem message to TN1. The ICMPv6 Code field should be 1(unrecognized Next Header type encountered). The ICMPv6 Pointer field should be 0x06(offset of the Next Header field). The NUT must respond the the Echo Request from TN1 in step 2. =head1 CLEANUP Common Test Cleanup =head1 REFERENCE =begin html
RFC 2460 - IPv6 Specification
=head1 SEE ALSO perldoc V6evalTool =cut