Diff for /fwsync/driver/fwsync_mod.c between versions 1.5 and 1.6

version 1.5, 2022/08/04 00:24:39 version 1.6, 2022/08/10 00:03:50
Line 26  struct cfg_sync fws_cfg; Line 26  struct cfg_sync fws_cfg;
 struct task fws_sndpkt_task;  struct task fws_sndpkt_task;
 struct taskqueue *fws_tq;  struct taskqueue *fws_tq;
 struct callout fws_co;  struct callout fws_co;
struct mtx fws_mtx_c, fws_mtx_e;struct mtx fws_mtx_c, fws_mtx_e, fws_mtx_u;
fwsync_sndpkt_t fwsync_sndpktfwsync_sndpkt_t fwsync_sndpkt, fwsync_updpkt; 
   
 SYSCTL_NODE(_net_inet_ip, IFT_FWSYNC, fwsync, CTLFLAG_RW, 0, "IPFW Sync - Sync firewall states");  SYSCTL_NODE(_net_inet_ip, IFT_FWSYNC, fwsync, CTLFLAG_RW, 0, "IPFW Sync - Sync firewall states");
 SYSCTL_INT(_net_inet_ip_fwsync, OID_AUTO, debug, CTLFLAG_RW, &fwsync_debug, 0, "Debug driver");  SYSCTL_INT(_net_inet_ip_fwsync, OID_AUTO, debug, CTLFLAG_RW, &fwsync_debug, 0, "Debug driver");
Line 50  fws_fini(void *arg) Line 50  fws_fini(void *arg)
   
         IPFW_DEL_SOPT_HANDLER(1, soc);          IPFW_DEL_SOPT_HANDLER(1, soc);
   
        if (fws_tq)        callout_drain(&fws_co);
 
         if (fws_tq) {
                 taskqueue_drain_all(fws_tq);
                 taskqueue_free(fws_tq);                  taskqueue_free(fws_tq);
           }
   
           mtx_lock(&fws_mtx_u);
           while (!TAILQ_EMPTY(&fwsync_updpkt)) {
                   p = TAILQ_FIRST(&fwsync_updpkt);
                   TAILQ_REMOVE(&fwsync_updpkt, p, sp_next);
                   free(p, M_FWSYNC);
           }
           mtx_unlock(&fws_mtx_u);
   
         mtx_lock(&fws_mtx_c);          mtx_lock(&fws_mtx_c);
         while (!TAILQ_EMPTY(&fwsync_sndpkt)) {          while (!TAILQ_EMPTY(&fwsync_sndpkt)) {
                 p = TAILQ_FIRST(&fwsync_sndpkt);                  p = TAILQ_FIRST(&fwsync_sndpkt);
Line 61  fws_fini(void *arg) Line 73  fws_fini(void *arg)
         }          }
         mtx_unlock(&fws_mtx_c);          mtx_unlock(&fws_mtx_c);
   
         callout_drain(&fws_co);  
   
         mtx_destroy(&fws_mtx_c);          mtx_destroy(&fws_mtx_c);
         mtx_destroy(&fws_mtx_e);          mtx_destroy(&fws_mtx_e);
           mtx_destroy(&fws_mtx_u);
   
         fwsync_hooked = 0;          fwsync_hooked = 0;
   
Line 97  fws_init(void *arg) Line 108  fws_init(void *arg)
         memset(&fws_ctx, 0, sizeof fws_ctx);          memset(&fws_ctx, 0, sizeof fws_ctx);
   
         TAILQ_INIT(&fwsync_sndpkt);          TAILQ_INIT(&fwsync_sndpkt);
           TAILQ_INIT(&fwsync_updpkt);
   
         /* mutexes */          /* mutexes */
           mtx_init(&fws_mtx_u, "fwsync mtx update", NULL, MTX_DEF);
         mtx_init(&fws_mtx_e, "fwsync mtx edge", NULL, MTX_DEF);          mtx_init(&fws_mtx_e, "fwsync mtx edge", NULL, MTX_DEF);
         mtx_init(&fws_mtx_c, "fwsync mtx collector", NULL, MTX_DEF);          mtx_init(&fws_mtx_c, "fwsync mtx collector", NULL, MTX_DEF);
   
         /* taskqueue */          /* taskqueue */
         TASK_INIT(&fws_sndpkt_task, 0, fwsync_sndpkt_handler, &fwsync_sndpkt);  
   
         fws_tq = taskqueue_create("fwsync_tq", M_NOWAIT, taskqueue_thread_enqueue, &fws_tq);          fws_tq = taskqueue_create("fwsync_tq", M_NOWAIT, taskqueue_thread_enqueue, &fws_tq);
         if (!fws_tq) {          if (!fws_tq) {
                 printf("Failed to allocate fwsync task queue\n");                  printf("Failed to allocate fwsync task queue\n");
Line 113  fws_init(void *arg) Line 124  fws_init(void *arg)
                 return ENOMEM;                  return ENOMEM;
         } else          } else
                 taskqueue_start_threads(&fws_tq, 1, PI_NET, "fwsync tq");                  taskqueue_start_threads(&fws_tq, 1, PI_NET, "fwsync tq");
   
           TASK_INIT(&fws_sndpkt_task, 0, fwsync_sndpkt_handler, &fwsync_sndpkt);
   
         /* callout */          /* callout */
   

Removed from v.1.5  
changed lines
  Added in v.1.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>