#!/usr/bin/perl # # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation, # IPA (Information-technology Promotion Agency, Japan). # 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. However, using this software for the # purpose of testing or evaluating any products including merchantable # products may be permitted without any notification to the copyrighters. # # # # 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/spec/TC_NonZeroToHost.seq,v 1.22 2003/04/23 10:50:04 ozoe Exp $ # ###################################################################### BEGIN { $V6evalTool::TestVersion = '$Name: REL_2_1_2 $'; } use V6evalTool; %pktdesc = ( echo_request => 'Send Echo Request (Non-Zero Traffic Class)', echo_reply => 'Recv Echo Reply (Zero Traffic Class)', echo_reply_fl => 'Recv Echo Reply (Non-Zero Traffic Class)', ns => 'Recv Neighbor Solicitation', na => 'Send Neighbor Advertisement', ); $IF = Link0; vCapture($IF); vSend($IF, echo_request); %ret = vRecv($IF, 5, 0, 0, ns, echo_reply_tc, echo_reply); if ($ret{status} != 0) { vLogHTML('NG'); exit $V6evalTool::exitFail; } if ($ret{recvFrame} eq 'ns') { vSend($IF, na); %ret = vRecv($IF, 5, 0, 0, echo_reply_tc, echo_reply); if ($ret{status} != 0) { vLogHTML('NG'); exit $V6evalTool::exitFail; } } if ($ret{recvFrame} eq 'echo_reply') { vLogHTML('OK'); exit $V6evalTool::exitPass; } if ($ret{recvFrame} eq 'echo_reply_tc') { vLogHTML('OK'); exit $V6evalTool::exitPass; } vLogHTML('NG'); exit $V6evalTool::exitFail; ###################################################################### __END__ =head1 NAME TC_NonZeroToHost - check Traffic Class Non-Zero to Host =head1 TARGET Host and Router =head1 SYNOPSIS =begin html
  TC_NonZeroToHost.seq [-tooloption ...] -pkt TC_NonZeroToHost.def
    -tooloption : v6eval tool option
=end html =head1 INITIALIZATION None =head1 TEST PROCEDURE Tester Target | | |-------------------------->| | Echo Request | | | | | |<--------------------------| | Neighbor Solicitation | | | | | |-------------------------->| | Neighbor Advertisement | | | | | |<--------------------------| | Echo Reply | | | | | v v 1. Send Echo Request 2. Wait Echo Reply or NS 3. If NS received then send NA, and wait Echo Reply again 4. Receive Echo Reply Echo Request Data is: IPv6 Header Version = 6 Traffic Class = 0x12 (8 bit) FlowLabel = 0 PayloadLength = 16 NextHeader = 58 (ICMP) SourceAddress = Tester Link Local Address DestinationAddress = Target Link Local Address ICMP Echo Request Type = 128 (Echo Request) Code = 0 Checksum = (auto) Identifier = 0xffff SequenceNumber = 1 PayloadData = {1,2,3,4,5,6,7,8} =head1 JUDGMENT PASS: Echo Reply Received IPv6 Header Version = 6 Traffic Class = 0 FlowLabel = 0 PayloadLength = 16 NextHeader = 58 (ICMP) SourceAddress = Target Link Local Address Destination Address = Tester Link Local Address ICMP Echo Reply Type = 129 (Echo Reply) Code = 0 Checksum = (auto) Identifier = 0xffff (same as Echo Request) SequenceNumber = 1 (same as Echo Request) PayloadData = {1,2,3,4,5,6,7,8} (same as Echo Request) WARN: Echo Reply Received IPv6 Header Version = 6 Traffic Class = 0x12 (8 bit) FlowLabel = 0 PayloadLength = 16 NextHeader = 58 (ICMP) SourceAddress = Target Link Local Address Destination Address = Tester Link Local Address ICMP Echo Reply Type = 129 (Echo Reply) Code = 0 Checksum = (auto) Identifier = 0xffff (same as Echo Request) SequenceNumber = 1 (same as Echo Request) PayloadData = {1,2,3,4,5,6,7,8} (same as Echo Request) =head1 REFERENCE RFC2460 3. IPv6 Header Format Traffic Class 8-bit traffic class field. See section 7. 7. Traffic Classes The 8-bit Traffic Class field in the IPv6 header is available for use by originating nodes and/or forwarding routers to identify and distinguish between different classes or priorities of IPv6 packets. At the point in time at which this specification is being written, there are a number of experiments underway in the use of the IPv4 Type of Service and/or Precedence bits to provide various forms of "differentiated service" for IP packets, other than through the use of explicit flow set-up. The Traffic Class field in the IPv6 header is intended to allow similar functionality to be supported in IPv6. It is hoped that those experiments will eventually lead to agreement on what sorts of traffic classifications are most useful for IP packets. Detailed definitions of the syntax and semantics of all or some of the IPv6 Traffic Class bits, whether experimental or intended for eventual standardization, are to be provided in separate documents. The following general requirements apply to the Traffic Class field: o The service interface to the IPv6 service within a node must provide a means for an upper-layer protocol to supply the value of the Traffic Class bits in packets originated by that upper- layer protocol. The default value must be zero for all 8 bits. o Nodes that support a specific (experimental or eventual standard) use of some or all of the Traffic Class bits are permitted to change the value of those bits in packets that they originate, forward, or receive, as required for that specific use. Nodes should ignore and leave unchanged any bits of the Traffic Class field for which they do not support a specific use. o An upper-layer protocol must not assume that the value of the Traffic Class bits in a received packet are the same as the value sent by the packet's source. =head1 SEE ALSO perldoc V6evalTool =cut