@@ -196,7 +196,6 @@ void _handle_rereg_address(const ipv6_addr_t *addr)
196196 _nib_dr_entry_t * router = _nib_drl_get (NULL , netif -> pid );
197197 const bool router_reachable = (router != NULL ) &&
198198 _is_reachable (router -> next_hop );
199-
200199 if (router_reachable ) {
201200 assert ((unsigned )netif -> pid == _nib_onl_get_if (router -> next_hop ));
202201 DEBUG ("nib: Re-registering %s" ,
@@ -209,18 +208,16 @@ void _handle_rereg_address(const ipv6_addr_t *addr)
209208 else {
210209 DEBUG ("nib: Couldn't re-register %s, no current router found.\n" ,
211210 ipv6_addr_to_str (addr_str , addr , sizeof (addr_str )));
211+ netif -> ipv6 .rs_sent = 0 ;
212+ _handle_search_rtr (netif );
213+ goto out ;
212214 }
213215
214216 int idx = gnrc_netif_ipv6_addr_idx (netif , addr );
215- if (idx < 0 ) {
216- DEBUG ("nib: %s is not assigned to interface %d anymore.\n" ,
217- ipv6_addr_to_str (addr_str , addr , sizeof (addr_str )),
218- netif -> pid );
219- }
220- else if (router_reachable &&
221- (_is_valid (netif , idx ) || (_is_tentative (netif , idx ) &&
222- (gnrc_netif_ipv6_addr_dad_trans (netif , idx ) <
223- SIXLOWPAN_ND_REG_TRANSMIT_NUMOF )))) {
217+ assert (idx >= 0 );
218+
219+ if (_is_valid (netif , idx ) || (_is_tentative (netif , idx ) &&
220+ (gnrc_netif_ipv6_addr_dad_trans (netif , idx ) < SIXLOWPAN_ND_REG_TRANSMIT_NUMOF ))) {
224221 uint32_t retrans_time ;
225222
226223 if (_is_valid (netif , idx )) {
@@ -234,10 +231,7 @@ void _handle_rereg_address(const ipv6_addr_t *addr)
234231 _evtimer_add (& netif -> ipv6 .addrs [idx ], GNRC_IPV6_NIB_REREG_ADDRESS ,
235232 & netif -> ipv6 .addrs_timers [idx ], retrans_time );
236233 }
237- else {
238- netif -> ipv6 .rs_sent = 0 ;
239- _handle_search_rtr (netif );
240- }
234+ out :
241235 gnrc_netif_release (netif );
242236}
243237
0 commit comments