diff options
Diffstat (limited to 'sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acl.h')
-rw-r--r-- | sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acl.h | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acl.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acl.h new file mode 100644 index 0000000000..5087dece60 --- /dev/null +++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acl.h @@ -0,0 +1,207 @@ +/* Copyright (C) 2008 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _SYS_ACL_H +#define _SYS_ACL_H + +#include <features.h> +#include <sys/types.h> + +#define ACL_IS_TRIVIAL 0x10000 +#define ACL_IS_DIR 0x20000 + +typedef enum acl_type + { + ACLENT_T = 0, + ACE_T = 1 + } acl_type_t; + +struct acl_info + { + acl_type_t acl_type; + int acl_cnt; + int acl_entry_size; + int acl_flags; + void *acl_aclp; + }; + +/* cmd values. */ +#define GETACL 1 +#define SETACL 2 +#define GETACLCNT 3 +#define ACE_GETACL 4 +#define ACE_SETACL 5 +#define ACE_GETACLCNT 6 + +/* Used by UFS. */ +typedef struct acl +{ + int a_type; + unsigned int a_id; + o_mode_t a_perm; +} aclent_t; + +/* Used by ZFS and NFSv4. */ +typedef struct ace { + unsigned int a_who; + uint32_t a_access_mask; + uint16_t a_flags; + uint16_t a_type; +} ace_t; + +typedef struct acl_info acl_t; + +#define MIN_ACL_ENTRIES 4 +#define MAX_ACL_ENTRIES 1024 + +/* aclent_t a_type values. */ +#define USER_OBJ 0x01 +#define USER 0x02 +#define GROUP_OBJ 0x04 +#define GROUP 0x08 +#define CLASS_OBJ 0x10 +#define OTHER_OBJ 0x20 +#define ACL_DEFAULT 0x1000 +#define DEF_USER_OBJ (ACL_DEFAULT | USER_OBJ) +#define DEF_USER (ACL_DEFAULT | USER) +#define DEF_GROUP_OBJ (ACL_DEFAULT | GROUP_OBJ) +#define DEF_GROUP (ACL_DEFAULT | GROUP) +#define DEF_CLASS_OBJ (ACL_DEFAULT | CLASS_OBJ) +#define DEF_OTHER_OBJ (ACL_DEFAULT | OTHER_OBJ) + +/* ace_t a_access_mask values. */ +#define ACE_READ_DATA 0x00000001 +#define ACE_LIST_DIRECTORY 0x00000001 +#define ACE_WRITE_DATA 0x00000002 +#define ACE_ADD_FILE 0x00000002 +#define ACE_APPEND_DATA 0x00000004 +#define ACE_ADD_SUBDIRECTORY 0x00000004 +#define ACE_READ_NAMED_ATTRS 0x00000008 +#define ACE_WRITE_NAMED_ATTRS 0x00000010 +#define ACE_EXECUTE 0x00000020 +#define ACE_DELETE_CHILD 0x00000040 +#define ACE_READ_ATTRIBUTES 0x00000080 +#define ACE_WRITE_ATTRIBUTES 0x00000100 +#define ACE_DELETE 0x00010000 +#define ACE_READ_ACL 0x00020000 +#define ACE_WRITE_ACL 0x00040000 +#define ACE_WRITE_OWNER 0x00080000 +#define ACE_SYNCHRONIZE 0x00100000 +#define ACE_ALL_PERMS (ACE_READ_DATA | ACE_LIST_DIRECTORY | \ + ACE_WRITE_DATA | ACE_ADD_FILE | ACE_APPEND_DATA | \ + ACE_ADD_SUBDIRECTORY | ACE_READ_NAMED_ATTRS | ACE_WRITE_NAMED_ATTRS | \ + ACE_EXECUTE | ACE_DELETE_CHILD | ACE_READ_ATTRIBUTES | \ + ACE_WRITE_ATTRIBUTES | ACE_DELETE | ACE_READ_ACL | ACE_WRITE_ACL | \ + ACE_WRITE_OWNER | ACE_SYNCHRONIZE) +#define ACE_READ_PERMS (ACE_READ_DATA | ACE_READ_ACL | ACE_READ_ATTRIBUTES | \ + ACE_READ_NAMED_ATTRS) +#define ACE_WRITE_PERMS (ACE_WRITE_DATA | ACE_APPEND_DATA | \ + ACE_WRITE_ATTRIBUTES | ACE_WRITE_NAMED_ATTRS) +#define ACE_MODIFY_PERMS (ACE_READ_DATA | ACE_LIST_DIRECTORY | \ + ACE_WRITE_DATA | ACE_ADD_FILE | ACE_APPEND_DATA | \ + ACE_ADD_SUBDIRECTORY | ACE_READ_NAMED_ATTRS | ACE_WRITE_NAMED_ATTRS | \ + ACE_EXECUTE | ACE_DELETE_CHILD | ACE_READ_ATTRIBUTES | \ + ACE_WRITE_ATTRIBUTES | ACE_DELETE | ACE_READ_ACL | ACE_SYNCHRONIZE) + +/* ace_t a_flags values. */ +#define ACE_FILE_INHERIT_ACE 0x0001 +#define ACE_DIRECTORY_INHERIT_ACE 0x0002 +#define ACE_NO_PROPAGATE_INHERIT_ACE 0x0004 +#define ACE_INHERIT_ONLY_ACE 0x0008 +#define ACE_SUCCESSFUL_ACCESS_ACE_FLAG 0x0010 +#define ACE_FAILED_ACCESS_ACE_FLAG 0x0020 +#define ACE_IDENTIFIER_GROUP 0x0040 +#define ACE_INHERITED_ACE 0x0080 +#define ACE_OWNER 0x1000 +#define ACE_GROUP 0x2000 +#define ACE_EVERYONE 0x4000 +#define ACE_NFSV4_SUP_FLAGS (ACE_FILE_INHERIT_ACE | \ + ACE_DIRECTORY_INHERIT_ACE | ACE_NO_PROPAGATE_INHERIT_ACE | \ + ACE_INHERIT_ONLY_ACE | ACE_IDENTIFIER_GROUP) +#define ACE_TYPE_FLAGS (ACE_OWNER | ACE_GROUP | ACE_EVERYONE | \ + ACE_IDENTIFIER_GROUP) +#define ACE_INHERIT_FLAGS (ACE_FILE_INHERIT_ACE | \ + ACE_DIRECTORY_INHERIT_ACE | ACE_NO_PROPAGATE_INHERIT_ACE | \ + ACE_INHERIT_ONLY_ACE) + +/* ace_t a_type values. */ +#define ACE_ACCESS_ALLOWED_ACE_TYPE 0 +#define ACE_ACCESS_DENIED_ACE_TYPE 1 +#define ACE_SYSTEM_AUDIT_ACE_TYPE 2 +#define ACE_SYSTEM_ALARM_ACE_TYPE 3 + +#define ACL_AUTO_INHERIT 0x0001 +#define ACL_PROTECTED 0x0002 +#define ACL_DEFAULTED 0x0004 +#define ACL_FLAGS_ALL (ACL_AUTO_INHERIT | ACL_PROTECTED | \ + ACL_DEFAULTED) + +#define UFSD_FREE '0' +#define UFSD_ACL '1' +#define UFSD_DFACL '2' +#define ACE_ACL '3' + +#define ACL_NO_TRIVIAL 0x2 + +#define ACL_APPEND_ID 0x01 +#define ACL_COMPACT_FMT 0x02 +#define ACL_NORESOLVE 0x04 +#define ACL_SID_FMT 0x08 + +#define GRP_ERROR 1 +#define USER_ERROR 2 +#define OTHER_ERROR 3 +#define CLASS_ERROR 4 +#define DUPLICATE_ERROR 5 +#define MISS_ERROR 6 +#define MEM_ERROR 7 +#define ENTRY_ERROR 8 + +#define EACL_GRP_ERROR GRP_ERROR +#define EACL_USER_ERROR USER_ERROR +#define EACL_OTHER_ERROR OTHER_ERROR +#define EACL_CLASS_ERROR CLASS_ERROR +#define EACL_DUPLICATE_ERROR DUPLICATE_ERROR +#define EACL_MISS_ERROR MISS_ERROR +#define EACL_MEM_ERROR MEM_ERROR +#define EACL_ENTRY_ERROR ENTRY_ERROR +#define EACL_INHERIT_ERROR 9 +#define EACL_FLAGS_ERROR 10 +#define EACL_PERM_MASK_ERROR 11 +#define EACL_COUNT_ERROR 12 +#define EACL_INVALID_SLOT 13 +#define EACL_NO_ACL_ENTRY 14 +#define EACL_DIFF_TYPE 15 +#define EACL_INVALID_USER_GROUP 16 +#define EACL_INVALID_STR 17 +#define EACL_FIELD_NOT_BLANK 18 +#define EACL_INVALID_ACCESS_TYPE 19 +#define EACL_UNKNOWN_DATA 20 +#define EACL_MISSING_FIELDS 21 +#define EACL_INHERIT_NOTDIR 22 + +__BEGIN_DECLS + +extern int acl(char *__pathp, int __cmd, int __nentries, void *__aclbufp); + +extern int facl(int __fildes, int __cmd, int __nentries, void *__aclbufp); + +__END_DECLS + +#endif /* _SYS_ACL_H */ |