2000-12-06 05:32:48 +03:00
/*
2002-01-30 09:08:46 +03:00
Unix SMB / CIFS implementation .
2000-12-06 05:32:48 +03:00
Portable SMB ACL interface
Copyright ( C ) Jeremy Allison 2000
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-09 23:25:36 +04:00
the Free Software Foundation ; either version 3 of the License , or
2000-12-06 05:32:48 +03:00
( at your option ) any later version .
This program 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 General Public License for more details .
You should have received a copy of the GNU General Public License
2007-07-10 04:52:41 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2000-12-06 05:32:48 +03:00
*/
# ifndef _SMB_ACLS_H
# define _SMB_ACLS_H
2012-08-12 16:02:23 +04:00
# include "librpc/gen_ndr/smb_acl.h"
2012-06-05 14:33:52 +04:00
struct vfs_handle_struct ;
struct files_struct ;
2017-05-24 01:33:31 +03:00
struct smb_filename ;
2012-06-05 14:33:52 +04:00
2001-02-15 22:56:10 +03:00
typedef int SMB_ACL_TYPE_T ;
2017-12-05 21:56:49 +03:00
/*
* struct smb_acl_entry is defined in IDL as
* using mode_t values , pidl always converts these
* to uint32_t . Ensure the external type definitions
* match .
*/
typedef uint32_t * SMB_ACL_PERMSET_T ;
typedef uint32_t SMB_ACL_PERM_T ;
2001-12-15 05:40:16 +03:00
2006-07-21 19:51:34 +04:00
typedef enum smb_acl_tag_t SMB_ACL_TAG_T ;
2012-08-12 16:02:23 +04:00
typedef struct smb_acl_t * SMB_ACL_T ;
2000-12-06 05:32:48 +03:00
2006-07-21 19:51:34 +04:00
typedef struct smb_acl_entry * SMB_ACL_ENTRY_T ;
2000-12-06 05:32:48 +03:00
2012-06-05 14:33:52 +04:00
/* The following definitions come from lib/sysacls.c */
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 ) ;
2012-10-10 03:18:32 +04:00
SMB_ACL_T sys_acl_init ( TALLOC_CTX * mem_ctx ) ;
2012-06-05 14:33:52 +04:00
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 ,
2017-05-24 03:11:18 +03:00
const struct smb_filename * smb_fname ,
SMB_ACL_TYPE_T type ,
TALLOC_CTX * mem_ctx ) ;
2012-10-10 03:18:32 +04:00
SMB_ACL_T sys_acl_get_fd ( struct vfs_handle_struct * handle , struct files_struct * fsp ,
TALLOC_CTX * mem_ctx ) ;
2012-06-05 14:33:52 +04:00
int sys_acl_set_file ( struct vfs_handle_struct * handle ,
2017-05-24 20:47:46 +03:00
const struct smb_filename * smb_fname ,
SMB_ACL_TYPE_T type ,
SMB_ACL_T acl_d ) ;
2012-06-05 14:33:52 +04:00
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 ,
2017-05-24 01:33:31 +03:00
const struct smb_filename * smb_fname ) ;
2012-06-05 14:33:52 +04:00
int no_acl_syscall_error ( int err ) ;
2000-12-06 05:32:48 +03:00
# endif /* _SMB_ACLS_H */