a1f8549eaa217f60e7b847c01c443a4bb61ae9cf
[samba.git] / source4 / librpc / idl / misc.idl
1 #include "idl_types.h"
2
3 /*
4   miscellaneous IDL structures
5 */
6
7 [] 
8 interface misc
9 {
10
11         typedef [public,noprint] struct {
12                 uint32 time_low;
13                 uint16 time_mid;
14                 uint16 time_hi_and_version;
15                 uint8  clock_seq[2];
16                 uint8  node[6];
17         } GUID;
18
19         /* a domain SID. Note that unlike Samba3 this contains a pointer,
20            so you can't copy them using assignment */
21         typedef [public,noprint] struct {
22                 uint8  sid_rev_num;             /**< SID revision number */
23                 uint8  num_auths;               /**< Number of sub-authorities */
24                 uint8  id_auth[6];              /**< Identifier Authority */
25                 uint32 sub_auths[num_auths];
26         } dom_sid;
27
28         typedef [public] struct {
29                 uint8 type;  /* xxxx_xxxx_ACE_TYPE - e.g allowed / denied etc */
30                 uint8 flags; /* xxxx_INHERIT_xxxx - e.g OBJECT_INHERIT_ACE */
31                 uint32 access_mask;
32
33 #if 0
34                 /* the 'obj' part is present when type is XXXX_TYPE_XXXX_OBJECT */
35                 struct {
36                         uint32 flags;
37                         GUID object_guid;
38                         GUID inherit_guid;
39                 } *obj;
40 #endif
41
42                 dom_sid trustee;
43         } security_ace;
44
45         typedef [public] struct {
46                 uint16 revision;
47                 uint32 num_aces;
48                 security_ace aces[num_aces];
49         } security_acl;
50
51
52         typedef [public] struct {
53                 uint8 revision;
54                 uint16 type;     /* SEC_DESC_xxxx flags */
55                 [relative] dom_sid *owner_sid; 
56                 [relative] dom_sid *group_sid;
57                 [relative] security_acl *sacl; /* system ACL */
58                 [relative] security_acl *dacl; /* user (discretionary) ACL */
59         } security_descriptor;
60
61         typedef [public, flag(NDR_PAHEX)] struct {
62                 uint8 data[20];
63         } policy_handle;
64
65
66         /* a 4 byte aligned 64-bit integer */
67         typedef [public] struct {
68                 uint32 low;
69                 uint32 high;
70         } ULONG8;
71
72         /* this is also used in samr and netlogon */
73         typedef [public, flag(NDR_PAHEX)] struct {
74                 uint32 units_per_week;
75                 [size_is(1260), length_is(units_per_week/8)] uint8 *bitmap;
76         } samr_LogonHours;
77 }