# NAME

hostRecvRaRLifetime0 - Verifying that a host recognize RouterLifetime=0

# TARGET

Host only

# SYNOPSIS

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

# INITIALIZATION

1. Create neighbor cache entries for NUT, Y, Z.
2. Set their state to REACHABLEs.
3. Give a global prefix, 3ffe:501:ffff:100::/64

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

      State: NONCE (for all)

      ==== 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), NONCE (for Y, Z)

      ==== unsolicited RA ===>
           src=Y'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, Y), NONCE (for Z)

      ==== unsolicited RA ===>
           src=Z'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 all)

      <=== Ns for DAD ====
           src=unspecified
           dst=solicited-node[NUT's global, prefix=3ffe:501:ffff:100::/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=TN's link-local
            TLLA=TN's LLA

      State: REACHABLE (for TN), STALE (for Y and Z)
      ==== solicited NA ===>
            src=Y's link-local
            dst=NUT's link-local
            R=1, S=1, O=1
            target=Y's link-local
            TLLA=X's LLA

      State: REACHABLE (for TN, Y), STALE (for Z)
      ==== solicited NA ===>
            src=Z's link-local
            dst=NUT's link-local
            R=1, S=1, O=1
            target=Z's link-local
            TLLA=Z's LLA

      State: REACHABLE (for all)

# TEST PROCEDURE

hostRecvRaRLifetime0 verifies that

- a host recognizes RouterLifetime=0.
- a host updates the Default Router List if its entry is expires.
- the Default Router List holds at the least two entries.

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

      State: REACHABLE (for all)

      ==== echo-request ===>
           src=off-link global, but LLA is the W's one
           dst=NUT's global

      <=== Judgment #4: echo-reply ====
           src=NUT's global
           dst=off-link global, but LLA is one of the routers(TN, Y, Z)

      ==== unsolicited RA ===>
           src=TN's link-local
           dst=all-node
           M=0, O=0
           RouterLifetime=0
           ReachableTime=0
           RetransTimer=0
           w/ SLLA

      ==== echo-request ===>
           src=off-link global, but LLA is the W's one
           dst=NUT's global

      <=== Judgment #5: echo-reply ====
           src=NUT's global
           dst=off-link global, but LLA is one of the routers(Y, Z)

      ==== unsolicited RA ===>
           src=Y's link-local
           dst=all-node
           M=0, O=0
           RouterLifetime=0
           ReachableTime=0
           RetransTimer=0
           w/ SLLA

      ==== echo-request ===>
           src=off-link global, but LLA is the W's one
           dst=NUT's global

      <=== Judgment #6: echo-reply ====
           src=NUT's global
           dst=off-link global, but LLA is one of the routers(Z)

      ==== unsolicited RA ===>
           src=Z's link-local
           dst=all-node
           M=0, O=0
           RouterLifetime=0
           ReachableTime=0
           RetransTimer=0
           w/ SLLA

      ==== echo-request ===>
           src=off-link global, but LLA is the W's one
           dst=NUT's global

      <=== Judgment #7: multicast NS (if any) ====
           src=NUT's global
           dst=solicited-node[off-link global]
           w/ SLLA

# JUDGMENT

      1. If the address is already present in the host's Default Router
         List and the received Router Lifetime value is zero, immediately
         time-out the entry.

      2. Whenever the Lifetime of an entry in the Default Router List expires,
         that entry is discarded.  When removing a router from the Default
         Router list, NUT must update the Destination Cache in such a way
         that all entries using the router perform next-hop determination
         again rather than continue sending traffic to the (deleted) router.

      3. NUT must retain at least two router addresses and should retain more.

      4. NUT must throw an echo-reply to the default router (NUT or Y or Z).

      5. NUT must throw an echo-reply to the default router (Y or Z).

      6. NUT must throw an echo-reply to the default router (i.e. Z).

      7. NUT must not throw an echo-reply to any routers.
         NUT may throw multicast NS for onlink determination.

# TERMINATION

      Send RAs to clear the Default Router List:
      - RA (src=TN) with RouterLifetime=0
      - RA (src=Y)  with RouterLifetime=0
      - RA (src=Z)  with RouterLifetime=0

# NOTE

      The test does not invoke any remote command.

# SEE ALSO

      perldoc V6evalTool
      perldoc V6evalRemote