summaryrefslogtreecommitdiff
path: root/source4/librpc/idl/misc.idl
blob: eb2288bc353937917f6f1bd96074860e9cce43b8 (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
59
60
61
62
63
64
65
66
67
68
69
#include "idl_types.h"

/*
  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;

	typedef [public, flag(NDR_PAHEX)] struct {
		uint8 data[20];
	} policy_handle;


	/* a 4 byte aligned 64-bit integer */
	typedef [public] struct {
		uint32 low;
		uint32 high;
	} ULONG8;

	/* this is also used in samr and netlogon */
	typedef [public, flag(NDR_PAHEX)] struct {
		uint32 units_per_week;
		[size_is(1260), length_is(units_per_week/8)] uint8 *bitmap;
	} samr_LogonHours;
}