--- fwsync/driver/fwsync_mod.c 2022/07/11 12:58:58 1.3 +++ fwsync/driver/fwsync_mod.c 2022/08/04 00:24:39 1.5 @@ -25,6 +25,7 @@ struct cfg_sync fws_cfg; struct task fws_sndpkt_task; struct taskqueue *fws_tq; +struct callout fws_co; struct mtx fws_mtx_c, fws_mtx_e; fwsync_sndpkt_t fwsync_sndpkt; @@ -60,6 +61,8 @@ fws_fini(void *arg) } mtx_unlock(&fws_mtx_c); + callout_drain(&fws_co); + mtx_destroy(&fws_mtx_c); mtx_destroy(&fws_mtx_e); @@ -111,6 +114,10 @@ fws_init(void *arg) } else taskqueue_start_threads(&fws_tq, 1, PI_NET, "fwsync tq"); + /* callout */ + + callout_init_mtx(&fws_co, &fws_mtx_e, 0); + /* sysctl context */ sysctl_ctx_init(&fwsync_sysctl_ctx); @@ -155,6 +162,7 @@ static moduledata_t fwsync_mod = { }; DECLARE_MODULE(ipfw_sync, fwsync_mod, SI_SUB_PROTO_FIREWALL, SI_ORDER_ANY); +MODULE_DEPEND(ipfw_sync, libalias, 1, 1, 1); MODULE_DEPEND(ipfw_sync, ipfw, 3, 3, 3); MODULE_VERSION(ipfw_sync, DRV_VERSION);