From cb8a6c36b03fdfc225f84c391268b7b97deed3e0 Mon Sep 17 00:00:00 2001 From: "Martine S. Lenders" Date: Fri, 24 Apr 2020 17:53:20 +0200 Subject: [PATCH] gnrc_ipv6_nib: 6ln: use interface-specific DR for address registration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With multiple 6LoWPAN interfaces the router for the given interface —the one the triggering RA came over—should be used to register the address with. Co-Authored-By: Benjamin Valentin --- sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c | 2 +- sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c b/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c index 7114c22a19..7d7120e50b 100644 --- a/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c +++ b/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c @@ -174,7 +174,7 @@ static inline bool _is_valid(const gnrc_netif_t *netif, int idx) void _handle_rereg_address(const ipv6_addr_t *addr) { gnrc_netif_t *netif = gnrc_netif_get_by_ipv6_addr(addr); - _nib_dr_entry_t *router = _nib_drl_get_dr(); + _nib_dr_entry_t *router = _nib_drl_get(NULL, netif->pid); const bool router_reachable = (router != NULL) && _is_reachable(router->next_hop); diff --git a/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c b/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c index 6e3686ed97..3687e394d0 100644 --- a/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c +++ b/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c @@ -37,9 +37,9 @@ void _snd_ns(const ipv6_addr_t *tgt, gnrc_netif_t *netif, gnrc_pktsnip_t *ext_opt = NULL; #ifdef MODULE_GNRC_SIXLOWPAN_ND - _nib_dr_entry_t *dr = _nib_drl_get_dr(); - assert(netif != NULL); + _nib_dr_entry_t *dr = _nib_drl_get(NULL, netif->pid); + /* add ARO based on interface */ if ((src != NULL) && gnrc_netif_is_6ln(netif) && (_nib_onl_get_if(dr->next_hop) == (unsigned)netif->pid) &&