NAME

  SrcSelectRule2_TempAddr.seq - Source Address Selection
                                Check Rule 2(Prefer appropriate scope) with temporary address

  Rule 2: Prefer appropriate scope. 
    If Scope(SA) < Scope(SB): If Scope(SA) < Scope(D), then prefer SB 
    and otherwise prefer SA. 

  Source addresses used for this test are "temporary address" and "public address".


TARGET

  Host


INITIALIZATION

  None


TEST PROCEDURE

  This TEST performs the following Check procedures for
  every address group defined by Check 01 - *.
    
  *Check procedure
  
  1. Initialize :
     1.1. Set IPv6 Default Route in NUT
          (Default Router address = <TN-Link0-LinkLocalAddress>)
     1.2. Set privacy extention setting in NUT
     1.3. Add Candidate Source Addresses (temporary / public ) in NUT
          * temporary address is added by RA (TN->NUT)
     1.4. Check Candidate Source Addresses by Ping6 (TN->NUT)
  2. Send Ping6 from NUT to Destination
     2.1. NUT send ICMPv6 echo request (NUT->TN)
  3. Judgment :
     if (recive packet's Destination & Source Addresses)
     = (expected Destination & Source Addresses), Check pass
  4. Cleanup :
     4.1. Delete Candidate Source Addresses in NUT
     4.2. Clear prefix list & NCE & default router list in NUT
     4.3. Remove privacy extention setting in NUT

        NUT    TN  Default Router  Destination
         |      |      |           |
         ======(INITIALIZE)=========
         |      |      |           |
         |<-<-<-+      |           | Set IPv6 Default Route
         |<-<-<-+      |           | Set privacy extention setting
         |<-<-<-+      |           | Add Candidate Source Addresses
         |      |      |           |
         |<------------+           | RA
         |      |      |           |
         |<------------+           | Echo Request to Candidate Source Addresses 1
         +------------>|           | Echo Reply
         |      |      |           |
         |<------------+           | Echo Request to Candidate Source Addresses 2
         +------------>|           | Echo Reply
         |      |      |           |
         ======(INITIALIZE)=========
         |      |      |           |
         |<-<-<-+      |           | Excute ping6 command
         |      |      |           |
         +------------------------>| Echo Request
         |      |      |           |

  GS(Unicast Global Scope), GSM(Multicast Global Scope), OSM(Multicast Organization Scope),
  SS(Unicast Site local Scope), SSM(Multicast Site local Scope), LS(Link local Scope)
  LLA(Link Local Address)

  Check 01:
    Destination: 3fff::2(GS)
    Candidate Source Addresses: 3ffe::random(temporary)(GS) or fec0::1(SS) or LLA(LS)
    Result: 3ffe::random(temporary)(GS)

    Scope(LLA) < Scope(fec0::1): If Scope(LLA) < Scope(3fff::2),  yes, prefer fec0::1
    Scope(fec0::1) < Scope(3ffe::random): If Scope(fec0::1) < Scope(3fff::2),  yes, prefer 3ffe::random

  Check 02:
    Destination: ff0e::2(GSM)
    Candidate Source Addresses: 3ffe::random(temporary)(GS) or fec0::1(SS) or LLA(LS)
    Result: 3ffe::random(temporary)(GS)

    Scope(LLA) < Scope(fec0::1): If Scope(LLA) < Scope(ff0e::2),  yes, prefer fec0::1
    Scope(fec0::1) < Scope(3ffe::random): If Scope(fec0::1) < Scope(ff0e::2),  yes, prefer 3ffe::random

  Check 03:
    Destination: 3fff::2(GS)
    Candidate Source Addresses: fec0::random(temporary)(SS) or LLA(LS)
    Result: fec0::random(temporary)(SS)

    Scope(LLA) < Scope(fec0::random): If Scope(LLA) < Scope(3fff::2),  yes, prefer fec0::random

  Check 04:
    Destination: ff0e::2(GSM)
    Candidate Source Addresses: fec0::random(temporary)(SS) or LLA(LS)
    Result: fec0::random(temporary)(SS)

    Scope(LLA) < Scope(fec0::random): If Scope(LLA) < Scope(ff0e::2),  yes, prefer fec0::random

  Check 05:
    Destination: ff08::2(OSM)
    Candidate Source Addresses: 3ffe::random(temporary)(GS) or fec0::1(SS) or LLA(LS)
    Result: 3ffe::random(temporary)(GS)

    Scope(LLA) < Scope(fec0::1): If Scope(LLA) < Scope(ff08::2),  yes, prefer fec0::1
    Scope(fec0::1) < Scope(3ffe::random): If Scope(fec0::1) < Scope(ff08::2),  yes, prefer 3ffe::random

  Check 06:
    Destination: ff08::2(GS)
    Candidate Source Addresses: fec0::random(temporary)(SS) or LLA(LS)
    Result: fec0::random(temporary)(SS)

    Scope(LLA) < Scope(fec0::random): If Scope(LLA) < Scope(ff08::2),  yes, prefer fec0::random

  Check 07:
    Destination: fec0::2(SS)
    Candidate Source Addresses: 3ffe::random(temporary)(SS) or LLA(LS)
    Result: fec0::random(temporary)(SS)

    Scope(LLA) < Scope(3ffe::random): If Scope(LLA) < Scope(fec0::2),  yes, prefer 3ffe::random

  Check 08:
    Destination: ff05::2(SSM)
    Candidate Source Addresses: 3ffe::random(temporary)(SS) or LLA(LS)
    Result: fec0::random(temporary)(SS)

    Scope(LLA) < Scope(3ffe::random): If Scope(LLA) < Scope(ff05::2),  yes, prefer 3ffe::random

  Check 09:
    Destination: fec0::2(SS)
    Candidate Source Addresses: 3ffe::1(GS) or fec0::random(temporary)(SS) or LLA(LS)
    Result: fec0::random(temporary)(SS)

    Scope(LLA) < Scope(fec0::random): If Scope(LLA) < Scope(fec0::2),  yes, prefer fec0::random
    Scope(fec0::random) < Scope(3ffe::1): If Scope(fec0::random) < Scope(fec0::2),  no, prefer fec0::random

  Check 10:
    Destination: ff05::2(SSM)
    Candidate Source Addresses: 3ffe::1(GS) or fec0::random(temporary)(SS) or LLA(LS)
    Result: fec0::random(temporary)(SS)

    Scope(LLA) < Scope(fec0::random): If Scope(LLA) < Scope(ff05::2),  yes, prefer fec0::random
    Scope(fec0::random) < Scope(3ffe::1): If Scope(fec0::random) < Scope(ff05::2),  no, prefer fec0::random


JUDGEMENT

  Check 01:
    PASS: Receive Echo Request & source address != fec0::1 and LLA

  Check 02:
    PASS: Receive Echo Request & source address != fec0::1 and LLA

  Check 03:
    PASS: Receive Echo Request & source address != LLA

  Check 04:
    PASS: Receive Echo Request & source address != LLA

  Check 05:
    PASS: Receive Echo Request & source address != fec0::1 and LLA

  Check 06:
    PASS: Receive Echo Request & source address != LLA

  Check 07:
    PASS: Receive Echo Request & source address != LLA

  Check 08:
    PASS: Receive Echo Request & source address != LLA

  Check 09:
    PASS: Receive Echo Request & source address != 3ffe::1 and LLA

  Check 10:
    PASS: Receive Echo Request & source address != 3ffe::1 and LLA

  TEST
    PASS: All Check = PASS


SEE ALSO

  perldoc V6evalTool
  ADDR_SELECT.html "Default Address Selection for IPv6" Test Common Utility
das_rules.html "Default Address Selection for IPv6" Rules