1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

nib/_nib-6ln: don't check twice if address is assigned

This commit is contained in:
Benjamin Valentin 2023-10-24 16:47:47 +02:00
parent 7c6b367035
commit 8779b5edde

View File

@ -196,7 +196,6 @@ void _handle_rereg_address(const ipv6_addr_t *addr)
_nib_dr_entry_t *router = _nib_drl_get(NULL, netif->pid); _nib_dr_entry_t *router = _nib_drl_get(NULL, netif->pid);
const bool router_reachable = (router != NULL) && const bool router_reachable = (router != NULL) &&
_is_reachable(router->next_hop); _is_reachable(router->next_hop);
if (router_reachable) { if (router_reachable) {
assert((unsigned)netif->pid == _nib_onl_get_if(router->next_hop)); assert((unsigned)netif->pid == _nib_onl_get_if(router->next_hop));
DEBUG("nib: Re-registering %s", DEBUG("nib: Re-registering %s",
@ -209,18 +208,16 @@ void _handle_rereg_address(const ipv6_addr_t *addr)
else { else {
DEBUG("nib: Couldn't re-register %s, no current router found.\n", DEBUG("nib: Couldn't re-register %s, no current router found.\n",
ipv6_addr_to_str(addr_str, addr, sizeof(addr_str))); ipv6_addr_to_str(addr_str, addr, sizeof(addr_str)));
netif->ipv6.rs_sent = 0;
_handle_search_rtr(netif);
goto out;
} }
int idx = gnrc_netif_ipv6_addr_idx(netif, addr); int idx = gnrc_netif_ipv6_addr_idx(netif, addr);
if (idx < 0) { assert(idx >= 0);
DEBUG("nib: %s is not assigned to interface %d anymore.\n",
ipv6_addr_to_str(addr_str, addr, sizeof(addr_str)), if (_is_valid(netif, idx) || (_is_tentative(netif, idx) &&
netif->pid); (gnrc_netif_ipv6_addr_dad_trans(netif, idx) < SIXLOWPAN_ND_REG_TRANSMIT_NUMOF))) {
}
else if (router_reachable &&
(_is_valid(netif, idx) || (_is_tentative(netif, idx) &&
(gnrc_netif_ipv6_addr_dad_trans(netif, idx) <
SIXLOWPAN_ND_REG_TRANSMIT_NUMOF)))) {
uint32_t retrans_time; uint32_t retrans_time;
if (_is_valid(netif, idx)) { if (_is_valid(netif, idx)) {
@ -234,10 +231,7 @@ void _handle_rereg_address(const ipv6_addr_t *addr)
_evtimer_add(&netif->ipv6.addrs[idx], GNRC_IPV6_NIB_REREG_ADDRESS, _evtimer_add(&netif->ipv6.addrs[idx], GNRC_IPV6_NIB_REREG_ADDRESS,
&netif->ipv6.addrs_timers[idx], retrans_time); &netif->ipv6.addrs_timers[idx], retrans_time);
} }
else { out:
netif->ipv6.rs_sent = 0;
_handle_search_rtr(netif);
}
gnrc_netif_release(netif); gnrc_netif_release(netif);
} }