--- //depot/vendor/freebsd/src/sys/netipsec/key.c +++ //depot/user/jhb/cleanup/sys/netipsec/key.c @@ -410,6 +410,10 @@ int extlen[SADB_EXT_MAX + 1]; }; +#ifndef IPSEC_DEBUG2 +static struct callout key_timer; +#endif + static struct secasvar *key_allocsa_policy __P((const struct secasindex *)); static void key_freesp_so __P((struct secpolicy **)); static struct secasvar *key_do_allocsa_policy __P((struct secashead *, u_int)); @@ -4526,7 +4530,7 @@ * XXX: year 2038 problem may remain. */ void -key_timehandler(void) +key_timehandler(void *arg) { VNET_ITERATOR_DECL(vnet_iter); time_t now = time_second; @@ -4544,7 +4548,7 @@ #ifndef IPSEC_DEBUG2 /* do exchange to tick time !! */ - (void)timeout((void *)key_timehandler, (void *)0, hz); + callout_schedule(&key_timer, hz); #endif /* IPSEC_DEBUG2 */ } @@ -7769,7 +7773,8 @@ SPACQ_LOCK_INIT(); #ifndef IPSEC_DEBUG2 - timeout((void *)key_timehandler, (void *)0, hz); + callout_init(&key_timer, CALLOUT_MPSAFE); + callout_reset(&key_timer, hz, key_timehandler, NULL); #endif /*IPSEC_DEBUG2*/ /* initialize key statistics */ --- //depot/vendor/freebsd/src/sys/netipsec/key.h +++ //depot/user/jhb/cleanup/sys/netipsec/key.h @@ -97,7 +97,7 @@ extern struct mbuf *key_sp2msg __P((struct secpolicy *)); extern int key_ismyaddr __P((struct sockaddr *)); extern int key_spdacquire __P((struct secpolicy *)); -extern void key_timehandler __P((void)); +extern void key_timehandler __P((void *)); extern u_long key_random __P((void)); extern void key_randomfill __P((void *, size_t)); extern void key_freereg __P((struct socket *));