xfs_acl.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * Copyright (c) 2001-2005 Silicon Graphics, Inc.
  3. * All Rights Reserved.
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License as
  7. * published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it would be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with this program; if not, write the Free Software Foundation,
  16. * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  17. */
  18. #ifndef __XFS_ACL_H__
  19. #define __XFS_ACL_H__
  20. struct inode;
  21. struct posix_acl;
  22. struct xfs_inode;
  23. #define XFS_ACL_MAX_ENTRIES 25
  24. #define XFS_ACL_NOT_PRESENT (-1)
  25. /* On-disk XFS access control list structure */
  26. struct xfs_acl {
  27. __be32 acl_cnt;
  28. struct xfs_acl_entry {
  29. __be32 ae_tag;
  30. __be32 ae_id;
  31. __be16 ae_perm;
  32. } acl_entry[XFS_ACL_MAX_ENTRIES];
  33. };
  34. /* On-disk XFS extended attribute names */
  35. #define SGI_ACL_FILE (unsigned char *)"SGI_ACL_FILE"
  36. #define SGI_ACL_DEFAULT (unsigned char *)"SGI_ACL_DEFAULT"
  37. #define SGI_ACL_FILE_SIZE (sizeof(SGI_ACL_FILE)-1)
  38. #define SGI_ACL_DEFAULT_SIZE (sizeof(SGI_ACL_DEFAULT)-1)
  39. #ifdef CONFIG_XFS_POSIX_ACL
  40. extern int xfs_check_acl(struct inode *inode, int mask, unsigned int flags);
  41. extern struct posix_acl *xfs_get_acl(struct inode *inode, int type);
  42. extern int xfs_inherit_acl(struct inode *inode, struct posix_acl *default_acl);
  43. extern int xfs_acl_chmod(struct inode *inode);
  44. extern int posix_acl_access_exists(struct inode *inode);
  45. extern int posix_acl_default_exists(struct inode *inode);
  46. extern const struct xattr_handler xfs_xattr_acl_access_handler;
  47. extern const struct xattr_handler xfs_xattr_acl_default_handler;
  48. #else
  49. # define xfs_check_acl NULL
  50. # define xfs_get_acl(inode, type) NULL
  51. # define xfs_inherit_acl(inode, default_acl) 0
  52. # define xfs_acl_chmod(inode) 0
  53. # define posix_acl_access_exists(inode) 0
  54. # define posix_acl_default_exists(inode) 0
  55. #endif /* CONFIG_XFS_POSIX_ACL */
  56. #endif /* __XFS_ACL_H__ */