summaryrefslogtreecommitdiff
path: root/source4/librpc/idl/misc.idl
blob: 031ca89821adfca9a502cd85396f09bc4e47014c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
  miscellaneous IDL structures
*/

[] 
interface misc
{

	/* a domain SID. Note that unlike Samba3 this contains a pointer,
	   so you can't copy them using assignment */
	typedef [public,noprint] struct {
		uint8  sid_rev_num;             /**< SID revision number */
		uint8  num_auths;               /**< Number of sub-authorities */
		uint8  id_auth[6];              /**< Identifier Authority */
		uint32 sub_auths[num_auths];
	} dom_sid;

	typedef [public] struct {
		uint8 type;  /* xxxx_xxxx_ACE_TYPE - e.g allowed / denied etc */
		uint8 flags; /* xxxx_INHERIT_xxxx - e.g OBJECT_INHERIT_ACE */
		uint32 access_mask;

#if 0
		/* the 'obj' part is present when type is XXXX_TYPE_XXXX_OBJECT */
		struct {
			uint32 flags;
			GUID object_guid;
			GUID inherit_guid;
		} *obj;
#endif

		dom_sid trustee;
	} security_ace;

	typedef [public] struct {
		uint16 revision;
		uint32 num_aces;
		security_ace aces[num_aces];
	} security_acl;


	typedef [public] struct {
		uint8 revision;
		uint16 type;     /* SEC_DESC_xxxx flags */
		[relative] dom_sid *owner_sid; 
		[relative] dom_sid *group_sid;
		[relative] security_acl *sacl; /* system ACL */
		[relative] security_acl *dacl; /* user (discretionary) ACL */
	} security_descriptor;

	/* we declare this noprint so we can supply
	   a nicer pretty-print routine */
	typedef [public, noprint] struct {
		uint8 data[20];
	} policy_handle;


}