diff --git a/sys/netpfil/ipfw/ip_dn_io.c b/sys/netpfil/ipfw/ip_dn_io.c --- a/sys/netpfil/ipfw/ip_dn_io.c +++ b/sys/netpfil/ipfw/ip_dn_io.c @@ -669,6 +669,11 @@ memset(&q, 0, sizeof(struct mq)); CURVNET_SET(vnet_iter); + if (! V_dn_cfg.init_done) { + CURVNET_RESTORE(); + continue; + } + DN_BH_WLOCK(); /* Update number of lost(coalesced) ticks. */ diff --git a/sys/netpfil/ipfw/ip_dummynet.c b/sys/netpfil/ipfw/ip_dummynet.c --- a/sys/netpfil/ipfw/ip_dummynet.c +++ b/sys/netpfil/ipfw/ip_dummynet.c @@ -2562,7 +2562,7 @@ { if (V_dn_cfg.init_done) return; - V_dn_cfg.init_done = 1; + /* Set defaults here. MSVC does not accept initializers, * and this is also useful for vimages */ @@ -2601,6 +2601,8 @@ /* Initialize curr_time adjustment mechanics. */ getmicrouptime(&V_dn_cfg.prev_t); + + V_dn_cfg.init_done = 1; } static void