Skip to content

Commit fe9ba3b

Browse files
author
Juha Heiskanen
committed
Wi-sun border router enable global prefix with DHCP address allocation.
1 parent 6d2af0b commit fe9ba3b

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

source/6LoWPAN/ws/ws_bbr_api.c

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
#include "net_rpl.h"
3535
#include "Service_Libs/nd_proxy/nd_proxy.h"
3636
#include "6LoWPAN/ws/ws_bbr_api_internal.h"
37+
#include "libDHCPv6/libDHCPv6.h"
38+
#include "DHCPv6_Server/DHCPv6_server_service.h"
3739

3840
#define TRACE_GROUP "wsbs"
3941

@@ -237,22 +239,30 @@ static void ws_bbr_rpl_status_check(protocol_interface_info_entry_t *cur)
237239
if (memcmp(global_dodag_id, ADDR_UNSPECIFIED,16) != 0) {
238240
// TODO remove old global prefix
239241
tr_info("RPL GUA deactivate %s", trace_ipv6(global_dodag_id));
240-
addr_delete_matching(cur, global_dodag_id, 64, ADDR_SOURCE_SLAAC);
241242

242243
rpl_control_update_dodag_prefix(protocol_6lowpan_rpl_root_dodag, global_dodag_id, 64, 0, 7200, 0, false);
243244
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, global_dodag_id, 64, 0, 7200, false);
244245
ipv6_route_add_with_info(global_dodag_id, 64, backbone_interface_id, NULL, ROUTE_THREAD_BBR, NULL, 0, 7200, 0);
245246
}
246247
// TODO add global prefix
247248
if (memcmp(global_id, ADDR_UNSPECIFIED,16) != 0) {
248-
// TODO Add new prefix
249-
tr_info("RPL GUA activate %s", trace_ipv6(global_id));
250-
if_address_entry_t *add_entry = icmpv6_slaac_address_add(cur, global_id, 64, 0xffffffff, 0xffffffff, true, SLAAC_IID_OPAQUE);
251-
if (!add_entry) {
249+
//DHCPv6 Server set here
250+
//Interface LL64 address
251+
uint8_t ll[16];
252+
memcpy(ll, ADDR_LINK_LOCAL_PREFIX, 8);
253+
memcpy(&ll[8], cur->mac, 8);
254+
ll[8] ^= 2;
255+
256+
if (DHCPv6_server_service_init(cur->id, global_id, cur->mac, DHCPV6_DUID_HARDWARE_EUI64_TYPE) != 0) {
257+
tr_error("DHCPv6 Server create fail");
252258
return;
253259
}
254260

255-
rpl_control_update_dodag_prefix(protocol_6lowpan_rpl_root_dodag, global_id, 64, PIO_A, 0xffffffff, 0xffffffff, false);
261+
DHCPv6_server_service_set_address_autonous_flag(cur->id, global_id, false);
262+
tr_info("RPL GUA activate %s", trace_ipv6(global_id));
263+
ws_dhcp_client_address_request(cur, global_id, ll);
264+
265+
rpl_control_update_dodag_prefix(protocol_6lowpan_rpl_root_dodag, global_id, 64, 0, 0xffffffff, 0xffffffff, false);
256266
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, global_id, 64, 0, 0xffffffff, false);
257267
ipv6_route_add_with_info(global_id, 64, backbone_interface_id, NULL, ROUTE_THREAD_BBR, NULL, 0, 0xffffffff, 0);
258268
}

0 commit comments

Comments
 (0)