/*
- * Copyright (c) 2007-2008 Apple Inc. All rights reserved.
+ * Copyright (c) 2007-2016 Apple Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
/*
* Copyright (c) 2001 Daniel Hartmeier
* Copyright (c) 2002,2003 Henning Brauer
+ * NAT64 - Copyright (c) 2010 Viagenie Inc. (http://www.viagenie.ca)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
case PF_SCRUB:
case PF_NOSCRUB:
return (PF_RULESET_SCRUB);
- break;
case PF_PASS:
case PF_DROP:
return (PF_RULESET_FILTER);
- break;
case PF_NAT:
case PF_NONAT:
return (PF_RULESET_NAT);
- break;
case PF_BINAT:
case PF_NOBINAT:
return (PF_RULESET_BINAT);
- break;
case PF_RDR:
case PF_NORDR:
+ case PF_NAT64:
+ case PF_NONAT64:
return (PF_RULESET_RDR);
- break;
+#if DUMMYNET
+ case PF_DUMMYNET:
+ case PF_NODUMMYNET:
+ return (PF_RULESET_DUMMYNET);
+#endif /* DUMMYNET */
default:
return (PF_RULESET_MAX);
- break;
}
}
return (&anchor->ruleset);
}
+struct pf_ruleset *
+pf_find_ruleset_with_owner(const char *path, const char *owner, int is_anchor,
+ int *error)
+{
+ struct pf_anchor *anchor;
+
+ while (*path == '/')
+ path++;
+ if (!*path)
+ return (&pf_main_ruleset);
+ anchor = pf_find_anchor(path);
+ if (anchor == NULL) {
+ *error = EINVAL;
+ return (NULL);
+ } else {
+ if ((owner && (!strcmp(owner, anchor->owner)))
+ || (is_anchor && !strcmp(anchor->owner, "")))
+ return (&anchor->ruleset);
+ *error = EPERM;
+ return NULL;
+ }
+}
+
struct pf_ruleset *
pf_find_or_create_ruleset(const char *path)
{