Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Jun 2012 11:24:04 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r236556 - projects/pf/head/sys/contrib/pf/net
Message-ID:  <201206041124.q54BO4Wq038414@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Mon Jun  4 11:24:03 2012
New Revision: 236556
URL: http://svn.freebsd.org/changeset/base/236556

Log:
  Rules and pool addresses are allocated during configuration only,
  no reason for separate uma(9) zones.

Modified:
  projects/pf/head/sys/contrib/pf/net/pf.c
  projects/pf/head/sys/contrib/pf/net/pf_ioctl.c
  projects/pf/head/sys/contrib/pf/net/pfvar.h

Modified: projects/pf/head/sys/contrib/pf/net/pf.c
==============================================================================
--- projects/pf/head/sys/contrib/pf/net/pf.c	Mon Jun  4 10:42:09 2012	(r236555)
+++ projects/pf/head/sys/contrib/pf/net/pf.c	Mon Jun  4 11:24:03 2012	(r236556)
@@ -191,8 +191,6 @@ VNET_DEFINE(struct pf_rulequeue, pf_unli
 struct mtx pf_unlnkdrules_mtx;
 
 VNET_DEFINE(uma_zone_t,	 pf_sources_z);
-VNET_DEFINE(uma_zone_t,	 pf_rule_z);
-VNET_DEFINE(uma_zone_t,	 pf_pooladdr_z);
 VNET_DEFINE(uma_zone_t,	 pf_state_z);
 VNET_DEFINE(uma_zone_t,	 pf_state_key_z);
 
@@ -718,11 +716,6 @@ pf_initialize()
 	mtx_init(&pf_unlnkdrules_mtx, "pf unlinked rules", NULL, MTX_DEF);
 
 	/* XXXGL: sort this out */
-	V_pf_rule_z = uma_zcreate("pf rules", sizeof(struct pf_rule),
-	    NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0);
-	V_pf_pooladdr_z = uma_zcreate("pf pool addresses",
-	    sizeof(struct pf_pooladdr), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR,
-	    0);
 	V_pfr_ktable_z = uma_zcreate("pf tables",
 	    sizeof(struct pfr_ktable), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR,
 	    0);
@@ -770,10 +763,8 @@ pf_cleanup()
 	mtx_destroy(&pf_unlnkdrules_mtx);
 
 	uma_zdestroy(V_pf_sources_z);
-	uma_zdestroy(V_pf_rule_z);
 	uma_zdestroy(V_pf_state_z);
 	uma_zdestroy(V_pf_state_key_z);
-	uma_zdestroy(V_pf_pooladdr_z);
 	uma_zdestroy(V_pfr_ktable_z);
 	uma_zdestroy(V_pfr_kentry_z);
 }

Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c
==============================================================================
--- projects/pf/head/sys/contrib/pf/net/pf_ioctl.c	Mon Jun  4 10:42:09 2012	(r236555)
+++ projects/pf/head/sys/contrib/pf/net/pf_ioctl.c	Mon Jun  4 11:24:03 2012	(r236556)
@@ -159,6 +159,7 @@ VNET_DEFINE(struct pf_tags, pf_tags);
 VNET_DEFINE(struct pf_tags, pf_qids);
 static MALLOC_DEFINE(M_PFTAG, "pf(4) tag", "pf(4) tag names");
 static MALLOC_DEFINE(M_PFALTQ, "pf(4) altq", "pf(4) altq configuration db");
+static MALLOC_DEFINE(M_PFRULE, "pf(4) rules", "pf(4) rules");
 
 #if (PF_QNAME_SIZE != PF_TAG_NAME_SIZE)
 #error PF_QNAME_SIZE must be equal to PF_TAG_NAME_SIZE
@@ -381,7 +382,7 @@ pf_empty_pool(struct pf_palist *poola)
 		if (pa->kif)
 			pfi_kif_unref(pa->kif);
 		TAILQ_REMOVE(poola, pa, entries);
-		uma_zfree(V_pf_pooladdr_z, pa);
+		free(pa, M_PFRULE);
 	}
 }
 
@@ -436,7 +437,7 @@ pf_free_rule(struct pf_rule *rule)
 		pfi_kif_unref(rule->kif);
 	pf_anchor_remove(rule);
 	pf_empty_pool(&rule->rpool.list);
-	uma_zfree(V_pf_rule_z, rule);
+	free(rule, M_PFRULE);
 }
 
 static u_int16_t
@@ -1185,7 +1186,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca
 		}
 #endif /* INET6 */
 
-		rule = uma_zalloc(V_pf_rule_z, M_WAITOK);
+		rule = malloc(sizeof(*rule), M_PFRULE, M_WAITOK);
 		bcopy(&pr->rule, rule, sizeof(struct pf_rule));
 		if (rule->ifname[0])
 			kif = malloc(sizeof(*kif), PFI_MTYPE, M_WAITOK);
@@ -1307,7 +1308,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca
 #undef ERROUT
 DIOCADDRULE_error:
 		PF_RULES_WUNLOCK();
-		uma_zfree(V_pf_rule_z, rule);
+		free(rule, M_PFRULE);
 		if (kif)
 			free(kif, PFI_MTYPE);
 		break;
@@ -1434,7 +1435,7 @@ DIOCADDRULE_error:
 				break;
 			}
 #endif /* INET6 */
