Print this page
4851 IPsec should use NANOSEC & friends from time.h

*** 4217,4233 **** timeout_id_t sadb_retimeout(hrtime_t begin, queue_t *pfkey_q, void (*ager)(void *), void *agerarg, uint_t *intp, uint_t intmax, short mid) { hrtime_t end = gethrtime(); ! uint_t interval = *intp; /* * See how long this took. If it took too long, increase the * aging interval. */ ! if ((end - begin) > (hrtime_t)interval * (hrtime_t)1000000) { if (interval >= intmax) { /* XXX Rate limit this? Or recommend flush? */ (void) strlog(mid, 0, 0, SL_ERROR | SL_WARN, "Too many SA's to age out in %d msec.\n", intmax); --- 4217,4233 ---- timeout_id_t sadb_retimeout(hrtime_t begin, queue_t *pfkey_q, void (*ager)(void *), void *agerarg, uint_t *intp, uint_t intmax, short mid) { hrtime_t end = gethrtime(); ! uint_t interval = *intp; /* "interval" is in ms. */ /* * See how long this took. If it took too long, increase the * aging interval. */ ! if ((end - begin) > MSEC2NSEC(interval)) { if (interval >= intmax) { /* XXX Rate limit this? Or recommend flush? */ (void) strlog(mid, 0, 0, SL_ERROR | SL_WARN, "Too many SA's to age out in %d msec.\n", intmax);
*** 4234,4244 **** } else { /* Double by shifting by one bit. */ interval <<= 1; interval = min(interval, intmax); } ! } else if ((end - begin) <= (hrtime_t)interval * (hrtime_t)500000 && interval > SADB_AGE_INTERVAL_DEFAULT) { /* * If I took less than half of the interval, then I should * ratchet the interval back down. Never automatically * shift below the default aging interval. --- 4234,4244 ---- } else { /* Double by shifting by one bit. */ interval <<= 1; interval = min(interval, intmax); } ! } else if ((end - begin) <= (MSEC2NSEC(interval) / 2) && interval > SADB_AGE_INTERVAL_DEFAULT) { /* * If I took less than half of the interval, then I should * ratchet the interval back down. Never automatically * shift below the default aging interval.
*** 4253,4263 **** interval >>= 1; interval = max(interval, SADB_AGE_INTERVAL_DEFAULT); } *intp = interval; return (qtimeout(pfkey_q, ager, agerarg, ! drv_usectohz(interval * 1000))); } /* * Update the lifetime values of an SA. This is the path an SADB_UPDATE --- 4253,4263 ---- interval >>= 1; interval = max(interval, SADB_AGE_INTERVAL_DEFAULT); } *intp = interval; return (qtimeout(pfkey_q, ager, agerarg, ! drv_usectohz(interval * (MICROSEC / MILLISEC)))); } /* * Update the lifetime values of an SA. This is the path an SADB_UPDATE