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

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/inet/ip/sadb.c
          +++ new/usr/src/uts/common/inet/ip/sadb.c
↓ open down ↓ 4211 lines elided ↑ open up ↑
4212 4212  }
4213 4213  
4214 4214  /*
4215 4215   * Figure out when to reschedule the ager.
4216 4216   */
4217 4217  timeout_id_t
4218 4218  sadb_retimeout(hrtime_t begin, queue_t *pfkey_q, void (*ager)(void *),
4219 4219      void *agerarg, uint_t *intp, uint_t intmax, short mid)
4220 4220  {
4221 4221          hrtime_t end = gethrtime();
4222      -        uint_t interval = *intp;
     4222 +        uint_t interval = *intp;        /* "interval" is in ms. */
4223 4223  
4224 4224          /*
4225 4225           * See how long this took.  If it took too long, increase the
4226 4226           * aging interval.
4227 4227           */
4228      -        if ((end - begin) > (hrtime_t)interval * (hrtime_t)1000000) {
     4228 +        if ((end - begin) > MSEC2NSEC(interval)) {
4229 4229                  if (interval >= intmax) {
4230 4230                          /* XXX Rate limit this?  Or recommend flush? */
4231 4231                          (void) strlog(mid, 0, 0, SL_ERROR | SL_WARN,
4232 4232                              "Too many SA's to age out in %d msec.\n",
4233 4233                              intmax);
4234 4234                  } else {
4235 4235                          /* Double by shifting by one bit. */
4236 4236                          interval <<= 1;
4237 4237                          interval = min(interval, intmax);
4238 4238                  }
4239      -        } else if ((end - begin) <= (hrtime_t)interval * (hrtime_t)500000 &&
     4239 +        } else if ((end - begin) <= (MSEC2NSEC(interval) / 2) &&
4240 4240              interval > SADB_AGE_INTERVAL_DEFAULT) {
4241 4241                  /*
4242 4242                   * If I took less than half of the interval, then I should
4243 4243                   * ratchet the interval back down.  Never automatically
4244 4244                   * shift below the default aging interval.
4245 4245                   *
4246 4246                   * NOTE:This even overrides manual setting of the age
4247 4247                   *      interval using NDD to lower the setting past the
4248 4248                   *      default.  In other words, if you set the interval
4249 4249                   *      lower than the default, and your SADB gets too big,
4250 4250                   *      the interval will only self-lower back to the default.
4251 4251                   */
4252 4252                  /* Halve by shifting one bit. */
4253 4253                  interval >>= 1;
4254 4254                  interval = max(interval, SADB_AGE_INTERVAL_DEFAULT);
4255 4255          }
4256 4256          *intp = interval;
4257 4257          return (qtimeout(pfkey_q, ager, agerarg,
4258      -            drv_usectohz(interval * 1000)));
     4258 +            drv_usectohz(interval * (MICROSEC / MILLISEC))));
4259 4259  }
4260 4260  
4261 4261  
4262 4262  /*
4263 4263   * Update the lifetime values of an SA.  This is the path an SADB_UPDATE
4264 4264   * message takes when updating a MATURE or DYING SA.
4265 4265   */
4266 4266  static void
4267 4267  sadb_update_lifetimes(ipsa_t *assoc, sadb_lifetime_t *hard,
4268 4268      sadb_lifetime_t *soft, sadb_lifetime_t *idle, boolean_t outbound)
↓ open down ↓ 3579 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX