Skip to content

Commit 2804bf4

Browse files
author
Mika Tervonen
committed
Enabled roaming and routing between multiple Wi-SUN BR
Send NA to backbone when new devices join to flush caches of other BR Use autonomous addressing to make devices to have non conflicting address Set specific lifetime for DHCP addresses to notice device roaming or loss
1 parent 3d2f391 commit 2804bf4

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

source/6LoWPAN/ws/ws_bbr_api.c

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,31 @@ static int ws_bbr_dodag_get(protocol_interface_info_entry_t *cur, uint8_t *stati
216216
memcpy(dodag_id_ptr, global_address, 16);
217217
return 0;
218218
}
219+
static void wisun_bbr_na_send(int8_t interface_id, const uint8_t target[static 16])
220+
{
221+
protocol_interface_info_entry_t *cur = protocol_stack_interface_info_get_by_id(interface_id);
222+
if (!cur) {
223+
return;
224+
}
225+
226+
buffer_t *buffer = icmpv6_build_na(cur, false, true, true, target, NULL, ADDR_UNSPECIFIED);
227+
protocol_push(buffer);
228+
return;
229+
230+
}
231+
232+
static bool wisun_dhcp_address_add_cb(int8_t interfaceId, dhcp_address_cache_update_t *address_info, void *route_src)
233+
{
234+
(void)route_src;
235+
protocol_interface_info_entry_t *curPtr = protocol_stack_interface_info_get_by_id(interfaceId);
236+
if (!curPtr) {
237+
return false;
238+
}
239+
240+
// When address is allocated we send NA to backbone to notify the new address and flush from other BBRs
241+
wisun_bbr_na_send(backbone_interface_id, address_info->allocatedAddress);
242+
return true;
243+
}
219244

220245

221246
static void ws_bbr_rpl_status_check(protocol_interface_info_entry_t *cur)
@@ -264,8 +289,11 @@ static void ws_bbr_rpl_status_check(protocol_interface_info_entry_t *cur)
264289
tr_error("DHCPv6 Server create fail");
265290
return;
266291
}
292+
DHCPv6_server_service_callback_set(cur->id, global_id, NULL, wisun_dhcp_address_add_cb);
293+
294+
DHCPv6_server_service_set_address_autonous_flag(cur->id, global_id, true);
295+
DHCPv6_server_service_set_address_validlifetime(cur->id, global_id, 7200);
267296

268-
DHCPv6_server_service_set_address_autonous_flag(cur->id, global_id, false);
269297
tr_info("RPL GUA activate %s", trace_ipv6(global_id));
270298
ws_dhcp_client_address_request(cur, global_id, ll);
271299

0 commit comments

Comments
 (0)