Lines Matching refs:anchor

212 	struct pf_anchor	*anchor;
218 anchor = pf_find_anchor(path);
219 if (anchor == NULL)
222 return (&anchor->ruleset);
229 struct pf_anchor *anchor;
235 anchor = pf_find_anchor(path);
236 if (anchor == NULL) {
240 if ((owner && anchor->owner && (!strcmp(owner, anchor->owner)))
241 || (is_anchor && !strcmp(anchor->owner, "")))
242 return (&anchor->ruleset);
253 struct pf_anchor *anchor = 0, *dup, *parent = NULL;
268 parent = ruleset->anchor;
290 anchor = (struct pf_anchor *)rs_malloc(sizeof (*anchor));
291 if (anchor == NULL) {
295 memset(anchor, 0, sizeof (*anchor));
296 RB_INIT(&anchor->children);
297 strlcpy(anchor->name, q, sizeof (anchor->name));
299 strlcpy(anchor->path, parent->path,
300 sizeof (anchor->path));
301 strlcat(anchor->path, "/", sizeof (anchor->path));
303 strlcat(anchor->path, anchor->name, sizeof (anchor->path));
304 if ((dup = RB_INSERT(pf_anchor_global, &pf_anchors, anchor)) !=
308 anchor->path, anchor->name, dup->path, dup->name);
309 rs_free(anchor);
314 anchor->parent = parent;
316 anchor)) != NULL) {
319 "'%s' '%s'\n", anchor->path, anchor->name,
322 anchor);
323 rs_free(anchor);
328 pf_init_ruleset(&anchor->ruleset);
329 anchor->ruleset.anchor = anchor;
330 parent = anchor;
337 return (anchor ? &anchor->ruleset : 0);
347 if (ruleset == &pf_main_ruleset || ruleset->anchor == NULL ||
348 !RB_EMPTY(&ruleset->anchor->children) ||
349 ruleset->anchor->refcnt > 0 || ruleset->tables > 0 ||
357 RB_REMOVE(pf_anchor_global, &pf_anchors, ruleset->anchor);
358 if ((parent = ruleset->anchor->parent) != NULL)
360 ruleset->anchor);
361 rs_free(ruleset->anchor);
375 r->anchor = NULL;
387 if (s->anchor == NULL || !s->anchor->path[0])
390 strlcpy(path, s->anchor->path, MAXPATHLEN);
414 if (ruleset == NULL || ruleset->anchor == NULL) {
418 r->anchor = ruleset->anchor;
419 r->anchor->refcnt++;
428 if (r->anchor == NULL)
432 strlcat(pr->anchor_call, r->anchor->path,
440 if (rs->anchor == NULL)
443 strlcpy(a, rs->anchor->path, MAXPATHLEN);
451 if (strncmp(a, r->anchor->path, strlen(a))) {
453 r->anchor->path);
457 if (strlen(r->anchor->path) > strlen(a))
458 strlcat(pr->anchor_call, r->anchor->path + (a[0] ?
471 if (r->anchor == NULL)
473 if (r->anchor->refcnt <= 0) {
475 r->anchor = NULL;
478 if (!--r->anchor->refcnt)
479 pf_remove_if_empty_ruleset(&r->anchor->ruleset);
480 r->anchor = NULL;