# NAME

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

# TARGET

Host only

# SYNOPSIS

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

# INITIALIZATION

1. Clear IPv6 routes.
2. Set R1 as the default router by sending RA and NA.
3. Set TN as the second 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)

      ==== 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: REACHABLE (for R1), STALE (for TN)

      ==== 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 R1, 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 echo-request (src:H1, dst:NUT) again.
5. Verify that NUT threw send echo-reply to the better router, TN.
6. Send NA whose R flag is 0.
7. Send echo-request (src:H1, dst:NUT) again.
8. Verify that NUT send echo-reply to the default router, R1

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

      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

      ==== 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

      ==== 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 #2: 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 TN's one

      ==== 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

      ==== 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).

      2. NUT must throw echo-reply to the better router (i.e. TN).

# TERMINATION

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

      Clear IPv6 routes by remote command. XXX

# NOTE

      The test invokes the following command:
      - Clear IPv6 routes

# SEE ALSO

      perldoc V6evalTool
      perldoc V6evalRemote