1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2026-01-01 01:41:18 +01:00

Merge pull request #15079 from miri64/gnrc_ipv6_nib/enh/multicast-6LN-UNREACHABLED-probe

gnrc_ipv6_nib: only multicast probe UNREACHABLE neighbor if 6LR
This commit is contained in:
Martine Lenders 2020-09-29 11:49:27 +02:00 committed by GitHub
commit f55031e65d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 2 deletions

View File

@ -34,7 +34,6 @@
extern "C" {
#endif
#if IS_ACTIVE(CONFIG_GNRC_IPV6_NIB_6LN) || defined(DOXYGEN)
/**
* @brief Additional (local) status to ARO status values for tentative
* addresses
@ -57,6 +56,7 @@ extern "C" {
*/
#define _ADDR_REG_STATUS_UNAVAIL (255)
#if IS_ACTIVE(CONFIG_GNRC_IPV6_NIB_6LN) || defined(DOXYGEN)
/**
* @brief Resolves address statically from destination address using reverse
* translation of the IID

View File

@ -233,7 +233,19 @@ void _handle_snd_ns(_nib_onl_entry_t *nbr)
}
/* intentionally falls through */
case GNRC_IPV6_NIB_NC_INFO_NUD_STATE_UNREACHABLE:
_probe_nbr(nbr, false);
if (!IS_ACTIVE(CONFIG_GNRC_IPV6_NIB_6LR) ||
/* if neighbor is a 6LoWPAN node (i.e. address registartion
* state is non-garbage-collectible), only probe if it is a
* router (where the solicited-nodes multicast address MUST
* be set; only MAY otherwise).
* See:
* - https://tools.ietf.org/html/rfc6775#section-5.2
* - https://tools.ietf.org/html/rfc6775#section-6.5.5
*/
(_get_ar_state(nbr) == GNRC_IPV6_NIB_NC_INFO_AR_STATE_GC) ||
(nbr->info & GNRC_IPV6_NIB_NC_INFO_IS_ROUTER)) {
_probe_nbr(nbr, false);
}
break;
default:
break;