#!/usr/bin/perl # # $Copyright$ # # $Id: ADDRSTATE_pkt_receiving.seq,v 1.1.1.1 2000/10/31 22:39:23 sekiya Exp $ ######################################################################## BEGIN { $V6evalTool::TestVersion = '$Name: $ '; } use V6evalTool; use DAD; #----- get sequence arguments $howto_initNUT="none"; $send = "ok"; foreach (@ARGV) { /^addrconf=(\S+)/ && do {$DAD::howto_addrconf=$1; # How to configure address of NUT? next; }; # sample: boot, ra, manual+_GLOBAL0A0N_UCAST /^init=(\S+)/ && do {$howto_initNUT=$1; # How to initialize NUT? next; }; # sample: none, DADSuccess_boot, DADFail_boot /^sd=(\S+)/ && do {$seqdebugopt=$1; # sequence debug options next; }; # sample: qR seqERROR("Unknown sequence option '$_'"); } #----- test condition $IF=Link0; # network interface seqSetDADParam($seqdebugopt); #----- set %pktdesc seqSetPktdesc(); #----- initialize NUT vLog("*** Target initialization phase ***"); seqInitNUT($IF, $howto_initNUT); #----- start Capturing vLog("*** Target testing phase ***"); vCapture($IF); #----- Configure Address on NUT seqConfAddrNUT($IF); #----- wait a DAD NS comming from NUT %ret=seqWaitDADNSfromNUT($IF); #----- if received frame is a DAD NS if( $ret{status} == 0) { vLog("TN received the DAD NS sends from NUT."); #----- wait for NUT to finish DAD vSleep($DAD::RetransTimerSec, "Wait for NUT to finish DAD. ($DAD::RetransTimerSec [sec])"); }elsif( $ret{status} == 1 ) { #----- timeout vLog("TN received no DAD NS sends from NUT. It seems that NUT doesn't perform DAD process."); }else{ #----- error seqERROR(vErrmsg(%ret)); #exit } #----- check if NUT's address is configured #seqWaitNUTbeReady(); vSleep($DAD::RetransTimerSec); if (seqCheckNUTAddrConfigured($IF) eq TRUE) { vLog("The address is configured (valid preferred)."); }else{ vLog("The address is not configured although address must be valid preferred."); seqNG(); } vSleep(35, "Wait for NUT's address state becomes valid deprecated."); if (seqCheckNUTAddrConfigured($IF) eq TRUE) { vLog("The address is configured (valid deprecated)."); }else{ vLog("The address is not configured although address must be valid deprecated."); seqNG(); } vSleep(35, "Wait for NUT's address state becomes invalid."); if (seqCheckNUTAddrConfigured($IF) eq FALSE) { vLog("The address is not configured (invalid)."); seqOK(); }else{ vLog("The address is configured although address must be invalid."); seqNG(); } #end ######################################################################## __END__ =head1 NAME ADDRSTATE_pkt_receiving - check packet receiving and address lifetime expiry =head1 TARGET Host =head1 SYNOPSIS ADDRSTATE_pkt_receiving.seq [-tooloption ...] -pkt [addrconf=] [init=,...] [sd=] -tooloption : v6eval tool option : packet definition file (v6eval tool option) : how to configure address on NUT; boot/manual+/ra : how to initialize NUT; DADSuccess_boot/DADFail_boot/ra : debug options =begin html
 detail of v6eval tool option: see perldoc V6evalTool.pm, perldoc V6evalRemote.pm
 detail of parameters: see Test sequence for IPv6 Stateless Address Autoconfiguration.
=end html =head1 INITIALIZATION =begin html
 detail of Initialization: see Test sequence for IPv6 Stateless Address Autoconfiguration.
