Author: melifaro
Date: Mon Apr 27 09:16:22 2015
New Revision: 282081
URL: https://svnweb.freebsd.org/changeset/base/282081

Log:
  Use free_nat_instance() for nat instance deletion.
  
  Sponsored by: Yandex LLC

Modified:
  head/sys/netpfil/ipfw/ip_fw_nat.c

Modified: head/sys/netpfil/ipfw/ip_fw_nat.c
==============================================================================
--- head/sys/netpfil/ipfw/ip_fw_nat.c   Mon Apr 27 09:15:36 2015        
(r282080)
+++ head/sys/netpfil/ipfw/ip_fw_nat.c   Mon Apr 27 09:16:22 2015        
(r282081)
@@ -265,6 +265,16 @@ add_redir_spool_cfg(char *buf, struct cf
        return (0);
 }
 
+static void
+free_nat_instance(struct cfg_nat *ptr)
+{
+
+       del_redir_spool_cfg(ptr, &ptr->redir_chain);
+       LibAliasUninit(ptr->lib);
+       free(ptr, M_IPFW);
+}
+
+
 /*
  * ipfw_nat - perform mbuf header translation.
  *
@@ -538,7 +548,7 @@ nat44_config(struct ip_fw_chain *chain, 
        IPFW_UH_WUNLOCK(chain);
 
        if (tcfg != NULL)
-               free(tcfg, M_IPFW);
+               free_nat_instance(ptr);
 }
 
 /*
@@ -628,9 +638,7 @@ nat44_destroy(struct ip_fw_chain *chain,
        IPFW_WUNLOCK(chain);
        IPFW_UH_WUNLOCK(chain);
 
-       del_redir_spool_cfg(ptr, &ptr->redir_chain);
-       LibAliasUninit(ptr->lib);
-       free(ptr, M_IPFW);
+       free_nat_instance(ptr);
 
        return (0);
 }
@@ -996,9 +1004,7 @@ ipfw_nat_del(struct sockopt *sopt)
        flush_nat_ptrs(chain, i);
        IPFW_WUNLOCK(chain);
        IPFW_UH_WUNLOCK(chain);
-       del_redir_spool_cfg(ptr, &ptr->redir_chain);
-       LibAliasUninit(ptr->lib);
-       free(ptr, M_IPFW);
+       free_nat_instance(ptr);
        return (0);
 }
 
@@ -1141,9 +1147,7 @@ vnet_ipfw_nat_uninit(const void *arg __u
        IPFW_WLOCK(chain);
        LIST_FOREACH_SAFE(ptr, &chain->nat, _next, ptr_temp) {
                LIST_REMOVE(ptr, _next);
-               del_redir_spool_cfg(ptr, &ptr->redir_chain);
-               LibAliasUninit(ptr->lib);
-               free(ptr, M_IPFW);
+               free_nat_instance(ptr);
        }
        flush_nat_ptrs(chain, -1 /* flush all */);
        V_ipfw_nat_ready = 0;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to