#!/usr/bin/perl # # $Copyright$ # # $Id: FH_MixA1B2A2B1.seq,v 1.1.1.1 2000/10/31 22:39:20 sekiya Exp $ # ###################################################################### BEGIN { $V6evalTool::TestVersion = '$Name: $'; } use V6evalTool; %pktdesc = ( echo_request => 'Send Echo Request (Preparation)', echo_reply => 'Recv Echo Reply', ns => 'Recv Neighbor Solicitation', na => 'Send Neighbor Advertisement', echo_request_A_1st => 'Send Echo Request (1st fragment of packet A)', echo_request_A_2nd => 'Send Echo Request (2nd fragment of packet A)', echo_request_B_1st => 'Send Echo Request (1st fragment of packet B)', echo_request_B_2nd => 'Send Echo Request (2nd fragment of packet B)', echo_reply_A => 'Recv Echo Reply (packet A)', echo_reply_B => 'Recv Echo Reply (packet B)', ); $IF = Link0; vCapture($IF); #----- preparation vLogHTML('Begin Preparation'); vSend($IF, echo_request); %ret = vRecv($IF, 5, 0, 0, ns, 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); if ($ret{status} != 0) { vLogHTML('NG'); exit $V6evalTool::exitFail; } } if ($ret{recvFrame} ne 'echo_reply') { vLogHTML('NG'); exit $V6evalTool::exitFail; } vSend($IF, na); vLogHTML('End Preparation'); #----- main test vSend($IF, echo_request_A_1st); vSend($IF, echo_request_B_2nd); vSend($IF, echo_request_A_2nd); vSend($IF, echo_request_B_1st); %ret = vRecv($IF, 5, 0, 0, echo_reply_A, echo_reply_B); if ($ret{status} == 0 && $ret{recvFrame} eq 'echo_reply_A') { %ret = vRecv($IF, 5, 0, 0, echo_reply_B); if ($ret{status} == 0 && $ret{recvFrame} eq 'echo_reply_B') { vLogHTML('OK'); exit $V6evalTool::exitPass; } vLogHTML('NG'); vSleep(65, "Discard Unexpected 'ICMP Time Exceeded' message (60+5 sec)"); exit $V6evalTool::exitFail; } if ($ret{status} == 0 && $ret{recvFrame} eq 'echo_reply_B') { %ret = vRecv($IF, 5, 0, 0, echo_reply_A); if ($ret{status} == 0 && $ret{recvFrame} eq 'echo_reply_A') { vLogHTML('OK'); exit $V6evalTool::exitPass; } vLogHTML('NG'); vSleep(65, "Discard Unexpected 'ICMP Time Exceeded' message (60+5 sec)"); exit $V6evalTool::exitFail; } vLogHTML('NG'); vSleep(65, "Discard Unexpected 'ICMP Time Exceeded' message (60+5 sec)"); exit $V6evalTool::exitFail; ###################################################################### __END__ =head1 NAME FH_MixA1B2A2B1 - check Mixed 2 Fragment Reassembly (A1->B2->A2->B1) =head1 TARGET Host and Router =head1 SYNOPSIS =begin html
FH_MixA1B2A2B1.seq [-tooloption ...] -pkt Fragment.def
-tooloption : v6eval tool option
=end html
=head1 INITIALIZATION
1. Ping to Target (create Neighbor Cache Entries, if not exist)
2. Override Neighbor Cache Entries
=head1 TEST PROCEDURE
Tester Target
| |
|-------------------------->|
| Echo Request (1st A) |
| |
| |
|-------------------------->|
| Echo Request (2nd B) |
| |
| |
|-------------------------->|
| Echo Request (2nd A) |
| |
| |
|-------------------------->|
| Echo Request (1st B) |
| |
| |
|<--------------------------|
| Echo Reply (A or B) |
| |
| |
|<--------------------------|
| Echo Reply (rest) |
| |
| |
v v
1. Send Echo Request (1st fragment of packet A)
2. Send Echo Request (2nd fragment of packet B)
3. Send Echo Request (2nd fragment of packet A)
4. Send Echo Request (1st fragment of packet B)
5. Receive Echo Reply (packet A)
6. Receive Echo Reply (packet B)
=head1 JUDGEMENT
PASS: Both Echo Reply Received
=head1 SEE ALSO
perldoc V6evalTool
=cut