Lines Matching full:anchor

177 	struct pf_kanchor	*anchor;  in pf_find_kruleset()  local
183 anchor = pf_find_kanchor(path); in pf_find_kruleset()
184 if (anchor == NULL) in pf_find_kruleset()
187 return (&anchor->ruleset); in pf_find_kruleset()
235 struct pf_kanchor *anchor, *dup; in pf_create_kanchor() local
241 anchor = uma_zalloc(V_pf_anchor_z, M_NOWAIT | M_ZERO); in pf_create_kanchor()
242 if (anchor == NULL) in pf_create_kanchor()
245 RB_INIT(&anchor->children); in pf_create_kanchor()
246 strlcpy(anchor->name, aname, sizeof(anchor->name)); in pf_create_kanchor()
252 strlcpy(anchor->path, parent->path, sizeof(anchor->path)); in pf_create_kanchor()
253 strlcat(anchor->path, "/", sizeof(anchor->path)); in pf_create_kanchor()
255 strlcat(anchor->path, anchor->name, sizeof(anchor->path)); in pf_create_kanchor()
257 if ((dup = RB_INSERT(pf_kanchor_global, &V_pf_anchors, anchor)) != in pf_create_kanchor()
261 anchor->path, anchor->name, dup->path, dup->name); in pf_create_kanchor()
262 uma_zfree(V_pf_anchor_z, anchor); in pf_create_kanchor()
267 anchor->parent = parent; in pf_create_kanchor()
269 anchor)) != NULL) { in pf_create_kanchor()
272 "'%s' '%s'\n", __func__, anchor->path, in pf_create_kanchor()
273 anchor->name, dup->path, dup->name); in pf_create_kanchor()
275 anchor); in pf_create_kanchor()
276 uma_zfree(V_pf_anchor_z, anchor); in pf_create_kanchor()
280 pf_init_kruleset(&anchor->ruleset); in pf_create_kanchor()
281 anchor->ruleset.anchor = anchor; in pf_create_kanchor()
282 return (anchor); in pf_create_kanchor()
290 struct pf_kanchor *anchor = NULL; in pf_find_or_create_kruleset() local
305 anchor = ruleset->anchor; in pf_find_or_create_kruleset()
317 anchor = pf_create_kanchor(anchor, aname); in pf_find_or_create_kruleset()
318 if (anchor == NULL) { in pf_find_or_create_kruleset()
329 return (&anchor->ruleset); in pf_find_or_create_kruleset()
340 !RB_EMPTY(&ruleset->anchor->children) || in pf_remove_if_empty_kruleset()
341 ruleset->anchor->refcnt > 0 || ruleset->tables > 0 || in pf_remove_if_empty_kruleset()
355 RB_REMOVE(pf_kanchor_global, &V_pf_anchors, ruleset->anchor); in pf_remove_if_empty_kruleset()
356 if ((parent = ruleset->anchor->parent) != NULL) in pf_remove_if_empty_kruleset()
358 ruleset->anchor); in pf_remove_if_empty_kruleset()
359 uma_zfree(V_pf_anchor_z, ruleset->anchor); in pf_remove_if_empty_kruleset()
373 r->anchor = NULL; in pf_kanchor_setup()
386 if (s->anchor == NULL || !s->anchor->path[0]) in pf_kanchor_setup()
389 strlcpy(path, s->anchor->path, MAXPATHLEN); in pf_kanchor_setup()
418 r->anchor = ruleset->anchor; in pf_kanchor_setup()
419 r->anchor->refcnt++; in pf_kanchor_setup()
429 if (r->anchor == NULL) in pf_kanchor_copyout()
433 strlcat(anchor_call, r->anchor->path, in pf_kanchor_copyout()
442 strlcpy(a, rs->anchor->path, MAXPATHLEN); in pf_kanchor_copyout()
450 if (strncmp(a, r->anchor->path, strlen(a))) { in pf_kanchor_copyout()
452 r->anchor->path); in pf_kanchor_copyout()
455 if (strlen(r->anchor->path) > strlen(a)) in pf_kanchor_copyout()
456 strlcat(anchor_call, r->anchor->path + (a[0] ? in pf_kanchor_copyout()
490 if (r->anchor == NULL) in pf_keth_anchor_nvcopyout()
494 strlcat(anchor_call, r->anchor->path, in pf_keth_anchor_nvcopyout()
500 if (rs->anchor == NULL) in pf_keth_anchor_nvcopyout()
503 strlcpy(a, rs->anchor->path, MAXPATHLEN); in pf_keth_anchor_nvcopyout()
511 if (strncmp(a, r->anchor->path, strlen(a))) { in pf_keth_anchor_nvcopyout()
513 r->anchor->path); in pf_keth_anchor_nvcopyout()
516 if (strlen(r->anchor->path) > strlen(a)) in pf_keth_anchor_nvcopyout()
517 strlcat(anchor_call, r->anchor->path + (a[0] ? in pf_keth_anchor_nvcopyout()
534 if (r->anchor == NULL) in pf_remove_kanchor()
536 if (r->anchor->refcnt <= 0) in pf_remove_kanchor()
538 else if (!--r->anchor->refcnt) in pf_remove_kanchor()
539 pf_remove_if_empty_kruleset(&r->anchor->ruleset); in pf_remove_kanchor()
540 r->anchor = NULL; in pf_remove_kanchor()
546 struct pf_keth_anchor *anchor; in pf_find_keth_ruleset() local
552 anchor = pf_find_keth_anchor(path); in pf_find_keth_ruleset()
553 if (anchor == NULL) in pf_find_keth_ruleset()
556 return (&anchor->ruleset); in pf_find_keth_ruleset()
583 struct pf_keth_anchor *anchor = NULL, *dup = NULL, *parent = NULL; in pf_find_or_create_keth_ruleset() local
600 parent = ruleset->anchor; in pf_find_or_create_keth_ruleset()
622 anchor = uma_zalloc(V_pf_eth_anchor_z, M_NOWAIT | M_ZERO); in pf_find_or_create_keth_ruleset()
623 if (anchor == NULL) { in pf_find_or_create_keth_ruleset()
627 RB_INIT(&anchor->children); in pf_find_or_create_keth_ruleset()
628 strlcpy(anchor->name, q, sizeof(anchor->name)); in pf_find_or_create_keth_ruleset()
630 strlcpy(anchor->path, parent->path, in pf_find_or_create_keth_ruleset()
631 sizeof(anchor->path)); in pf_find_or_create_keth_ruleset()
632 strlcat(anchor->path, "/", sizeof(anchor->path)); in pf_find_or_create_keth_ruleset()
634 strlcat(anchor->path, anchor->name, sizeof(anchor->path)); in pf_find_or_create_keth_ruleset()
635 if ((dup = RB_INSERT(pf_keth_anchor_global, &V_pf_keth_anchors, anchor)) != in pf_find_or_create_keth_ruleset()
639 anchor->path, anchor->name, dup->path, dup->name); in pf_find_or_create_keth_ruleset()
640 uma_zfree(V_pf_eth_anchor_z, anchor); in pf_find_or_create_keth_ruleset()
645 anchor->parent = parent; in pf_find_or_create_keth_ruleset()
647 anchor)) != NULL) { in pf_find_or_create_keth_ruleset()
650 "'%s' '%s'\n", __func__, anchor->path, in pf_find_or_create_keth_ruleset()
651 anchor->name, dup->path, dup->name); in pf_find_or_create_keth_ruleset()
653 anchor); in pf_find_or_create_keth_ruleset()
654 uma_zfree(V_pf_eth_anchor_z, anchor); in pf_find_or_create_keth_ruleset()
659 pf_init_keth(&anchor->ruleset); in pf_find_or_create_keth_ruleset()
660 anchor->ruleset.anchor = anchor; in pf_find_or_create_keth_ruleset()
661 parent = anchor; in pf_find_or_create_keth_ruleset()
668 return (&anchor->ruleset); in pf_find_or_create_keth_ruleset()
678 r->anchor = NULL; in pf_keth_anchor_setup()
691 if (s->anchor == NULL || !s->anchor->path[0]) in pf_keth_anchor_setup()
694 strlcpy(path, s->anchor->path, MAXPATHLEN); in pf_keth_anchor_setup()
719 if (ruleset == NULL || ruleset->anchor == NULL) { in pf_keth_anchor_setup()
723 r->anchor = ruleset->anchor; in pf_keth_anchor_setup()
724 r->anchor->refcnt++; in pf_keth_anchor_setup()
731 if (r->anchor == NULL) in pf_keth_anchor_remove()
733 if (r->anchor->refcnt <= 0) { in pf_keth_anchor_remove()
735 r->anchor = NULL; in pf_keth_anchor_remove()
738 if (!--r->anchor->refcnt) in pf_keth_anchor_remove()
739 pf_remove_if_empty_keth_ruleset(&r->anchor->ruleset); in pf_keth_anchor_remove()
740 r->anchor = NULL; in pf_keth_anchor_remove()
750 if (ruleset == V_pf_keth || ruleset->anchor == NULL || in pf_remove_if_empty_keth_ruleset()
751 !RB_EMPTY(&ruleset->anchor->children) || in pf_remove_if_empty_keth_ruleset()
752 ruleset->anchor->refcnt > 0) in pf_remove_if_empty_keth_ruleset()
759 RB_REMOVE(pf_keth_anchor_global, &V_pf_keth_anchors, ruleset->anchor); in pf_remove_if_empty_keth_ruleset()
760 if ((parent = ruleset->anchor->parent) != NULL) in pf_remove_if_empty_keth_ruleset()
762 ruleset->anchor); in pf_remove_if_empty_keth_ruleset()
763 uma_zfree(V_pf_eth_anchor_z, ruleset->anchor); in pf_remove_if_empty_keth_ruleset()