diff options
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/slaacd/engine.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sbin/slaacd/engine.c b/sbin/slaacd/engine.c index 734f1820f52..184b349f650 100644 --- a/sbin/slaacd/engine.c +++ b/sbin/slaacd/engine.c @@ -1,4 +1,4 @@ -/* $OpenBSD: engine.c,v 1.23 2018/03/13 13:57:07 florian Exp $ */ +/* $OpenBSD: engine.c,v 1.24 2018/04/23 13:49:04 florian Exp $ */ /* * Copyright (c) 2017 Florian Obser <florian@openbsd.org> @@ -2087,12 +2087,16 @@ address_proposal_timeout(int fd, short events, void *arg) log_debug("%s: removing address proposal", __func__); break; } - if (addr_proposal->privacy) - break; /* just let it expire */ engine_imsg_compose_frontend(IMSG_CTL_SEND_SOLICITATION, 0, &addr_proposal->if_index, sizeof(addr_proposal->if_index)); + + if (addr_proposal->privacy) { + addr_proposal->next_timeout = 0; + break; /* just let it expire */ + } + tv.tv_sec = addr_proposal->next_timeout; tv.tv_usec = arc4random_uniform(1000000); addr_proposal->next_timeout *= 2; |