#!/usr/bin/perl
#
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
# Yokogawa Electric Corporation.
# All rights reserved.
#
# Redistribution and use of this software in source and binary
# forms, with or without modification, are permitted provided that
# the following conditions and disclaimer are agreed and accepted
# by the user:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with
# the distribution.
#
# 3. Neither the names of the copyrighters, the name of the project
# which is related to this software (hereinafter referred to as
# "project") nor the names of the contributors may be used to
# endorse or promote products derived from this software without
# specific prior written permission.
#
# 4. No merchantable use may be permitted without prior written
# notification to the copyrighters.
#
# 5. The copyrighters, the project and the contributors may prohibit
# the use of this software at any time.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING
# BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# $TAHI: ct/nd.p2/V6LC_2_1_20_R.seq,v 1.2 2008/02/07 10:45:43 akisada Exp $
#
########################################################################
use nd;
BEGIN {}
END {}
my $ereq = 'ndisc_ereq_LL';
startNdiscWorld($Link0);
vLogHTML('Procedure
');
if(ndiscNone2ProbeWithNS($Link0, $ereq) < 0) {
$NEED_COMMON_CLEANUP = 1;
$tn1_cache = 1;
exitFail();
#NOTREACHED
}
if(ndSendNaProbe2Probe($Link0, $ereq, 'nd_mcast_na_rsO') < 0) {
$NEED_COMMON_CLEANUP = 1;
$tn1_cache = 1;
exitFail();
#NOTREACHED
}
exitPass();
#NOTREACHED
#
# perldoc
#
########################################################################
__END__
=head1 NAME
=begin html
V6LC_2_1_20_R - NA Processing, NCE State PROBE (Multicast NA (S=0&O=1) w/o TLLA) =end html =begin html=end html =head1 TARGET =begin html
Host/Router=end html =head1 TOPOLOGY =begin html
=end html =head1 SETUP =begin htmlTN NUT | | ----+-------+--- Link0
Link0 link-local fe80::/64 TN link-local fe80::<TnDef.Link0_addr> ether <TnDef.Link0_addr> NUT link-local fe80::<NutDef.Link0_addr> ether <NutDef.Link0_addr>
=end html =head1 TEST PROCEDURE =begin htmlnone
- Verify that NUT doesn't update entry's reachablity state=end html =head1 JUDGEMENT =begin html
- Verify that NUT transmits valid NSs in PROBE state
TN NUT | | | ----> | Echo Request | ----> | NA (unicast) | <---- | Echo Reply | | * | Wait (DELAY_FIRST_PROBE_TIME) | | | <---- | NS (unicast) | | | --> | NA (multicast) | | | <---- | NS (unicast) [Judgment #1] | <---- | NS (unicast) | | V V
State: NONE (TN) (link-local)1. Send Echo RequestIPv6 header source = TN (link-local) destination = NUT (link-local) Echo RequestState: INCOMPLETE (TN) (link-local)2. Send NAIPv6 header hop limit = 255 source = TN (link-local) destination = NUT (link-local) NA R = 0 S = 0 O = 1 target = TN (link-local) TLL optionState: STALE (TN) (link-local)3. Observe Echo ReplyIPv6 header source = NUT (link-local) destination = TN (link-local) Echo ReplyState: DELAY (TN) (link-local)4. Wait (DELAY_FIRST_PROBE_TIME)Node constants: DELAY_FIRST_PROBE_TIME: 5 secondsState: PROBE (TN) (link-local)5. Observe NSIPv6 header hop limit = 255 source = NUT (link-local) destination = TN (link-local) NS target = TN (link-local) SLL optionState: PROBE (TN) (link-local)6. Send NAIPv6 header hop limit = 255 source = TN (link-local) destination = all-nodes multicast address NA R = 0 S = 0 O = 1 target = TN (link-local)7. Observe MAX_UNICAST_SOLICIT NSs [Judgment #1]IPv6 header hop limit = 255 source = NUT (link-local) destination = TN (link-local) NS target = TN (link-local) SLL optionNode constants: MAX_UNICAST_SOLICIT: 3 transmissionsState: NONE (TN) (link-local)
=end html =head1 CLEANUP =begin html[Judgment #1] NUT must transmit NS to TN
Index NA Previous New Source Addr Destination Addr R S O TLL option State Cached LLA State Cached LLA V6LC_2_1_20_A unicast unicast 0 0 0 none PROBE exist PROBE unchanged V6LC_2_1_20_B unicast unicast 0 0 1 none PROBE exist PROBE unchanged V6LC_2_1_20_C unicast unicast 0 1 0 none PROBE exist REACHABLE unchanged V6LC_2_1_20_D unicast unicast 0 1 1 none PROBE exist REACHABLE unchanged V6LC_2_1_20_E unicast unicast 0 0 0 same PROBE exist PROBE unchanged V6LC_2_1_20_F unicast unicast 0 0 1 same PROBE exist PROBE unchanged V6LC_2_1_20_G unicast unicast 0 1 0 same PROBE exist REACHABLE unchanged V6LC_2_1_20_H unicast unicast 0 1 1 same PROBE exist REACHABLE unchanged V6LC_2_1_20_I unicast unicast 0 0 0 different PROBE exist PROBE unchanged V6LC_2_1_20_J unicast unicast 0 0 1 different PROBE exist STALE updated V6LC_2_1_20_K unicast unicast 0 1 0 different PROBE exist PROBE unchanged V6LC_2_1_20_L unicast unicast 0 1 1 different PROBE exist REACHABLE updated V6LC_2_1_20_M unicast multicast 0 0 0 same PROBE exist PROBE unchanged V6LC_2_1_20_N unicast multicast 0 0 1 same PROBE exist PROBE unchanged V6LC_2_1_20_O unicast multicast 0 0 0 different PROBE exist PROBE unchanged V6LC_2_1_20_P unicast multicast 0 0 1 different PROBE exist STALE updated
=end html =cut # =head1 REFERENCE # # =begin html #none
# RFC2461 Neighbor Discovery for IPv6 ## # =end html # =pod =head1 REFERENCE =begin html
## 7.2.5. Receipt of Neighbor Advertisements ### If the target's Neighbor Cache entry is in any state other than # INCOMPLETE when the advertisement is received, processing becomes # quite a bit more complex. If the Override flag is clear and the # supplied link-layer address differs from that in the cache, then one # of two actions takes place: if the state of the entry is REACHABLE, # set it to STALE, but do not update the entry in any other way; # otherwise, the received advertisement should be ignored and MUST NOT # update the cache. If the Override flag is set, both the Override # flag is clear and the supplied link-layer address is the same as that # in the cache, or no Target Link-layer address option was supplied, # the received advertisement MUST update the Neighbor Cache entry as # follows: ### - The link-layer address in the Target Link-Layer Address option # MUST be inserted in the cache (if one is supplied and is different # than the already recorded address). ### - If the Solicited flag is set, the state of the entry MUST be set # to REACHABLE. If the Solicited flag is zero and the link-layer # address was updated with a different address the state MUST be set # to STALE. Otherwise, the entry's state remains unchanged. ### An advertisement's Solicited flag should only be set if the # advertisement is a response to a Neighbor Solicitation. Because # Neighbor Unreachability Detection Solicitations are sent to the # cached link-layer address, receipt of a solicited advertisement # indicates that the forward path is working. Receipt of an # unsolicited advertisement, however, suggests that a neighbor has # urgent information to announce (e.g., a changed link-layer # address). If the urgent information indicates a change from what # a node is currently using, the node should verify the reachability # of the (new) path when it sends the next packet. There is no need # to update the state for unsolicited advertisements that do not # change the contents of the cache. ### - The IsRouter flag in the cache entry MUST be set based on the # Router flag in the received advertisement. In those cases where # the IsRouter flag changes from TRUE to FALSE as a result of this # update, the node MUST remove that router from the Default Router # List and update the Destination Cache entries for all destinations # using that neighbor as a router as specified in Section 7.3.3. # This is needed to detect when a node that is used as a router # stops forwarding packets due to being configured as a host. ### The above rules ensure that the cache is updated either when the # Neighbor Advertisement takes precedence (i.e., the Override flag is # set) or when the Neighbor Advertisement refers to the same link-layer # address that is currently recorded in the cache. If none of the # above apply, the advertisement prompts future Neighbor Unreachability # Detection (if it is not already in progress) by changing the state in # the cache entry. ##
=end html =cutRFC 2461 - Neighbor Discovery for IPv6