summaryrefslogtreecommitdiff
path: root/source3/include/smb_acls.h
diff options
context:
space:
mode:
Diffstat (limited to 'source3/include/smb_acls.h')
-rw-r--r--source3/include/smb_acls.h250
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 */