# NAME

hostRecvRas - Verifying that a host accept the union of all RAs

# TARGET

Host only

# SYNOPSIS

     hostRecvRas .seq [-tooloption ...] -p hostRecvRas.def

# INITIALIZATION

1. Clear the Prefix List that was learned with RAs.
2. Create a neighbor cache entry for TN where the IsRouter flag is TRUE.
3. Set its state to REACHABLE.
4. Give three global prefixes by TN:
   - 3ffe:501:ffff:100::/64
   - 3ffe:501:ffff:108::/64
   - 3ffe:501:ffff:107::/64

      TN                 NUT
      ----------------------

      State: NONCE (for TN)

      ==== unsolicited RA ===>
           src=TN's link-local
           dst=all-node
           M=0, O=0
           RouterLifetime=600
           ReachableTime=0
           RetransTimer=0
           w/ SLLA
           Prefix Option:
               L=1, A=1
               ValidLifetime=2592000
               PreferredLifetime=604800
               Prefix=3ffe:501:ffff:100::/64

      State: STALE (for TN)

      ==== unsolicited RA ===>
           src=TN's link-local
           dst=all-node
           M=0, O=0
           RouterLifetime=600
           ReachableTime=0
           RetransTimer=0
           w/ SLLA
           Prefix Option:
               L=1, A=1
               ValidLifetime=2592000
               PreferredLifetime=604800
               Prefix=3ffe:501:ffff:108::/64

      ==== unsolicited RA ===>
           src=TN's link-local
           dst=all-node
           M=0, O=0
           RouterLifetime=600
           ReachableTime=0
           RetransTimer=0
           w/ SLLA
           Prefix Option:
               L=1, A=1
               ValidLifetime=2592000
               PreferredLifetime=604800
               Prefix=3ffe:501:ffff:107::/64

      <=== Ns for DAD ====
           src=unspecified
           dst=solicited-node[NUT's global, prefix=3ffe:501:ffff:100::/64]
           target=NUT's global

      <=== Ns for DAD ====
           src=unspecified
           dst=solicited-node[NUT's global, prefix=3ffe:501:ffff:108::/64]
           target=NUT's global

      <=== Ns for DAD ====
           src=unspecified
           dst=solicited-node[NUT's global, prefix=3ffe:501:ffff:107::/64]
           target=NUT's global

      Wait (3 sec)

      ==== solicited NA ===>
            src=TN's link-local
            dst=NUT's link-local
            R=1, S=1, O=1
            target=X's link-local
            TLLA=X's LLA

      State: REACHABLE (for TN)

# TEST PROCEDURE

hostRecvRas verifies that a host accept the union of all RAs.

      TN               NUT
      ----------------------
      State: REACHABLE (for TN)

      ==== echo-request ===>
           src=off-link global, but LLA is TN's one
           dst=NUT's global, prefix==3ffe:501:ffff:100::/64

      <=== Judgment #2: echo-reply ====
           src=NUT's global, prefix==3ffe:501:ffff:100::/64
           dst=off-link global, but LLA is TN's one

      ==== echo-request ===>
           src=off-link global, but LLA is TN's one
           dst=NUT's global, prefix==3ffe:501:ffff:108::/64

      <=== Judgment #2: echo-reply ====
           src=NUT's global, prefix==3ffe:501:ffff:108::/64
           dst=off-link global, but LLA is TN's one

      ==== echo-request ===>
           src=off-link global, but LLA is TN's one
           dst=NUT's global, prefix==3ffe:501:ffff:107::/64

      <=== Judgment #2: echo-reply ====
           src=NUT's global, prefix==3ffe:501:ffff:107::/64
           dst=off-link global, but LLA is TN's one

# JUDGMENT

      1. NUT accepts the union of all received information; the receipt of
         a RA must not invalidate all information received in a previous RA
         or from another source.

      2. NUT throw three echo-replies to the default router (i.e. TN),
         and their source addresses are different global prefixes.

# TERMINATION

      Send RA with RouterLifetime=0 to clear the Default Router List.

      Clear the Prefix List by remote command. XXX

# NOTE

      The test invokes the following command:
      - Clear the Prefix List

# SEE ALSO

      perldoc V6evalTool
      perldoc V6evalRemote