# NAME

recvNsRFlag - Verifying that a IsRouter flag is not modified by a NS

# TARGET

Host only

# SYNOPSIS

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

# INITIALIZATION

1. Set the state of neighbor cache entry to REACHABLE whose IsRouter flag is true.
2. Cache either TN's LLA or a bogus LLA

## Cache a LLA of TN

      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
           SLLA=TN's LLA
           Prefix Option:
               L=1, A=1
    	   ValidLifetime=2592000
    	   PreferredLifetime=604800
               Prefix=3ffe:501:ffff:100::/64

      State: STALE (for TN)

      <=== Ns for DAD (if any) ====
           src=unspecified
           dst=solicited-node[NUT's global]
           target=NUT's global

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

## Cache a bogus LLA

      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
           SLLA=a bogus LLA
           Prefix Option:
               L=1, A=1
    	   ValidLifetime=2592000
    	   PreferredLifetime=604800
               Prefix=3ffe:501:ffff:100::/64

      State: STALE (for TN)

      <=== Ns for DAD (if any) ====
           src=unspecified
           dst=solicited-node[NUT's global]
           target=NUT's global

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

      State: REACHABLE (for TN)

# TEST PROCEDURE

recvNsRFlag verifies that a IsRouter flag is NOT modified by a NS.

#

#

#

#

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

      State: REACHABLE (for TN)

      ==== NS ===>
           src=TN's link-local
           dst=the NUT's link-local or solicited-node[NUT's link-local]
           target=NUT's link-local
           w/ or w/o SLL

      State: REACHABLE or STALE (for TN)

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

      <=== Judgment #2: echo-reply ====
           src=NUT's global
           dst=off-link global, but LLA is TN's one

      State: REACHABLE or DELAY->PROBE (for TN)

      <=== Ns for TN (if the state is PROBE) ====
           src=NUT's link-local
           dst=TN's link-local
           target=TN's global

      State: REACHABLE or NONCE (for TN)
    =end html

    JUDGMENT

    1. IsRouter flag MUST NOT be modified

    7.2.3.  Receipt of Neighbor Solicitations

       If a Neighbor Cache entry is created the IsRouter flag SHOULD be set
       to FALSE.  This will be the case even if the Neighbor Solicitation is
       sent by a router since the Neighbor Solicitation messages do not
       contain an indication of whether or not the sender is a router.  In
       the event that the sender is a router, subsequent Neighbor
       Advertisement or Router Advertisement messages will set the correct
       IsRouter value.  If a Neighbor Cache entry already exists its
       IsRouter flag MUST NOT be modified.

      ========================+=====================
      Received NS             | a IsRouter flag
      by NUT                  | of NUT's NCE
      ------------+-----------+ ---------+----------
      Dst         | SLLA      | Current  | New
      ============+===========+==========+==========
      unicast     | none      | 1        | unchanged
      ------------+-----------+----------+----------
      unicast     | same      | 1        | unchanged
      ------------+-----------+----------+----------
      multicast   | none      | 1        | unchanged
      ------------+-----------+----------+----------
      multicast   | same      | 1        | unchanged
      ------------+-----------+----------+----------
      unicast     | different | 1        | unchanged
      ------------+-----------+----------+----------
      multicast   | different | 1        | unchanged
      ============+===========+==========+==========

      2. NUT sends an echo-reply that is thrown to
         the default router (i.e. TN).

    TERMINATION

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

    NOTE

      The command does not invoke any remote command.

    SEE ALSO

      perldoc V6evalTool
      perldoc V6evalRemote