Lines Matching full:anchor

160 	struct pfctl_anchor	*anchor;  in pf_find_ruleset()  local
166 anchor = pf_find_anchor(path); in pf_find_ruleset()
167 if (anchor == NULL) in pf_find_ruleset()
170 return (&anchor->ruleset); in pf_find_ruleset()
178 struct pfctl_anchor *anchor = NULL, *dup, *parent = NULL; in pf_find_or_create_ruleset() local
194 parent = ruleset->anchor; in pf_find_or_create_ruleset()
216 anchor = (struct pfctl_anchor *)rs_malloc(sizeof(*anchor)); in pf_find_or_create_ruleset()
217 if (anchor == NULL) { in pf_find_or_create_ruleset()
221 RB_INIT(&anchor->children); in pf_find_or_create_ruleset()
222 strlcpy(anchor->name, q, sizeof(anchor->name)); in pf_find_or_create_ruleset()
224 strlcpy(anchor->path, parent->path, in pf_find_or_create_ruleset()
225 sizeof(anchor->path)); in pf_find_or_create_ruleset()
226 strlcat(anchor->path, "/", sizeof(anchor->path)); in pf_find_or_create_ruleset()
228 strlcat(anchor->path, anchor->name, sizeof(anchor->path)); in pf_find_or_create_ruleset()
229 if ((dup = RB_INSERT(pfctl_anchor_global, &V_pf_anchors, anchor)) != in pf_find_or_create_ruleset()
233 anchor->path, anchor->name, dup->path, dup->name); in pf_find_or_create_ruleset()
234 rs_free(anchor); in pf_find_or_create_ruleset()
239 anchor->parent = parent; in pf_find_or_create_ruleset()
241 anchor)) != NULL) { in pf_find_or_create_ruleset()
244 "'%s' '%s'\n", anchor->path, anchor->name, in pf_find_or_create_ruleset()
247 anchor); in pf_find_or_create_ruleset()
248 rs_free(anchor); in pf_find_or_create_ruleset()
253 pf_init_ruleset(&anchor->ruleset); in pf_find_or_create_ruleset()
254 anchor->ruleset.anchor = anchor; in pf_find_or_create_ruleset()
255 parent = anchor; in pf_find_or_create_ruleset()
262 return (&anchor->ruleset); in pf_find_or_create_ruleset()
272 if (ruleset == &pf_main_ruleset || ruleset->anchor == NULL || in pf_remove_if_empty_ruleset()
273 !RB_EMPTY(&ruleset->anchor->children) || in pf_remove_if_empty_ruleset()
274 ruleset->anchor->refcnt > 0 || ruleset->tables > 0 || in pf_remove_if_empty_ruleset()
282 RB_REMOVE(pfctl_anchor_global, &V_pf_anchors, ruleset->anchor); in pf_remove_if_empty_ruleset()
283 if ((parent = ruleset->anchor->parent) != NULL) in pf_remove_if_empty_ruleset()
285 ruleset->anchor); in pf_remove_if_empty_ruleset()
286 rs_free(ruleset->anchor); in pf_remove_if_empty_ruleset()
301 ruleset->anchor == NULL || ruleset->anchor->refcnt > 0) in pf_remove_if_empty_eth_ruleset()
305 rs_free(ruleset->anchor); in pf_remove_if_empty_eth_ruleset()
322 _pf_find_eth_anchor(struct pfctl_eth_anchor *anchor, const char *path) in _pf_find_eth_anchor() argument
327 if (strcmp(path, anchor->path) == 0) in _pf_find_eth_anchor()
328 return (anchor); in _pf_find_eth_anchor()
330 TAILQ_FOREACH(r, &anchor->ruleset.rules, entries) { in _pf_find_eth_anchor()
331 if (! r->anchor) in _pf_find_eth_anchor()
334 /* Step into anchor */ in _pf_find_eth_anchor()
335 a = _pf_find_eth_anchor(r->anchor, path); in _pf_find_eth_anchor()
352 struct pfctl_eth_anchor *anchor; in pf_find_eth_ruleset() local
358 anchor = pf_find_eth_anchor(path); in pf_find_eth_ruleset()
359 if (anchor == NULL) in pf_find_eth_ruleset()
362 return (&anchor->ruleset); in pf_find_eth_ruleset()
370 struct pfctl_eth_anchor *anchor = NULL, *parent = NULL; in pf_find_or_create_eth_ruleset() local
386 parent = ruleset->anchor; in pf_find_or_create_eth_ruleset()
408 anchor = (struct pfctl_eth_anchor *)rs_malloc(sizeof(*anchor)); in pf_find_or_create_eth_ruleset()
409 if (anchor == NULL) { in pf_find_or_create_eth_ruleset()
413 strlcpy(anchor->name, q, sizeof(anchor->name)); in pf_find_or_create_eth_ruleset()
415 strlcpy(anchor->path, parent->path, in pf_find_or_create_eth_ruleset()
416 sizeof(anchor->path)); in pf_find_or_create_eth_ruleset()
417 strlcat(anchor->path, "/", sizeof(anchor->path)); in pf_find_or_create_eth_ruleset()
419 strlcat(anchor->path, anchor->name, sizeof(anchor->path)); in pf_find_or_create_eth_ruleset()
421 anchor->parent = parent; in pf_find_or_create_eth_ruleset()
422 pf_init_eth_ruleset(&anchor->ruleset); in pf_find_or_create_eth_ruleset()
423 anchor->ruleset.anchor = anchor; in pf_find_or_create_eth_ruleset()
424 parent = anchor; in pf_find_or_create_eth_ruleset()
431 return (&anchor->ruleset); in pf_find_or_create_eth_ruleset()
441 r->anchor = NULL; in pfctl_anchor_setup()
454 if (s->anchor == NULL || !s->anchor->path[0]) in pfctl_anchor_setup()
457 strlcpy(path, s->anchor->path, MAXPATHLEN); in pfctl_anchor_setup()
481 if (ruleset == NULL || ruleset->anchor == NULL) { in pfctl_anchor_setup()
485 r->anchor = ruleset->anchor; in pfctl_anchor_setup()
486 r->anchor->refcnt++; in pfctl_anchor_setup()
497 r->anchor = NULL; in pfctl_eth_anchor_setup()
507 if (s->anchor == NULL || !s->anchor->path[0]) in pfctl_eth_anchor_setup()
510 strlcpy(path, s->anchor->path, MAXPATHLEN); in pfctl_eth_anchor_setup()
532 if (ruleset == NULL || ruleset->anchor == NULL) { in pfctl_eth_anchor_setup()
536 r->anchor = ruleset->anchor; in pfctl_eth_anchor_setup()
537 r->anchor->refcnt++; in pfctl_eth_anchor_setup()