# 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

# SYNOPSIS

      SrcSelectRule2_TempAddr.seq [-tooloption ...] -pkt ADDR_SELECT.def
        -tooloption : v6eval tool option

# 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