diff --git a/src/dhcp6.c b/src/dhcp6.c index 0853664..3af747d 100644 --- a/src/dhcp6.c +++ b/src/dhcp6.c @@ -647,6 +647,13 @@ static int construct_worker(struct in6_addr *local, int prefix, is_same_net6(local, &template->start6, template->prefix) && is_same_net6(local, &template->end6, template->prefix)) { + /* First time found, do fast RA. */ + if (template->if_index != if_index || !IN6_ARE_ADDR_EQUAL(&template->local6, local)) + { + ra_start_unsolicited(param->now, template); + param->newone = 1; + } + template->if_index = if_index; template->local6 = *local; }