Mercurial > hg > dhcpcd
changeset 4933:1f01a0b47244 draft
ARP: Use milliseconds rather than timespec for retransmission
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Sat, 04 Jan 2020 07:14:47 +0000 |
| parents | 8e1948e75f39 |
| children | 64d2e5e77cc3 |
| files | src/arp.c |
| diffstat | 1 files changed, 8 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/arp.c Sat Jan 04 06:54:23 2020 +0000 +++ b/src/arp.c Sat Jan 04 07:14:47 2020 +0000 @@ -383,23 +383,21 @@ { struct arp_state *astate = arg; struct interface *ifp = astate->iface; - struct timespec tv; + unsigned int delay; if (++astate->probes < PROBE_NUM) { - tv.tv_sec = PROBE_MIN; - tv.tv_nsec = (suseconds_t)arc4random_uniform( - (PROBE_MAX - PROBE_MIN) * NSEC_PER_SEC); - timespecnorm(&tv); - eloop_timeout_add_tv(ifp->ctx->eloop, &tv, arp_probe1, astate); + delay = (PROBE_MIN * MSEC_PER_SEC) + + (arc4random_uniform( + (PROBE_MAX - PROBE_MIN) * MSEC_PER_SEC)); + eloop_timeout_add_msec(ifp->ctx->eloop, delay, arp_probe1, astate); } else { - tv.tv_sec = ANNOUNCE_WAIT; - tv.tv_nsec = 0; - eloop_timeout_add_tv(ifp->ctx->eloop, &tv, arp_probed, astate); + delay = ANNOUNCE_WAIT * MSEC_PER_SEC; + eloop_timeout_add_msec(ifp->ctx->eloop, delay, arp_probed, astate); } logdebugx("%s: ARP probing %s (%d of %d), next in %0.1f seconds", ifp->name, inet_ntoa(astate->addr), astate->probes ? astate->probes : PROBE_NUM, PROBE_NUM, - timespec_to_double(&tv)); + (float)delay / MSEC_PER_SEC); if (arp_request(ifp, NULL, &astate->addr) == -1) logerr(__func__); }
