Skip to content

Commit c7235f8

Browse files
author
Juha Heiskanen
authored
Merge pull request ARMmbed#2062 from ARMmbed/ns_aro_fix
Ns aro fix
2 parents 4489dda + 7d88d7f commit c7235f8

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

source/6LoWPAN/ws/ws_bootstrap.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,14 @@ static void ws_bootstrap_address_notification_cb(struct protocol_interface_info_
163163
break;
164164
}
165165
}
166+
} else if (reason == ADDR_CALLBACK_TIMER) {
167+
tr_debug("Address Re registration %s", trace_ipv6(addr->address));
168+
169+
if (!interface->ws_info->address_registration_event_active) {
170+
interface->ws_info->address_registration_event_active = true;
171+
tr_info("Register ARO");
172+
ws_bootsrap_event_trig(WS_ADDRESS_ADDED, interface->bootStrapId, ARM_LIB_LOW_PRIORITY_EVENT, NULL);
173+
}
166174
} else {
167175
tr_debug("Address notification addr: %s reason: %d", trace_ipv6(addr->address), reason);
168176
}

source/Common_Protocols/icmpv6.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1432,7 +1432,7 @@ buffer_t *icmpv6_build_ns(protocol_interface_info_entry_t *cur, const uint8_t ta
14321432
buf->ack_receive_cb = rpl_control_address_register_done;
14331433
}
14341434
}
1435-
if (!aro && cur->ipv6_neighbour_cache.omit_na) {
1435+
if (unicast && (!aro && cur->ipv6_neighbour_cache.omit_na)) {
14361436
/*MAC ACK is processed as success response*/
14371437
buf->ack_receive_cb = ack_receive_cb;
14381438
}
@@ -1575,7 +1575,7 @@ buffer_t *icmpv6_build_na(protocol_interface_info_entry_t *cur, bool solicited,
15751575
return NULL;
15761576
}
15771577
/* All other than ARO NA messages are omitted and MAC ACK is considered as success */
1578-
if (!aro && cur->ipv6_neighbour_cache.omit_na) {
1578+
if (!tllao_required && (!aro && cur->ipv6_neighbour_cache.omit_na)) {
15791579
return NULL;
15801580
}
15811581

source/Core/ns_address_internal.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,7 @@ void addr_fast_timer(protocol_interface_info_entry_t *cur, uint_fast16_t ticks)
865865
}
866866
#endif
867867
} else {
868+
addr->addr_reg_done = 0;
868869
addr_cb(cur, addr, ADDR_CALLBACK_TIMER);
869870
}
870871

0 commit comments

Comments
 (0)