1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-25 22:43:50 +01:00

gnrc/ipv6_auto_subnets: auto init RPL root

This commit is contained in:
Benjamin Valentin 2021-12-07 14:53:51 +01:00 committed by Benjamin Valentin
parent 878596d393
commit 3993fd75d0

View File

@ -70,6 +70,7 @@
#include "net/gnrc/udp.h"
#include "net/gnrc/ipv6/nib.h"
#include "net/gnrc/ndp.h"
#include "net/gnrc/rpl.h"
#include "random.h"
#include "xtimer.h"
@ -286,6 +287,7 @@ static void _configure_subnets(uint8_t subnets, uint8_t start_idx, gnrc_netif_t
while ((downstream = gnrc_netif_iter(downstream))) {
gnrc_pktsnip_t *tmp;
ipv6_addr_t new_prefix;
int idx;
if (downstream == upstream) {
continue;
@ -302,8 +304,8 @@ static void _configure_subnets(uint8_t subnets, uint8_t start_idx, gnrc_netif_t
_remove_old_prefix(downstream, &new_prefix, new_prefix_len, &ext_opts);
/* configure subnet on downstream interface */
gnrc_netif_ipv6_add_prefix(downstream, &new_prefix, new_prefix_len,
valid_ltime, pref_ltime);
idx = gnrc_netif_ipv6_add_prefix(downstream, &new_prefix, new_prefix_len,
valid_ltime, pref_ltime);
/* start advertising subnet */
gnrc_ipv6_nib_change_rtr_adv_iface(downstream, true);
@ -316,6 +318,11 @@ static void _configure_subnets(uint8_t subnets, uint8_t start_idx, gnrc_netif_t
} else {
ext_opts = tmp;
}
/* configure RPL root if applicable */
if (idx >= 0) {
gnrc_rpl_configure_root(downstream, &downstream->ipv6.addrs[idx]);
}
}
/* immediately send an RA with RIO */