diff options
Diffstat (limited to 'source3/include/smb_acls.h')
-rw-r--r-- | source3/include/smb_acls.h | 250 |
1 files changed, 20 insertions, 230 deletions
diff --git a/source3/include/smb_acls.h b/source3/include/smb_acls.h index ec1316e466..01ab268a05 100644 --- a/source3/include/smb_acls.h +++ b/source3/include/smb_acls.h @@ -20,250 +20,41 @@ #ifndef _SMB_ACLS_H #define _SMB_ACLS_H -#if defined(HAVE_POSIX_ACLS) -/* This is an identity mapping (just remove the SMB_). */ - -#define SMB_ACL_TAG_T acl_tag_t -#define SMB_ACL_TYPE_T acl_type_t -#define SMB_ACL_PERMSET_T acl_permset_t -#define SMB_ACL_PERM_T acl_perm_t -#define SMB_ACL_READ ACL_READ -#define SMB_ACL_WRITE ACL_WRITE -#define SMB_ACL_EXECUTE ACL_EXECUTE - -/* Types of ACLs. */ -#define SMB_ACL_USER ACL_USER -#define SMB_ACL_USER_OBJ ACL_USER_OBJ -#define SMB_ACL_GROUP ACL_GROUP -#define SMB_ACL_GROUP_OBJ ACL_GROUP_OBJ -#define SMB_ACL_OTHER ACL_OTHER -#define SMB_ACL_MASK ACL_MASK - -#define SMB_ACL_T acl_t - -#define SMB_ACL_ENTRY_T acl_entry_t - -#define SMB_ACL_FIRST_ENTRY ACL_FIRST_ENTRY -#define SMB_ACL_NEXT_ENTRY ACL_NEXT_ENTRY - -#define SMB_ACL_TYPE_ACCESS ACL_TYPE_ACCESS -#define SMB_ACL_TYPE_DEFAULT ACL_TYPE_DEFAULT - -#elif defined(HAVE_TRU64_ACLS) - -/* This is for DEC/Compaq Tru64 UNIX */ - -#define SMB_ACL_TAG_T acl_tag_t -#define SMB_ACL_TYPE_T acl_type_t -#define SMB_ACL_PERMSET_T acl_permset_t -#define SMB_ACL_PERM_T acl_perm_t -#define SMB_ACL_READ ACL_READ -#define SMB_ACL_WRITE ACL_WRITE -#define SMB_ACL_EXECUTE ACL_EXECUTE - -/* Types of ACLs. */ -#define SMB_ACL_USER ACL_USER -#define SMB_ACL_USER_OBJ ACL_USER_OBJ -#define SMB_ACL_GROUP ACL_GROUP -#define SMB_ACL_GROUP_OBJ ACL_GROUP_OBJ -#define SMB_ACL_OTHER ACL_OTHER -#define SMB_ACL_MASK ACL_MASK - -#define SMB_ACL_T acl_t - -#define SMB_ACL_ENTRY_T acl_entry_t - -#define SMB_ACL_FIRST_ENTRY 0 -#define SMB_ACL_NEXT_ENTRY 1 - -#define SMB_ACL_TYPE_ACCESS ACL_TYPE_ACCESS -#define SMB_ACL_TYPE_DEFAULT ACL_TYPE_DEFAULT - -#elif defined(HAVE_UNIXWARE_ACLS) || defined(HAVE_SOLARIS_ACLS) -/* - * Donated by Michael Davidson <md@sco.COM> for UnixWare / OpenUNIX. - * Modified by Toomas Soome <tsoome@ut.ee> for Solaris. - */ - -/* SVR4.2 ES/MP ACLs */ -typedef int SMB_ACL_TAG_T; typedef int SMB_ACL_TYPE_T; -typedef ushort *SMB_ACL_PERMSET_T; -typedef ushort SMB_ACL_PERM_T; +typedef mode_t *SMB_ACL_PERMSET_T; +typedef mode_t SMB_ACL_PERM_T; #define SMB_ACL_READ 4 #define SMB_ACL_WRITE 2 #define SMB_ACL_EXECUTE 1 /* Types of ACLs. */ -#define SMB_ACL_USER USER -#define SMB_ACL_USER_OBJ USER_OBJ -#define SMB_ACL_GROUP GROUP -#define SMB_ACL_GROUP_OBJ GROUP_OBJ -#define SMB_ACL_OTHER OTHER_OBJ -#define SMB_ACL_MASK CLASS_OBJ - -typedef struct SMB_ACL_T { - int size; - int count; - int next; - struct acl acl[1]; -} *SMB_ACL_T; - -typedef struct acl *SMB_ACL_ENTRY_T; - -#define SMB_ACL_FIRST_ENTRY 0 -#define SMB_ACL_NEXT_ENTRY 1 - -#define SMB_ACL_TYPE_ACCESS 0 -#define SMB_ACL_TYPE_DEFAULT 1 - -#elif defined(HAVE_HPUX_ACLS) - -/* - * Based on the Solaris & UnixWare code. - */ - -#undef GROUP -#include <sys/aclv.h> +enum smb_acl_tag_t { + SMB_ACL_USER=1, + SMB_ACL_USER_OBJ, + SMB_ACL_GROUP, + SMB_ACL_GROUP_OBJ, + SMB_ACL_OTHER, + SMB_ACL_MASK +}; -/* SVR4.2 ES/MP ACLs */ -typedef int SMB_ACL_TAG_T; -typedef int SMB_ACL_TYPE_T; -typedef ushort *SMB_ACL_PERMSET_T; -typedef ushort SMB_ACL_PERM_T; -#define SMB_ACL_READ 4 -#define SMB_ACL_WRITE 2 -#define SMB_ACL_EXECUTE 1 +typedef enum smb_acl_tag_t SMB_ACL_TAG_T; -/* Types of ACLs. */ -#define SMB_ACL_USER USER -#define SMB_ACL_USER_OBJ USER_OBJ -#define SMB_ACL_GROUP GROUP -#define SMB_ACL_GROUP_OBJ GROUP_OBJ -#define SMB_ACL_OTHER OTHER_OBJ -#define SMB_ACL_MASK CLASS_OBJ +struct smb_acl_entry { + enum smb_acl_tag_t a_type; + SMB_ACL_PERM_T a_perm; + uid_t uid; + gid_t gid; +}; -typedef struct SMB_ACL_T { +typedef struct smb_acl_t { int size; int count; int next; - struct acl acl[1]; -} *SMB_ACL_T; - -typedef struct acl *SMB_ACL_ENTRY_T; - -#define SMB_ACL_FIRST_ENTRY 0 -#define SMB_ACL_NEXT_ENTRY 1 - -#define SMB_ACL_TYPE_ACCESS 0 -#define SMB_ACL_TYPE_DEFAULT 1 - -#elif defined(HAVE_IRIX_ACLS) - -#define SMB_ACL_TAG_T acl_tag_t -#define SMB_ACL_TYPE_T acl_type_t -#define SMB_ACL_PERMSET_T acl_permset_t -#define SMB_ACL_PERM_T acl_perm_t -#define SMB_ACL_READ ACL_READ -#define SMB_ACL_WRITE ACL_WRITE -#define SMB_ACL_EXECUTE ACL_EXECUTE - -/* Types of ACLs. */ -#define SMB_ACL_USER ACL_USER -#define SMB_ACL_USER_OBJ ACL_USER_OBJ -#define SMB_ACL_GROUP ACL_GROUP -#define SMB_ACL_GROUP_OBJ ACL_GROUP_OBJ -#define SMB_ACL_OTHER ACL_OTHER_OBJ -#define SMB_ACL_MASK ACL_MASK - -typedef struct SMB_ACL_T { - int next; - BOOL freeaclp; - struct acl *aclp; -} *SMB_ACL_T; - -#define SMB_ACL_ENTRY_T acl_entry_t - -#define SMB_ACL_FIRST_ENTRY 0 -#define SMB_ACL_NEXT_ENTRY 1 - -#define SMB_ACL_TYPE_ACCESS ACL_TYPE_ACCESS -#define SMB_ACL_TYPE_DEFAULT ACL_TYPE_DEFAULT - -#elif defined(HAVE_AIX_ACLS) - -/* Donated by Medha Date, mdate@austin.ibm.com, for IBM */ - -#include <acl.h> - -typedef uint *SMB_ACL_PERMSET_T; - -struct acl_entry_link{ - struct acl_entry_link *prevp; - struct new_acl_entry *entryp; - struct acl_entry_link *nextp; - int count; -}; - -struct new_acl_entry{ - unsigned short ace_len; - unsigned short ace_type; - unsigned int ace_access; - struct ace_id ace_id[1]; -}; - -#define SMB_ACL_ENTRY_T struct new_acl_entry* -#define SMB_ACL_T struct acl_entry_link* - -#define SMB_ACL_TAG_T unsigned short -#define SMB_ACL_TYPE_T int -#define SMB_ACL_PERM_T uint -#define SMB_ACL_READ S_IRUSR -#define SMB_ACL_WRITE S_IWUSR -#define SMB_ACL_EXECUTE S_IXUSR - -/* Types of ACLs. */ -#define SMB_ACL_USER ACEID_USER -#define SMB_ACL_USER_OBJ 3 -#define SMB_ACL_GROUP ACEID_GROUP -#define SMB_ACL_GROUP_OBJ 4 -#define SMB_ACL_OTHER 5 -#define SMB_ACL_MASK 6 - - -#define SMB_ACL_FIRST_ENTRY 1 -#define SMB_ACL_NEXT_ENTRY 2 - -#define SMB_ACL_TYPE_ACCESS 0 -#define SMB_ACL_TYPE_DEFAULT 1 - -#else /* No ACLs. */ - -/* No ACLS - fake it. */ -#define SMB_ACL_TAG_T int -#define SMB_ACL_TYPE_T int -#define SMB_ACL_PERMSET_T mode_t -#define SMB_ACL_PERM_T mode_t -#define SMB_ACL_READ S_IRUSR -#define SMB_ACL_WRITE S_IWUSR -#define SMB_ACL_EXECUTE S_IXUSR - -/* Types of ACLs. */ -#define SMB_ACL_USER 0 -#define SMB_ACL_USER_OBJ 1 -#define SMB_ACL_GROUP 2 -#define SMB_ACL_GROUP_OBJ 3 -#define SMB_ACL_OTHER 4 -#define SMB_ACL_MASK 5 - -typedef struct SMB_ACL_T_ { - int dummy; + struct smb_acl_entry acl[1]; } *SMB_ACL_T; -typedef struct SMB_ACL_ENTRY_T_ { - int dummy; -} *SMB_ACL_ENTRY_T; +typedef struct smb_acl_entry *SMB_ACL_ENTRY_T; #define SMB_ACL_FIRST_ENTRY 0 #define SMB_ACL_NEXT_ENTRY 1 @@ -271,5 +62,4 @@ typedef struct SMB_ACL_ENTRY_T_ { #define SMB_ACL_TYPE_ACCESS 0 #define SMB_ACL_TYPE_DEFAULT 1 -#endif /* No ACLs. */ #endif /* _SMB_ACLS_H */ |