From: Roy Marples Date: Sat, 4 Jan 2020 07:14:47 +0000 (+0000) Subject: ARP: Use milliseconds rather than timespec for retransmission X-Git-Tag: v9.0.0~146 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf45767fe07cda0b749690342b218428c8603747;p=thirdparty%2Fdhcpcd.git ARP: Use milliseconds rather than timespec for retransmission --- diff --git a/src/arp.c b/src/arp.c index 8589cef3..32d59665 100644 --- a/src/arp.c +++ b/src/arp.c @@ -383,23 +383,21 @@ arp_probe1(void *arg) { 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__); }