pool_sethardlimit(&pf_state_pl, pf_pool_limits[PF_LIMIT_STATES].limit, NULL, 0);
pool_sethardlimit(pf_pool_limits[PF_LIMIT_STATES].pp, pf_pool_limits[PF_LIMIT_STATES].limit, NULL, 0);
TAILQ_HEAD(pf_tags, pf_tagname)	pf_tags = TAILQ_HEAD_INITIALIZER(pf_tags);#define DPFPRINTF(n, x) if (pf_status.debug >= (n)) printf xvoidpfattach(int num){	u_int32_t *timeout = pf_default_rule.timeout;	pool_init(&pf_rule_pl, sizeof(struct pf_rule), 0, 0, 0, "pfrulepl",	    &pool_allocator_nointr);	pool_init(&pf_src_tree_pl, sizeof(struct pf_src_node), 0, 0, 0,	    "pfsrctrpl", NULL);	pool_init(&pf_state_pl, sizeof(struct pf_state), 0, 0, 0, "pfstatepl",	    NULL);	pool_init(&pf_altq_pl, sizeof(struct pf_altq), 0, 0, 0, "pfaltqpl",	    NULL);	pool_init(&pf_pooladdr_pl, sizeof(struct pf_pooladdr), 0, 0, 0,	    "pfpooladdrpl", NULL);	pfr_initialize();	pfi_initialize();	pf_osfp_initialize();	pool_sethardlimit(&pf_state_pl, pf_pool_limits[PF_LIMIT_STATES].limit,	    NULL, 0);	RB_INIT(&tree_src_tracking);	TAILQ_INIT(&pf_anchors);	pf_init_ruleset(&pf_main_ruleset);	TAILQ_INIT(&pf_altqs[0]);	TAILQ_INIT(&pf_altqs[1]);	TAILQ_INIT(&pf_pabuf);	pf_altqs_active = &pf_altqs[0];	pf_altqs_inactive = &pf_altqs[1];	/* default rule should never be garbage collected */	pf_default_rule.entries.tqe_prev = &pf_default_rule.entries.tqe_next;	pf_default_rule.action = PF_PASS;	pf_default_rule.nr = -1;	/* initialize default timeouts */	timeout[PFTM_TCP_FIRST_PACKET] = 120;		/* First TCP packet */	timeout[PFTM_TCP_OPENING] = 30;			/* No response yet */	timeout[PFTM_TCP_ESTABLISHED] = 24*60*60;	/* Established */	timeout[PFTM_TCP_CLOSING] = 15 * 60;		/* Half closed */	timeout[PFTM_TCP_FIN_WAIT] = 45;		/* Got both FINs */	timeout[PFTM_TCP_CLOSED] = 90;			/* Got a RST */	timeout[PFTM_UDP_FIRST_PACKET] = 60;		/* First UDP packet */	timeout[PFTM_UDP_SINGLE] = 30;			/* Unidirectional */	timeout[PFTM_UDP_MULTIPLE] = 60;		/* Bidirectional */	timeout[PFTM_ICMP_FIRST_PACKET] = 20;		/* First ICMP packet */	timeout[PFTM_ICMP_ERROR_REPLY] = 10;		/* Got error response */	timeout[PFTM_OTHER_FIRST_PACKET] = 60;		/* First packet */	timeout[PFTM_OTHER_SINGLE] = 30;		/* Unidirectional */	timeout[PFTM_OTHER_MULTIPLE] = 60;		/* Bidirectional */	timeout[PFTM_FRAG] = 30;			/* Fragment expire */	timeout[PFTM_INTERVAL] = 10;			/* Expire interval */	timeout[PFTM_SRC_NODE] = 0;			/* Source tracking */	timeout_set(&pf_expire_to, pf_purge_timeout, &pf_expire_to);	timeout_add(&pf_expire_to, timeout[PFTM_INTERVAL] * hz);	pf_normalize_init();	bzero(&pf_status, sizeof(pf_status));	pf_status.debug = PF_DEBUG_URGENT;	/* XXX do our best to avoid a conflict */	pf_status.hostid = arc4random();	pf_status.stateid = 1;	/* might want 0 for something special */}