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