summaryrefslogtreecommitdiffstats
path: root/usr.sbin/rarpd
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2010-12-06 09:37:56 +0000
committerglebius <glebius@FreeBSD.org>2010-12-06 09:37:56 +0000
commit4d4fc1fa3d63b3be90d7373c28a9f0a18be949ae (patch)
treeed3a4bd8b6165674155f0c41454cfe2c17d3ebd6 /usr.sbin/rarpd
parent6664a6800aec6986163dafe4b247d1a781065579 (diff)
downloadFreeBSD-src-4d4fc1fa3d63b3be90d7373c28a9f0a18be949ae.zip
FreeBSD-src-4d4fc1fa3d63b3be90d7373c28a9f0a18be949ae.tar.gz
Catch up with kernel using time_uptime to drive ARP timeouts.
Noticed by: jilles
Diffstat (limited to 'usr.sbin/rarpd')
-rw-r--r--usr.sbin/rarpd/rarpd.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/usr.sbin/rarpd/rarpd.c b/usr.sbin/rarpd/rarpd.c
index a500dd5..66055f3 100644
--- a/usr.sbin/rarpd/rarpd.c
+++ b/usr.sbin/rarpd/rarpd.c
@@ -666,6 +666,7 @@ struct {
static void
update_arptab(u_char *ep, in_addr_t ipaddr)
{
+ struct timespec tp;
int cc;
struct sockaddr_inarp *ar, *ar2;
struct sockaddr_dl *ll, *ll2;
@@ -731,7 +732,8 @@ update_arptab(u_char *ep, in_addr_t ipaddr)
rt->rtm_version = RTM_VERSION;
rt->rtm_addrs = RTA_DST | RTA_GATEWAY;
rt->rtm_inits = RTV_EXPIRE;
- rt->rtm_rmx.rmx_expire = time(0) + ARPSECS;
+ clock_gettime(CLOCK_MONOTONIC, &tp);
+ rt->rtm_rmx.rmx_expire = tp.tv_sec + ARPSECS;
rt->rtm_flags = RTF_HOST | RTF_STATIC;
rt->rtm_type = RTM_ADD;
rt->rtm_seq = ++seq;
OpenPOWER on IntegriCloud