s3-libads: Add function to search for an element in an array.
[Samba.git] / librpc / idl / smb_acl.idl
blobf7332d9ac71292f6ed7b7a93bb5df118a7596e87
1 /*
2 Unix SMB/CIFS implementation.
3 Portable SMB ACL interface
4 Copyright (C) Jeremy Allison 2000
5 Copyright (C) Andrew Bartlett 2012
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.
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.
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/>.
22 /* Allow the smb_acl interface to be pushed into an NDR blob and read/written in python */
24 pointer_default(unique)
26 interface smb_acl
29 const int SMB_ACL_READ = 4;
30 const int SMB_ACL_WRITE = 2;
31 const int SMB_ACL_EXECUTE = 1;
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;
44 typedef struct {
45 uid_t uid;
46 } smb_acl_user;
48 typedef struct {
49 gid_t gid;
50 } smb_acl_group;
52 typedef [switch_type(uint16)] union {
53 [case (SMB_ACL_USER)] smb_acl_user user;
54 [case (SMB_ACL_USER_OBJ)];
55 [case (SMB_ACL_GROUP)] smb_acl_group group;
56 [case (SMB_ACL_GROUP_OBJ)];
57 [case (SMB_ACL_OTHER)];
58 [case (SMB_ACL_MASK)];
59 } smb_acl_entry_info;
61 typedef struct {
62 smb_acl_tag_t a_type;
63 [switch_is(a_type)] smb_acl_entry_info info;
64 mode_t a_perm;
65 } smb_acl_entry;
67 [public] typedef struct {
68 int count;
69 [value(0)] int next;
70 [size_is(count)] smb_acl_entry acl[*];
71 } smb_acl_t;
73 const int SMB_ACL_FIRST_ENTRY = 0;
74 const int SMB_ACL_NEXT_ENTRY = 1;
76 const int SMB_ACL_TYPE_ACCESS = 0;
77 const int SMB_ACL_TYPE_DEFAULT = 1;