=end html =head1 TEST PROCEDURE The following test is prepared in this test package. See INDEX file. B Packet receiving and Global address lifetime expiry (valid preferred, valid deprecated, invalid) Packet receiving and Site-local address lifetime expiry (valid preferred, valid deprecated, invalid) B TN(or X) NUT ------------------------------ Initialize NUT (see ...) Send Unsolicited RA to configure address of NUT (sequence parameter addrconf=ra) ==== Action #1: Unsolicited RA ===> name: usolra src: TN's Link-local address dst: allnodes multicast SLL option exists Prefix option PrefixLength: 64 LFlag: 1 AFlag: 1 ValidLifetime: 60 PreferredLifetime: 30 Prefix: TN wait the DAD NS sends from NUT. (This judgement is informational only.) <=== Judgement #1: DAD NS ==== name: dadns_from_NUT src: ::0 dst: solnode[TargetAddress] TargetAddress: NUT's tentative + interface-id Wait for NUT to finish DAD. (sleep $RetransTimerSec=1 [sec]) Check if NUT's address is configured. ==== Action #2: DAD NS ====> name: chkconf_dadns_to_NUT src: ::0 dst: solnode[TargetAddress] TargetAddress: NUT's + interface-id DAD NA come from NUT because NUT's address is configured (valid preferred). <=== Judgement #2: DAD NA come==== name: chkconf_dadna_from_NUT (or chkconf_dadna_from_NUT_rf1 if NUT is a Router) src: NUT's Link-local address or TargetAddress dst: allnodes multicast TargetAddress: NUT's + interface-id OFlag: 1 RFlag: 0 ( if NUT is a Router then 1) Wait for NUT's address state becomes valid deprecated. (sleep 35[sec]) Check if NUT's address is configured. ==== Action #3: DAD NS ====> name: chkconf_dadns_to_NUT src: ::0 dst: solnode[TargetAddress] TargetAddress: NUT's + interface-id DAD NA come from NUT because NUT's address is configured (valid deprecated). <=== Judgement #3: DAD NA come==== name: chkconf_dadna_from_NUT (or chkconf_dadna_from_NUT_rf1 if NUT is a Router) src: NUT's Link-local address or TargetAddress dst: allnodes multicast TargetAddress: NUT's + interface-id OFlag: 1 RFlag: 0 ( if NUT is a Router then 1) Wait for NUT's address state becomes invalid. (sleep 35[sec]) Check if NUT's address is configured. ==== Action #4: DAD NS ====> name: chkconf_dadns_to_NUT src: ::0 dst: solnode[TargetAddress] TargetAddress: NUT's + interface-id DAD NA does not come from NUT because NUT's address is not configured (invalid). <=== Judgement #4: DAD NA does not come==== name: chkconf_dadna_from_NUT (or chkconf_dadna_from_NUT_rf1 if NUT is a Router) src: NUT's Link-local address or TargetAddress dst: allnodes multicast TargetAddress: NUT's + interface-id OFlag: 1 RFlag: 0 ( if NUT is a Router then 1) =head1 JUDGEMENT B B< Packet receiving and Global address lifetime expiry (valid preferred, valid deprecated, invalid) -pkt GLOBAL0_valRA_vlt60plt30.def addrconf=ra init=DADSuccess_boot> TN(or X) NUT ------------------------------ Send Unsolicited RA to configure address of NUT (sequence parameter addrconf=ra) ==== Action #1: Unsolicited RA ===> name: usolra Prefix option ValidLifetime: 60 PreferredLifetime: 30 Prefix: _GLOBAL0_UCAST_PRFX TN wait the DAD NS sends from NUT. (This judgement is informational only.) <=== Judgement #1: DAD NS ==== name: dadns_from_NUT TargetAddress: NUT's tentative _GLOBAL0_UCAST_PRFX + interface-id Wait for NUT to finish DAD. (sleep $RetransTimerSec=1 [sec]) Check if NUT's address is configured. ==== Action #2: DAD NS ====> name: chkconf_dadns_to_NUT TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id DAD NA come from NUT because NUT's address is configured (valid preferred). <=== Judgement #2: DAD NA come==== name: chkconf_dadna_from_NUT (or chkconf_dadna_from_NUT_rf1 if NUT is a Router) TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id Wait for NUT's address state becomes valid deprecated. (sleep 35[sec]) Check if NUT's address is configured. ==== Action #3: DAD NS ====> name: chkconf_dadns_to_NUT TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id DAD NA come from NUT because NUT's address is configured (valid deprecated). <=== Judgement #3: DAD NA come==== name: chkconf_dadna_from_NUT (or chkconf_dadna_from_NUT_rf1 if NUT is a Router) TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id Wait for NUT's address state becomes invalid. Check if NUT's address is configured. ==== Action #4: DAD NS ====> name: chkconf_dadns_to_NUT TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id DAD NA does not come from NUT because NUT's address is not configured (invalid). <=== Judgement #4: DAD NA does not come==== name: chkconf_dadna_from_NUT (or chkconf_dadna_from_NUT_rf1 if NUT is a Router) TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id B< Packet receiving and Site-local address lifetime expiry (valid preferred, valid deprecated, invalid) -pkt SLOCAL0_valRA_vlt60plt30.def addrconf=ra init=DADSuccess_boot> TN(or X) NUT ------------------------------ Send Unsolicited RA to configure address of NUT (sequence parameter addrconf=ra) ==== Action #1: Unsolicited RA ===> name: usolra Prefix option ValidLifetime: 60 PreferredLifetime: 30 Prefix: _SLOCAL0_UCAST_PRFX TN wait the DAD NS sends from NUT. (This judgement is informational only.) <=== Judgement #1: DAD NS ==== name: dadns_from_NUT TargetAddress: NUT's tentative _SLOCAL0_UCAST_PRFX + interface-id Wait for NUT to finish DAD. (sleep $RetransTimerSec=1 [sec]) Check if NUT's address is configured. ==== Action #2: DAD NS ====> name: chkconf_dadns_to_NUT TargetAddress: NUT's _SLOCAL0_UCAST_PRFX + interface-id DAD NA come from NUT because NUT's address is configured (valid preferred). <=== Judgement #2: DAD NA come==== name: chkconf_dadna_from_NUT (or chkconf_dadna_from_NUT_rf1 if NUT is a Router) TargetAddress: NUT's _SLOCAL0_UCAST_PRFX + interface-id Wait for NUT's address state becomes valid deprecated. (sleep 35[sec]) Check if NUT's address is configured. ==== Action #3: DAD NS ====> name: chkconf_dadns_to_NUT TargetAddress: NUT's _SLOCAL0_UCAST_PRFX + interface-id DAD NA come from NUT because NUT's address is configured (valid deprecated). <=== Judgement #3: DAD NA come==== name: chkconf_dadna_from_NUT (or chkconf_dadna_from_NUT_rf1 if NUT is a Router) TargetAddress: NUT's _SLOCAL0_UCAST_PRFX + interface-id Wait for NUT's address state becomes invalid. Check if NUT's address is configured. ==== Action #4: DAD NS ====> name: chkconf_dadns_to_NUT TargetAddress: NUT's _SLOCAL0_UCAST_PRFX + interface-id DAD NA does not come from NUT because NUT's address is not configured (invalid). <=== Judgement #4: DAD NA does not come==== name: chkconf_dadna_from_NUT (or chkconf_dadna_from_NUT_rf1 if NUT is a Router) TargetAddress: NUT's _SLOCAL0_UCAST_PRFX + interface-id =head1 SEE ALSO =begin html
 detail of v6eval tool option: see perldoc V6evalTool.pm, perldoc V6evalRemote.pm
 detail of parameters: see Test sequence for IPv6 Stateless Address Autoconfiguration.
=end html =cut