summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2010-11-30 15:57:00 +0000
committerglebius <glebius@FreeBSD.org>2010-11-30 15:57:00 +0000
commitbdd7d886f9757dc70bd9cac6002e46fab564d587 (patch)
tree8517ada49ac20c31d7eac89a89b485be46414507 /sys/netinet
parent5b6b615a821bda72e166a8931463117f5f288973 (diff)
downloadFreeBSD-src-bdd7d886f9757dc70bd9cac6002e46fab564d587.zip
FreeBSD-src-bdd7d886f9757dc70bd9cac6002e46fab564d587.tar.gz
Use time_uptime instead of non-monotonic time_second to drive ARP
timeouts. Suggested by: bde
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/if_ether.c10
-rw-r--r--sys/netinet/in.c2
2 files changed, 6 insertions, 6 deletions
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c
index ee5d8e0..df05c04 100644
--- a/sys/netinet/if_ether.c
+++ b/sys/netinet/if_ether.c
@@ -323,7 +323,7 @@ retry:
}
if ((la->la_flags & LLE_VALID) &&
- ((la->la_flags & LLE_STATIC) || la->la_expire > time_second)) {
+ ((la->la_flags & LLE_STATIC) || la->la_expire > time_uptime)) {
bcopy(&la->ll_addr, desten, ifp->if_addrlen);
/*
* If entry has an expiry time and it is approaching,
@@ -331,7 +331,7 @@ retry:
* arpt_down interval.
*/
if (!(la->la_flags & LLE_STATIC) &&
- time_second + la->la_preempt > la->la_expire) {
+ time_uptime + la->la_preempt > la->la_expire) {
arprequest(ifp, NULL,
&SIN(dst)->sin_addr, IF_LLADDR(ifp));
@@ -351,7 +351,7 @@ retry:
goto done;
}
- renew = (la->la_asked == 0 || la->la_expire != time_second);
+ renew = (la->la_asked == 0 || la->la_expire != time_uptime);
if ((renew || m != NULL) && (flags & LLE_EXCLUSIVE) == 0) {
flags |= LLE_EXCLUSIVE;
LLE_RUNLOCK(la);
@@ -403,7 +403,7 @@ retry:
int canceled;
LLE_ADDREF(la);
- la->la_expire = time_second;
+ la->la_expire = time_uptime;
canceled = callout_reset(&la->la_timer, hz * V_arpt_down,
arptimer, la);
if (canceled)
@@ -713,7 +713,7 @@ match:
int canceled;
LLE_ADDREF(la);
- la->la_expire = time_second + V_arpt_keep;
+ la->la_expire = time_uptime + V_arpt_keep;
canceled = callout_reset(&la->la_timer,
hz * V_arpt_keep, arptimer, la);
if (canceled)
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index 2ec54e2..d8c71f1 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -1333,7 +1333,7 @@ in_lltable_new(const struct sockaddr *l3addr, u_int flags)
* For IPv4 this will trigger "arpresolve" to generate
* an ARP request.
*/
- lle->base.la_expire = time_second; /* mark expired */
+ lle->base.la_expire = time_uptime; /* mark expired */
lle->l3_addr4 = *(const struct sockaddr_in *)l3addr;
lle->base.lle_refcnt = 1;
LLE_LOCK_INIT(&lle->base);
OpenPOWER on IntegriCloud