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