after discussions with lukeh, I think we found a alignment bug in old
[jelmer/samba4-debian.git] / source / librpc / idl / lsa.idl
1 /*
2   lsa interface definition
3 */
4
5 [ uuid(12345778-1234-abcd-ef00-0123456789ab),
6   version(0.0),
7   pointer_default(unique)
8 ] interface lsarpc
9 {
10         /******************/
11         /* Function: 0x00 */
12         NTSTATUS lsa_Close (
13                 [in,out,ref]     policy_handle *handle
14                 );
15         
16
17         /******************/
18         /* Function: 0x01 */
19         NTSTATUS lsa_Delete (
20                 [in,ref]     policy_handle *handle
21                 );
22
23
24         /******************/
25         /* Function: 0x02 */
26
27         typedef struct {
28                 [value(2*strlen_m(r->name))] uint16 name_len;
29                 [value(r->name_len)] uint16 name_size;
30                 unistr_noterm *name;
31         } lsa_Name;
32
33         typedef struct {
34                 lsa_Name name;
35                 uint32 luid_low;
36                 uint32 luid_high;
37         } lsa_PrivEntry;
38
39         typedef struct {
40                 uint32 count;
41                 [size_is(count)] lsa_PrivEntry *privs;
42         } lsa_PrivArray;
43
44         NTSTATUS lsa_EnumPrivs (
45                 [in,ref]     policy_handle *handle,
46                 [in,out,ref] uint32 *resume_handle,
47                 [in]         uint32 max_count,
48                 [out,ref]    lsa_PrivArray *privs
49                 );
50
51
52         /******************/
53         /* Function: 0x03 */
54
55         typedef struct {
56                 uint32 size;
57                 [subcontext] security_descriptor *sd;
58         } sec_desc_buf;
59
60         NTSTATUS lsa_QuerySecObj (
61                 [in,ref]     policy_handle *handle,
62                 [in]         uint32 sec_info,
63                 [out]        sec_desc_buf *sd
64                 );
65
66
67         /******************/
68         /* Function: 0x04 */
69         NTSTATUS lsa_SetSecObj ();
70
71
72         /******************/
73         /* Function: 0x05 */
74         NTSTATUS lsa_ChangePassword ();
75
76
77         /******************/
78         /* Function: 0x06 */
79         typedef struct {
80                 uint32  len; /* ignored */
81                 uint16  impersonation_level;
82                 uint8   context_mode;
83                 uint8   effective_only;
84         } lsa_QosInfo;
85         
86         typedef struct {
87                 uint32 len; /* ignored */
88                 uint8 *root_dir;
89                 unistr *object_name;
90                 uint32 attributes;
91                 security_descriptor *sec_desc;
92                 lsa_QosInfo *sec_qos;
93         } lsa_ObjectAttribute;
94
95         /* notice the screwup with the system_name - thats why MS created
96            OpenPolicy2 */
97         NTSTATUS lsa_OpenPolicy (
98                 [in]       uint16 *system_name,
99                 [in,ref]   lsa_ObjectAttribute *attr,
100                 [in]       uint32 desired_access,
101                 [out,ref]  policy_handle *handle
102                 );
103         
104
105
106         /******************/
107         /* Function: 0x07 */
108
109         typedef struct {
110                 uint32 percent_full;
111                 uint32 log_size;
112                 NTTIME retention_time;
113                 uint8  shutdown_in_progress;
114                 NTTIME time_to_shutdown;
115                 uint32 next_audit_record;
116                 uint32 unknown;
117         } lsa_AuditLogInfo;
118
119         typedef struct {
120                 uint32 auditing_mode;
121                 [size_is(count)] uint32 *settings;
122                 uint32 count;
123         } lsa_AuditEventsInfo;
124
125         typedef struct {
126                 lsa_Name name;
127                 dom_sid2 *sid;
128         } lsa_DomainInfo;
129
130         typedef struct {
131                 lsa_Name name;
132         } lsa_PDAccountInfo;
133
134         typedef struct {
135                 uint16 unknown; /* an midl padding bug? */
136                 uint16 role;
137         } lsa_ServerRole;
138
139         typedef struct {
140                 lsa_Name source;
141                 lsa_Name account;
142         } lsa_ReplicaSourceInfo;
143
144         typedef struct {
145                 uint32 paged_pool;
146                 uint32 non_paged_pool;
147                 uint32 min_wss;
148                 uint32 max_wss;
149                 uint32 pagefile;
150                 HYPER_T unknown;
151         } lsa_DefaultQuotaInfo;
152
153         typedef struct {
154                 HYPER_T modified_id;
155                 NTTIME db_create_time;
156         } lsa_ModificationInfo;
157
158         typedef struct {
159                 uint8 shutdown_on_full;
160         } lsa_AuditFullSetInfo;
161
162         typedef struct {
163                 uint16 unknown; /* an midl padding bug? */
164                 uint8 shutdown_on_full;
165                 uint8 log_is_full;
166         } lsa_AuditFullQueryInfo;
167
168         typedef struct {
169                 lsa_Name name;
170                 lsa_Name dns_domain;
171                 lsa_Name dns_forest;
172                 GUID domain_guid;
173                 dom_sid2 *sid;
174         } lsa_DnsDomainInfo;
175
176         typedef union {
177                 case(1)  lsa_AuditLogInfo audit_log;
178                 case(2)  lsa_AuditEventsInfo audit_events;
179                 case(3)  lsa_DomainInfo domain;
180                 case(4)  lsa_PDAccountInfo pd;
181                 case(5)  lsa_DomainInfo account_domain;
182                 case(6)  lsa_ServerRole role;
183                 case(7)  lsa_ReplicaSourceInfo replica;
184                 case(8)  lsa_DefaultQuotaInfo quota;
185                 case(9)  lsa_ModificationInfo db;
186                 case(10) lsa_AuditFullSetInfo auditfullset;
187                 case(11) lsa_AuditFullQueryInfo auditfullquery;
188                 case(12) lsa_DnsDomainInfo dns;
189         } lsa_PolicyInformation;
190
191         NTSTATUS lsa_QueryInfoPolicy (
192                 [in,ref]                 policy_handle *handle,
193                 [in]                     uint16 level,
194                 [out,switch_is(level)]   lsa_PolicyInformation *info
195                 );
196
197         /******************/
198         /* Function:       0x08 */
199         NTSTATUS lsa_SetInfoPolicy ();
200
201         /******************/
202         /* Function:       0x09 */
203         NTSTATUS lsa_ClearAuditLog ();
204
205         /******************/
206         /* Function: 0x0a */
207         NTSTATUS lsa_CreateAccount ();
208
209
210         /******************/
211         /* Function: 0x0b */
212         typedef struct {
213                 dom_sid2 *sid;
214         } lsa_SidPtr;
215         
216         typedef struct {
217                 uint32 num_sids;
218                 [size_is(num_sids)] lsa_SidPtr *sids;
219         } lsa_SidArray;
220
221         NTSTATUS lsa_EnumAccounts (
222                 [in,ref]     policy_handle *handle,
223                 [in,out,ref] uint32 *resume_handle,
224                 [in]         uint32 num_entries,
225                 [out,ref]    lsa_SidArray *sids
226                 );
227
228
229         /*************************************************/
230         /* Function: 0x0c                                */
231         NTSTATUS lsa_CreateTrustDom ();
232
233
234         /******************/
235         /* Function: 0x0d */
236
237         typedef struct {
238                 lsa_Name name;
239                 dom_sid2 *sid;
240         } lsa_DomainInformation;
241
242         typedef struct {
243                 uint32 count;
244                 [size_is(count)] lsa_DomainInformation *domains;
245         } lsa_DomainList;
246
247         NTSTATUS lsa_EnumTrustDom (
248                 [in,ref]     policy_handle *handle,
249                 [in,out,ref] uint32 *resume_handle,
250                 [in]         uint32 num_entries,
251                 [out,ref]    lsa_DomainList *domains
252                 );
253
254
255         /******************/
256         /* Function: 0x0e */
257
258         typedef struct {
259                 uint16 sid_type;
260                 uint32 rid;
261                 uint32 sid_index;
262         } lsa_TranslatedSid;
263
264         typedef struct {
265                 uint32 count;
266                 [size_is(count)] lsa_TranslatedSid *sids;
267         } lsa_TransSidArray;
268
269         typedef struct {
270                 lsa_Name name;
271                 dom_sid2 *sid;
272         } lsa_TrustInformation;
273
274         typedef struct {
275                 uint32 count;
276                 [size_is(count)] lsa_TrustInformation *domains;
277                 uint32 max_count;
278         } lsa_RefDomainList;
279
280         NTSTATUS lsa_LookupNames (
281                 [in,ref]     policy_handle *handle,
282                 [in]         uint32 num_names,
283                 [in,ref,size_is(num_names)]  lsa_Name *names,
284                 [out]        lsa_RefDomainList *domains,
285                 [in,out,ref] lsa_TransSidArray *sids,
286                 [in]         uint16 level,
287                 [in,out,ref] uint32 *count
288                 );
289
290
291         /******************/
292         /* Function: 0x0f */
293
294         typedef struct {
295                 uint16 sid_type;
296                 lsa_Name name;
297                 uint32 sid_index;
298         } lsa_TranslatedName;
299
300         typedef struct {
301                 uint32 count;
302                 [size_is(count)] lsa_TranslatedName *names;
303         } lsa_TransNameArray;
304
305         NTSTATUS lsa_LookupSids (
306                 [in,ref]     policy_handle *handle,
307                 [in,ref]     lsa_SidArray *sids,
308                 [out]        lsa_RefDomainList *domains,
309                 [in,out,ref] lsa_TransNameArray *names,
310                 [in]         uint16 level,
311                 [in,out,ref] uint32 *count
312                 );
313
314
315         /* Function:        0x10 */
316         NTSTATUS CREATESECRET ();
317
318
319         /*****************************************/
320         /* Function:     0x11                    */
321         NTSTATUS lsa_OpenAccount (
322                 [in,ref]     policy_handle *handle,
323                 [in,ref]     dom_sid2 *sid,
324                 [in]         uint32 desired_access,
325                 [out,ref]    policy_handle *acct_handle
326                 );
327
328
329         /****************************************/
330         /* Function:    0x12                    */
331
332         typedef struct {
333                 uint32 low;
334                 uint32 high;
335         } lsa_LUID;
336         
337         typedef struct {
338                 lsa_LUID luid;
339                 uint32 attribute;
340         } lsa_LUIDAttribute;
341         
342         typedef struct {
343                 uint32 count;
344                 uint32 unknown;
345                 [size_is(count)] lsa_LUIDAttribute set[*];
346         } lsa_PrivilegeSet;
347         
348         NTSTATUS lsa_EnumPrivsAccount (
349                 [in,ref]     policy_handle *handle,
350                 [out]        lsa_PrivilegeSet *privs
351                 );
352
353
354         /* Function:            0x13 */
355         NTSTATUS ADDPRIVS ();
356         /* Function:         0x14 */
357         NTSTATUS REMOVEPRIVS ();
358         /* Function:           0x15 */
359         NTSTATUS GETQUOTAS ();
360         /* Function:           0x16 */
361         NTSTATUS SETQUOTAS ();
362         /* Function:    0x17 */
363         NTSTATUS GETSYSTEMACCOUNT ();
364         /* Function:    0x18 */
365         NTSTATUS SETSYSTEMACCOUNT ();
366         /* Function:        0x19 */
367         NTSTATUS OPENTRUSTDOM ();
368         /* Function:       0x1a */
369         NTSTATUS QUERYTRUSTDOM ();
370         /* Function:     0x1b */
371         NTSTATUS SETINFOTRUSTDOM ();
372         /* Function:          0x1c */
373         NTSTATUS OPENSECRET ();
374         /* Function:           0x1d */
375         NTSTATUS SETSECRET ();
376         /* Function:         0x1e */
377         NTSTATUS QUERYSECRET ();
378
379         /* Function:     0x1f */
380         NTSTATUS LOOKUPPRIVVALUE ();
381
382
383         /* Function:      0x20 */
384         NTSTATUS lsa_LookupPrivName (
385                 [in,ref]     policy_handle *handle,
386                 [in,ref]     lsa_LUID *luid,
387                 [out]        lsa_Name *name
388                 );
389
390
391         /* Function:  0x21 */
392         NTSTATUS PRIV_GET_DISPNAME ();
393         /* Function:        0x22 */
394         NTSTATUS DELETEOBJECT ();
395         /* Function:   0x23 */
396         NTSTATUS ENUMACCTWITHRIGHT ();
397
398         /* Function:      0x24 */
399         typedef struct {
400                 unistr *name;
401         } lsa_RightAttribute;
402         
403         typedef struct {
404                 uint32 count;
405                 [size_is(count)] lsa_Name *names;
406         } lsa_RightSet;
407         
408         NTSTATUS lsa_EnumAccountRights (
409                 [in,ref]     policy_handle *handle,
410                 [in,ref]     dom_sid2 *sid,
411                 [out,ref]    lsa_RightSet *rights
412                 );
413
414
415         /* Function:       0x25 */
416         NTSTATUS ADDACCTRIGHTS ();
417         /* Function:    0x26 */
418         NTSTATUS REMOVEACCTRIGHTS ();
419         /* Function:   0x27 */
420         NTSTATUS QUERYTRUSTDOMINFO ();
421         /* Function:     0x28 */
422         NTSTATUS SETTRUSTDOMINFO ();
423         /* Function:      0x29 */
424         NTSTATUS DELETETRUSTDOM ();
425         /* Function:       0x2a */
426         NTSTATUS STOREPRIVDATA ();
427         /* Function:        0x2b */
428         NTSTATUS RETRPRIVDATA ();
429
430
431         /**********************/
432         /* Function:     0x2c */
433         NTSTATUS lsa_OpenPolicy2 (
434                 [in]      unistr *system_name,
435                 [in,ref]  lsa_ObjectAttribute *attr,
436                 [in]      uint32 desired_access,
437                 [out,ref] policy_handle *handle
438                 );
439
440
441         /* Function:    0x2d */
442         NTSTATUS UNK_GET_CONNUSER ();
443         /* Function:          0x2e */
444         NTSTATUS QUERYINFO2 ();
445
446
447
448 }