# NAME

hostRecvRedirect4RFlag2 - Verifying Redirect (to a better router) vs. IsRouter flag

# TARGET

Host only

# SYNOPSIS

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

# INITIALIZATION

1. Clear IPv6 routes.
2. Clear NC state for TN.
3. Set R1 as the default router by sending RA and NA.

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

      State: NONCE (for R1, TN)

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

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

      State: REACHABLE (for R1), NONCE (for TN)

      Wait (3 sec) for DAD NS

# TEST PROCEDURE

hostRecvRedirect4RFlag verifies that an entry of Destination Cache updated by a redirect message (ICMP Target != ICMP Destination) is removed by NA w/ RFlag=0.

1. Send echo-request (src:H1, dst:NUT)
2. Verify that NUT send echo-reply to the default router, R1
3. Send redirect message to NUT.
4. Send NA whose R flag is 0.
5. Send echo-request (src:H1, dst:NUT) again.
6. Verify that NUT send echo-reply to the default router, R1

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

      State: REACHABLE (for R1), NONCE (for TN)

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

      <=== Judgment #1: echo-reply ====
           src=NUT's global, prefix=3ffe:501:ffff:100::/64
           dst=H1(off-link global), prefix=3ffe:501:ffff:109::/64,
               but LLA is R1's one

      ==== redirect ===>
           src=R1's link-local
           dst=NUT's link-local
           icmp target=TN's link-local
           icmp destination=H1's global
           w/  TLLA
           w/o Redirected header

      State: REACHABLE (for R1), STALE (for TN)

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

      State: REACHABLE (for R1, TN)

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

      <=== Judgment #1: echo-reply ====
           src=NUT's global, prefix=3ffe:501:ffff:100::/64
           dst=H1(off-link global), prefix=3ffe:501:ffff:109::/64,
               but LLA is R1's one

# JUDGMENT

      1. NUT must throw echo-reply whose destination is off-link global
        to the default router (i.e. R1).

# TERMINATION

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

      Clear IPv6 routes by remote command. XXX

# NOTE

      The test invokes the following command:
      - Clear IPv6 routes

# SEE ALSO

      perldoc V6evalTool
      perldoc V6evalRemote