Skip to content

Commit 4331ea1

Browse files
author
Mika Tervonen
committed
added support for multicast forwarding
To prefer correct address on multicast responses the ULA prefix needs to be removed from RPL when backbone becomes available
1 parent 7327652 commit 4331ea1

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

source/6LoWPAN/ws/ws_bbr_api.c

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ static void ws_bbr_rpl_root_start(uint8_t *dodag_id)
9494
uint8_t t_flags = PIO_A;
9595

9696
rpl_control_update_dodag_prefix(protocol_6lowpan_rpl_root_dodag, dodag_id, 64, t_flags, 0xffffffff, 0xffffffff, false);
97-
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, dodag_id, 64, 0, 0xffffffff, false);
97+
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, dodag_id, 64, 0x18, 0xffffffff, false);
9898
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, NULL, 0, 0, 0xffffffff, false);
9999
}
100100

@@ -147,7 +147,8 @@ static int ws_bbr_static_ula_create(protocol_interface_info_entry_t *cur)
147147
}
148148
tr_info("BBR generate ula prefix");
149149

150-
if_address_entry_t *add_entry = icmpv6_slaac_address_add(cur, static_dodag_prefix, 64, 0xffffffff, 0xffffffff, true, SLAAC_IID_FIXED);
150+
// This address is only used if no other address available.
151+
if_address_entry_t *add_entry = icmpv6_slaac_address_add(cur, static_dodag_prefix, 64, 0xffffffff, 0, true, SLAAC_IID_FIXED);
151152
if (!add_entry) {
152153
return -1;
153154
}
@@ -239,8 +240,10 @@ static void ws_bbr_rpl_status_check(protocol_interface_info_entry_t *cur)
239240
// TODO remove old global prefix
240241
tr_info("RPL GUA deactivate %s", trace_ipv6(global_dodag_id));
241242

242-
rpl_control_update_dodag_prefix(protocol_6lowpan_rpl_root_dodag, global_dodag_id, 64, 0, 7200, 0, false);
243-
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, global_dodag_id, 64, 0, 7200, false);
243+
rpl_control_update_dodag_prefix(protocol_6lowpan_rpl_root_dodag, static_dodag_id, 64, PIO_A, 7200, 7200, false);
244+
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, static_dodag_id, 64, 0x18, 7200, false);
245+
rpl_control_update_dodag_prefix(protocol_6lowpan_rpl_root_dodag, global_dodag_id, 64, 0, 7200, 0, true);
246+
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, global_dodag_id, 64, 0, 7200, true);
244247
ipv6_route_add_with_info(global_dodag_id, 64, backbone_interface_id, NULL, ROUTE_THREAD_BBR, NULL, 0, 7200, 0);
245248
}
246249
// TODO add global prefix
@@ -261,8 +264,10 @@ static void ws_bbr_rpl_status_check(protocol_interface_info_entry_t *cur)
261264
tr_info("RPL GUA activate %s", trace_ipv6(global_id));
262265
ws_dhcp_client_address_request(cur, global_id, ll);
263266

264-
rpl_control_update_dodag_prefix(protocol_6lowpan_rpl_root_dodag, global_id, 64, 0, 0xffffffff, 0xffffffff, false);
265-
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, global_id, 64, 0, 0xffffffff, false);
267+
rpl_control_update_dodag_prefix(protocol_6lowpan_rpl_root_dodag, static_dodag_id, 64, PIO_A, 7200, 0, false);
268+
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, static_dodag_id, 64, 0x18, 7200, false);
269+
rpl_control_update_dodag_prefix(protocol_6lowpan_rpl_root_dodag, global_id, 64, 0, 7200, 7200, false);
270+
rpl_control_update_dodag_route(protocol_6lowpan_rpl_root_dodag, global_id, 64, 0, 7200, false);
266271
ipv6_route_add_with_info(global_id, 64, backbone_interface_id, NULL, ROUTE_THREAD_BBR, NULL, 0, 0xffffffff, 0);
267272
}
268273
memcpy(global_dodag_id, global_id, 16);

source/RPL/rpl_downward.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,7 @@ void rpl_instance_send_address_registration(protocol_interface_info_entry_t *int
590590

591591
aro.status = ARO_SUCCESS;
592592
aro.present = true;
593-
aro.lifetime = addr->preferred_lifetime;
593+
aro.lifetime = addr->valid_lifetime;
594594
memcpy(aro.eui64, interface->mac, 8);
595595

596596
// go through neighbour list, and send to all assigned parents.

0 commit comments

Comments
 (0)