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

version 1.1, 2022/06/22 13:01:55 version 1.6, 2022/08/10 00:03:50
Line 24  struct cfg_sync fws_cfg; Line 24  struct cfg_sync fws_cfg;
 //static struct sysctl_oid *fws_sysctl_oid, *fws_sysctl_dir;  //static struct sysctl_oid *fws_sysctl_oid, *fws_sysctl_dir;
   
 struct task fws_sndpkt_task;  struct task fws_sndpkt_task;
   struct taskqueue *fws_tq;
   struct callout fws_co;
   struct mtx fws_mtx_c, fws_mtx_e, fws_mtx_u;
   fwsync_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 31  SYSCTL_INT(_net_inet_ip_fwsync, OID_AUTO, debug, CTLFL Line 35  SYSCTL_INT(_net_inet_ip_fwsync, OID_AUTO, debug, CTLFL
 static int  static int
 fws_fini(void *arg)  fws_fini(void *arg)
 {  {
           struct fws_sndpkt *p;
   
         DTRACE();          DTRACE();
   
         if (!fwsync_hooked)          if (!fwsync_hooked)
Line 44  fws_fini(void *arg) Line 50  fws_fini(void *arg)
   
         IPFW_DEL_SOPT_HANDLER(1, soc);          IPFW_DEL_SOPT_HANDLER(1, soc);
   
           callout_drain(&fws_co);
   
           if (fws_tq) {
                   taskqueue_drain_all(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);
           while (!TAILQ_EMPTY(&fwsync_sndpkt)) {
                   p = TAILQ_FIRST(&fwsync_sndpkt);
                   TAILQ_REMOVE(&fwsync_sndpkt, p, sp_next);
                   free(p, M_FWSYNC);
           }
           mtx_unlock(&fws_mtx_c);
   
           mtx_destroy(&fws_mtx_c);
           mtx_destroy(&fws_mtx_e);
           mtx_destroy(&fws_mtx_u);
   
         fwsync_hooked = 0;          fwsync_hooked = 0;
   
         /* sysctl context */          /* sysctl context */
Line 72  fws_init(void *arg) Line 105  fws_init(void *arg)
                 return 0;                  return 0;
   
         memset(&fws_cfg, 0, sizeof fws_cfg);          memset(&fws_cfg, 0, sizeof fws_cfg);
           memset(&fws_ctx, 0, sizeof fws_ctx);
   
           TAILQ_INIT(&fwsync_sndpkt);
           TAILQ_INIT(&fwsync_updpkt);
   
           /* 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_c, "fwsync mtx collector", NULL, MTX_DEF);
   
           /* taskqueue */
           fws_tq = taskqueue_create("fwsync_tq", M_NOWAIT, taskqueue_thread_enqueue, &fws_tq);
           if (!fws_tq) {
                   printf("Failed to allocate fwsync task queue\n");
                   mtx_destroy(&fws_mtx_c);
                   mtx_destroy(&fws_mtx_e);
                   return ENOMEM;
           } else
                   taskqueue_start_threads(&fws_tq, 1, PI_NET, "fwsync tq");
   
           TASK_INIT(&fws_sndpkt_task, 0, fwsync_sndpkt_handler, &fwsync_sndpkt);
   
           /* callout */
   
           callout_init_mtx(&fws_co, &fws_mtx_e, 0);
   
         /* sysctl context */          /* sysctl context */
         sysctl_ctx_init(&fwsync_sysctl_ctx);          sysctl_ctx_init(&fwsync_sysctl_ctx);
   
         IPFW_ADD_SOPT_HANDLER(1, soc);          IPFW_ADD_SOPT_HANDLER(1, soc);
   
         memset(&fws_ctx, 0, sizeof fws_ctx);  
   
         fwsync_hooked = 1;          fwsync_hooked = 1;
         uprintf("Loaded ELWIX %s driver version %d ...\n", DRV_NAME, DRV_VERSION);          uprintf("Loaded ELWIX %s driver version %d ...\n", DRV_NAME, DRV_VERSION);
         return 0;          return 0;
Line 119  static moduledata_t fwsync_mod = { Line 175  static moduledata_t fwsync_mod = {
 };  };
   
 DECLARE_MODULE(ipfw_sync, fwsync_mod, SI_SUB_PROTO_FIREWALL, SI_ORDER_ANY);  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_DEPEND(ipfw_sync, ipfw, 3, 3, 3);
 MODULE_VERSION(ipfw_sync, DRV_VERSION);  MODULE_VERSION(ipfw_sync, DRV_VERSION);
   

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


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