7f672996b0b4196dee9de8a36bfe4f32e561a79b
[amitay/samba.git] / librpc / idl / smb_acl.idl
1 /* 
2    Unix SMB/CIFS implementation.
3    Portable SMB ACL interface
4    Copyright (C) Jeremy Allison 2000
5    Copyright (C) Andrew Bartlett 2012
6    
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11    
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16    
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 */
20
21
22 /* Allow the smb_acl interface to be pushed into an NDR blob and read/written in python */
23 [
24         pointer_default(unique)
25 ]
26 interface smb_acl
27 {
28
29         const int SMB_ACL_READ                          = 4;
30         const int SMB_ACL_WRITE                         = 2;
31         const int SMB_ACL_EXECUTE                       = 1;
32
33         /* Types of ACLs. */
34         typedef enum {
35                 SMB_ACL_TAG_INVALID = 0,
36                 SMB_ACL_USER        = 1,
37                 SMB_ACL_USER_OBJ    = 2,
38                 SMB_ACL_GROUP       = 3,
39                 SMB_ACL_GROUP_OBJ   = 4,
40                 SMB_ACL_OTHER       = 5,
41                 SMB_ACL_MASK        = 6
42         } smb_acl_tag_t;
43         
44         typedef struct {
45                 smb_acl_tag_t a_type;
46                 mode_t a_perm;
47                 uid_t uid;
48                 gid_t gid;
49         } smb_acl_entry;
50         
51         [public] typedef struct {
52                 int     size;
53                 int     count;
54                 int     next;
55                 [size_is(count)] smb_acl_entry acl[*];
56         } smb_acl_t;
57         
58         const int SMB_ACL_FIRST_ENTRY           = 0;
59         const int SMB_ACL_NEXT_ENTRY            = 1;
60                 
61         const int SMB_ACL_TYPE_ACCESS           = 0;
62         const int SMB_ACL_TYPE_DEFAULT          = 1;
63 }