summaryrefslogtreecommitdiff
path: root/source3/include/smb_acls.h
diff options
context:
space:
mode:
authorJim McDonough <jmcd@samba.org>2006-07-21 15:51:34 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:38:17 -0500
commitba72b0242e29e7cc97f02af27290806a07305350 (patch)
treebe4804c962c48eb99dc7689283117d22d16ab5c4 /source3/include/smb_acls.h
parente0c68d0a1d591e4285746a8af70040448752a735 (diff)
downloadsamba-ba72b0242e29e7cc97f02af27290806a07305350.tar.gz
samba-ba72b0242e29e7cc97f02af27290806a07305350.tar.bz2
samba-ba72b0242e29e7cc97f02af27290806a07305350.zip
r17179: Merge the vl-posixacls tmp branch into mainline. It
modularizes our interface into the special posix API used on the system. Without this patch the specific API flavor is determined at compile time, something which severely limits usability on systems with more than one file system. Our first targets are AIX with its JFS and JFS2 APIs, at a later stage also GPFS. But it's certainly not limited to IBM stuff, this abstraction is also necessary for anything that copes with NFSv4 ACLs. For this we will check in handling very soon. Major contributions can be found in the copyright notices as well as the checkin log of the vl-posixacls branch. The final merge to 3_0 post-3.0.23 was done by Peter Somogyi <psomogyi@gamax.hu> (This used to be commit ca0c73f281a2a65a988094a46bb3e46a94011a53)
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 */