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