s3: Remove header==NULL code from db_ctdb_marshall_record
[kai/samba.git] / source3 / include / smb_acls.h
index 3d9cfbf5d20b333e79f0ae8dd8bb4300bc8c79e5..3ac23dbbfd35f8a84d824070f7eeb32b0365f479 100644 (file)
 #ifndef _SMB_ACLS_H
 #define _SMB_ACLS_H
 
+#include "librpc/gen_ndr/smb_acl.h"
+
+struct vfs_handle_struct;
+struct files_struct;
+
 typedef int                    SMB_ACL_TYPE_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. */
-enum smb_acl_tag_t {
-       SMB_ACL_TAG_INVALID=0,
-       SMB_ACL_USER=1,
-       SMB_ACL_USER_OBJ,
-       SMB_ACL_GROUP,
-       SMB_ACL_GROUP_OBJ,
-       SMB_ACL_OTHER,
-       SMB_ACL_MASK
-};
 
 typedef enum smb_acl_tag_t SMB_ACL_TAG_T;
-
-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 {
-       int     size;
-       int     count;
-       int     next;
-       struct smb_acl_entry acl[1];
-} *SMB_ACL_T;
+typedef struct smb_acl_t *SMB_ACL_T;
 
 typedef struct smb_acl_entry   *SMB_ACL_ENTRY_T;
 
-#define SMB_ACL_FIRST_ENTRY                    0
-#define SMB_ACL_NEXT_ENTRY                     1
+/* The following definitions come from lib/sysacls.c  */
 
-#define SMB_ACL_TYPE_ACCESS                    0
-#define SMB_ACL_TYPE_DEFAULT           1
+int sys_acl_get_entry(SMB_ACL_T acl_d, int entry_id, SMB_ACL_ENTRY_T *entry_p);
+int sys_acl_get_tag_type(SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T *type_p);
+int sys_acl_get_permset(SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p);
+void *sys_acl_get_qualifier(SMB_ACL_ENTRY_T entry_d);
+int sys_acl_clear_perms(SMB_ACL_PERMSET_T permset_d);
+int sys_acl_add_perm(SMB_ACL_PERMSET_T permset_d, SMB_ACL_PERM_T perm);
+int sys_acl_get_perm(SMB_ACL_PERMSET_T permset_d, SMB_ACL_PERM_T perm);
+char *sys_acl_to_text(const struct smb_acl_t *acl_d, ssize_t *len_p);
+SMB_ACL_T sys_acl_init(TALLOC_CTX *mem_ctx);
+int sys_acl_create_entry(SMB_ACL_T *acl_p, SMB_ACL_ENTRY_T *entry_p);
+int sys_acl_set_tag_type(SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T tag_type);
+int sys_acl_set_qualifier(SMB_ACL_ENTRY_T entry_d, void *qual_p);
+int sys_acl_set_permset(SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T permset_d);
+int sys_acl_free_text(char *text);
+int sys_acl_valid(SMB_ACL_T acl_d);
+SMB_ACL_T sys_acl_get_file(struct vfs_handle_struct *handle,
+                          const char *path_p, SMB_ACL_TYPE_T type,
+                          TALLOC_CTX *mem_ctx);
+SMB_ACL_T sys_acl_get_fd(struct vfs_handle_struct *handle, struct files_struct *fsp,
+                        TALLOC_CTX *mem_ctx);
+int sys_acl_set_file(struct vfs_handle_struct *handle,
+                    const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d);
+int sys_acl_set_fd(struct vfs_handle_struct *handle, struct files_struct *fsp,
+                  SMB_ACL_T acl_d);
+int sys_acl_delete_def_file(struct vfs_handle_struct *handle,
+                           const char *path);
+int no_acl_syscall_error(int err);
 
 #endif /* _SMB_ACLS_H */