- if (0 == (_error)) { \
- lock_vnode_and_post((_vp), (_event)); \
- } \
- } while (0)
-
-
-
-#define VN_CREATE_NOAUTH (1<<0)
-#define VN_CREATE_NOINHERIT (1<<1)
-#define VN_CREATE_UNION (1<<2)
-#define VN_CREATE_NOLABEL (1<<3)
-errno_t vn_create(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, int flags, vfs_context_t);
-
-
-int vn_getxattr(vnode_t, const char *, uio_t, size_t *, int, vfs_context_t);
-int vn_setxattr(vnode_t, const char *, uio_t, int, vfs_context_t);
-int vn_removexattr(vnode_t, const char *, int, vfs_context_t);
-int vn_listxattr(vnode_t, uio_t, size_t *, int, vfs_context_t);
-
-int default_getxattr(vnode_t, const char *, uio_t, size_t *, int, vfs_context_t);
-int default_setxattr(vnode_t, const char *, uio_t, int, vfs_context_t);
-int default_removexattr(vnode_t, const char *, int, vfs_context_t);
-
-int check_appledouble_header(vnode_t, vfs_context_t);
+ if (0 == (_error)) { \
+ lock_vnode_and_post((_vp), (_event)); \
+ } \
+ } while (0)
+
+/* Authorization subroutines */
+int vn_authorize_open_existing(vnode_t vp, struct componentname *cnp, int fmode, vfs_context_t ctx, void *reserved);
+int vn_authorize_create(vnode_t, struct componentname *, struct vnode_attr *, vfs_context_t, void*);
+int vn_attribute_prepare(vnode_t dvp, struct vnode_attr *vap, uint32_t *defaulted_fieldsp, vfs_context_t ctx);
+void vn_attribute_cleanup(struct vnode_attr *vap, uint32_t defaulted_fields);
+int vn_authorize_rename(struct vnode *fdvp, struct vnode *fvp, struct componentname *fcnp,
+ struct vnode *tdvp, struct vnode *tvp, struct componentname *tcnp,
+ vfs_context_t ctx, void *reserved);
+int vn_authorize_renamex(struct vnode *fdvp, struct vnode *fvp, struct componentname *fcnp,
+ struct vnode *tdvp, struct vnode *tvp, struct componentname *tcnp,
+ vfs_context_t ctx, vfs_rename_flags_t flags, void *reserved);
+int vn_authorize_renamex_with_paths(struct vnode *fdvp, struct vnode *fvp, struct componentname *fcnp, const char *from_path,
+ struct vnode *tdvp, struct vnode *tvp, struct componentname *tcnp, const char *to_path,
+ vfs_context_t ctx, vfs_rename_flags_t flags, void *reserved);
+int vn_authorize_rmdir(vnode_t dvp, vnode_t vp, struct componentname *cnp, vfs_context_t ctx, void *reserved);
+
+typedef int (*vn_create_authorizer_t)(vnode_t, struct componentname *, struct vnode_attr *, vfs_context_t, void*);
+int vn_authorize_mkdir(vnode_t, struct componentname *, struct vnode_attr *, vfs_context_t, void*);
+int vn_authorize_null(vnode_t, struct componentname *, struct vnode_attr *, vfs_context_t, void*);
+int vnode_attr_authorize_dir_clone(struct vnode_attr *vap, kauth_action_t action,
+ struct vnode_attr *dvap, vnode_t sdvp, mount_t mp, dir_clone_authorizer_op_t vattr_op,
+ uint32_t flags, vfs_context_t ctx, void *reserved);
+/* End of authorization subroutines */
+
+#define VN_CREATE_NOAUTH (1<<0)
+#define VN_CREATE_NOINHERIT (1<<1)
+#define VN_CREATE_UNION (1<<2)
+#define VN_CREATE_NOLABEL (1<<3)
+#define VN_CREATE_DOOPEN (1<<4) /* Open file if a batched operation is available */
+errno_t vn_create(vnode_t, vnode_t *, struct nameidata *, struct vnode_attr *, uint32_t, int, uint32_t*, vfs_context_t);
+int vn_mkdir(vnode_t dvp, vnode_t *vpp, struct nameidata *ndp, struct vnode_attr *vap, vfs_context_t ctx);
+int vn_rmdir(vnode_t dvp, vnode_t *vpp, struct nameidata *ndp, struct vnode_attr *vap, vfs_context_t ctx);
+
+int vn_getxattr(vnode_t, const char *, uio_t, size_t *, int, vfs_context_t);
+int vn_setxattr(vnode_t, const char *, uio_t, int, vfs_context_t);
+int vn_removexattr(vnode_t, const char *, int, vfs_context_t);
+int vn_listxattr(vnode_t, uio_t, size_t *, int, vfs_context_t);