-			newrule = uma_zalloc(V_pf_rule_z, M_WAITOK);
+			newrule = malloc(sizeof(*newrule), M_PFRULE, M_WAITOK);
 			bcopy(&pcr->rule, newrule, sizeof(struct pf_rule));
 			newrule->cuid = td->td_ucred->cr_ruid;
 			newrule->cpid = td->td_proc ? td->td_proc->p_pid : 0;
@@ -1615,7 +1616,7 @@ DIOCADDRULE_error:
 DIOCCHANGERULE_error:
 		PF_RULES_WUNLOCK();
 		if (newrule != NULL)
-			uma_zfree(V_pf_rule_z, newrule);
+			free(newrule, M_PFRULE);
 		if (kif != NULL)
 			free(kif, PFI_MTYPE);
 		break;
@@ -2208,16 +2209,16 @@ DIOCGETSTATES_full:
 			error = EINVAL;
 			break;
 		}
-		pa = uma_zalloc(V_pf_pooladdr_z, M_WAITOK);
+		pa = malloc(sizeof(*pa), M_PFRULE, M_WAITOK);
 		bcopy(&pp->addr, pa, sizeof(struct pf_pooladdr));
 		if (pa->ifname[0])
 			kif = malloc(sizeof(*kif), PFI_MTYPE, M_WAITOK);
 		PF_RULES_WLOCK();
 		if (pp->ticket != V_ticket_pabuf) {
 			PF_RULES_WUNLOCK();
-			uma_zfree(V_pf_pooladdr_z, pa);
 			if (pa->ifname[0])
 				free(kif, PFI_MTYPE);
+			free(pa, M_PFRULE);
 			error = EBUSY;
 			break;
 		}
@@ -2231,7 +2232,7 @@ DIOCGETSTATES_full:
 			if (pa->ifname[0])
 				pfi_kif_unref(pa->kif);
 			PF_RULES_WUNLOCK();
-			uma_zfree(V_pf_pooladdr_z, pa);
+			free(pa, M_PFRULE);
 			break;
 		}
 		TAILQ_INSERT_TAIL(&V_pf_pabuf, pa, entries);
@@ -2321,7 +2322,7 @@ DIOCGETSTATES_full:
 				break;
 			}
 #endif /* INET6 */
-			newpa = uma_zalloc(V_pf_pooladdr_z, M_WAITOK);
+			newpa = malloc(sizeof(*newpa), M_PFRULE, M_WAITOK);
 			bcopy(&pca->addr, newpa, sizeof(struct pf_pooladdr));
 			if (newpa->ifname[0])
 				kif = malloc(sizeof(*kif), PFI_MTYPE, M_WAITOK);
@@ -2361,7 +2362,7 @@ DIOCGETSTATES_full:
 				if (newpa->kif)
 					pfi_kif_unref(newpa->kif);
 				PF_RULES_WUNLOCK();
-				uma_zfree(V_pf_pooladdr_z, newpa);
+				free(newpa, M_PFRULE);
 				break;
 			}
 		}
@@ -2397,7 +2398,7 @@ DIOCGETSTATES_full:
 			}
 			if (oldpa->kif)
 				pfi_kif_unref(oldpa->kif);
-			uma_zfree(V_pf_pooladdr_z, oldpa);
+			free(oldpa, M_PFRULE);
 		} else {
 			if (oldpa == NULL)
 				TAILQ_INSERT_TAIL(&pool->list, newpa, entries);
@@ -2419,7 +2420,7 @@ DIOCGETSTATES_full:
 DIOCCHANGEADDR_error:
 		PF_RULES_WUNLOCK();
 		if (newpa != NULL)
-			uma_zfree(V_pf_pooladdr_z, newpa);
+			free(newpa, M_PFRULE);
 		if (kif != NULL)
 			free(kif, PFI_MTYPE);
 		break;

Modified: projects/pf/head/sys/contrib/pf/net/pfvar.h
==============================================================================
--- projects/pf/head/sys/contrib/pf/net/pfvar.h	Mon Jun  4 10:42:09 2012	(r236555)
+++ projects/pf/head/sys/contrib/pf/net/pfvar.h	Mon Jun  4 11:24:03 2012	(r236556)
@@ -1728,14 +1728,10 @@ extern void			 pf_calc_skip_steps(struct
 #ifdef ALTQ
 extern	void			 pf_altq_ifnet_event(struct ifnet *, int);
 #endif
-VNET_DECLARE(uma_zone_t,	 pf_rule_z);
-#define	V_pf_rule_z		 VNET(pf_rule_z)
 VNET_DECLARE(uma_zone_t,	 pf_state_z);
 #define	V_pf_state_z		 VNET(pf_state_z)
 VNET_DECLARE(uma_zone_t,	 pf_state_key_z);
 #define	V_pf_state_key_z	 VNET(pf_state_key_z)
-VNET_DECLARE(uma_zone_t,	 pf_pooladdr_z);
-#define	V_pf_pooladdr_z		 VNET(pf_pooladdr_z)
 VNET_DECLARE(uma_zone_t,	 pfr_ktable_z);
 #define	V_pfr_ktable_z		 VNET(pfr_ktable_z)
 VNET_DECLARE(uma_zone_t,	 pfr_kentry_z);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201206041124.q54BO4Wq038414>