#!/usr/bin/perl # # $Copyright$ # # $Id: HL_ZeroToRouter.seq,v 1.1.1.1 2000/10/31 22:39:21 sekiya Exp $ # ###################################################################### BEGIN { $V6evalTool::TestVersion = '$Name: $'; } use V6evalTool; if ($V6evalTool::NutDef{Type} ne 'router') { vLogHTML("This test is for the router only
"); exit $V6evalTool::exitRouterOnly; } %pktdesc = ( echo_request_to_link0 => 'Send Echo Request to Link0 (Hop Limit 0)', icmp_type3_code0 => 'Recv ICMP Error at Link0 (Time Exceeded, hop limit exceeded in transit)', icmp_type3_code0_link1 => 'Recv ICMP Error at Link1 (Time Exceeded, hop limit exceeded in transit)', ns_from_link0 => 'Recv Neighbor Solicitation from Link0 (Global Address)', na_to_link0 => 'Send Neighbor Advertisement to Link0 (Global Address)', ); $IF0 = Link0; vCapture($IF0); vSend($IF0, echo_request_to_link0); %ret = vRecv($IF0, 5, 0, 0, ns_from_link0, icmp_type3_code0, icmp_type3_code0_link1); if ($ret{status} != 0) { vLogHTML('NG'); exit $V6evalTool::exitFail; } if ($ret{recvFrame} eq 'ns_from_link0') { vSend($IF0, na_to_link0); %ret = vRecv($IF0, 5, 0, 0, icmp_type3_code0, icmp_type3_code0_link1); if ($ret{status} != 0) { vLogHTML('NG'); exit $V6evalTool::exitFail; } } if ($ret{recvFrame} eq 'icmp_type3_code0') { vLogHTML('OK'); exit $V6evalTool::exitPass; } if ($ret{recvFrame} eq 'icmp_type3_code0_link1') { vLogHTML('OK'); exit $V6evalTool::exitPass; } vLogHTML('NG'); exit $V6evalTool::exitFail; ###################################################################### __END__ =head1 NAME HL_ZeroToRouter - check Hop Limit 0 to Router =head1 TARGET Router =head1 SYNOPSIS =begin html
  HL_ZeroToRouter.seq [-tooloption ...] -pkt HL_ZeroToRouter.def
    -tooloption : v6eval tool option
  See also IH_Router.def
=end html =head1 INITIALIZATION None =head1 TEST PROCEDURE Tester Target Tester (Link0) (Link1) | | | |-------------------------->| | | Echo Request to Link0 | | | | (no forwarding) | | | | |<--------------------------| | | Neighbor Solicitation | | | | | |-------------------------->| | | Neighbor Advertisement | | | | | |<--------------------------| | | ICMP Error at Link0 | | | or | | | ICMP Error at Link1 | | | | | v v v 1. Send Echo Request to Link0 2. Wait ICMP Error or NS from Link0 3. If NS received then send NA to Link0, and wait ICMP Error again 4. Receive ICMP Error Echo Request to Link0 Data is: IPv6 Header Version = 6 Traffic Class = 0 FlowLabel = 0 PayloadLength = 16 NextHeader = 58 (ICMP) HopLimit = 0 SourceAddress = Tester Global Address (Link0) DestinationAddress = Tester Global Address (Link1) 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 JUDGEMENT PASS: ICMP Error at Link0 Received IPv6 Header Version = 6 Traffic Class = 0 FlowLabel = 0 PayloadLength = 16 NextHeader = 58 (ICMP) HopLimit = 64 SourceAddress = Target Global Address (Link0) DestinationAddress = Tester Global Address (Link0) ICMP Error Type = 3 (Time Exceeded) Code = 0 (hop limit exceeded in transit) Checksum = (auto) PayloadData = (Echo Request) PASS: ICMP Error at Link1 Received IPv6 Header Version = 6 Traffic Class = 0 FlowLabel = 0 PayloadLength = 16 NextHeader = 58 (ICMP) HopLimit = 64 SourceAddress = Target Global Address (Link1) DestinationAddress = Tester Global Address (Link0) ICMP Error Type = 3 (Time Exceeded) Code = 0 (hop limit exceeded in transit) Checksum = (auto) PayloadData = (Echo Request) =head1 SEE ALSO perldoc V6evalTool =cut