another big improvement in the credentials API. I think it now
[samba.git] / source4 / librpc / idl / netlogon.idl
1 /*
2   netlogon interface
3   much of this was derived from the ethereal sources - thanks to everyone 
4   who contributed!
5 */
6
7 #include "idl_types.h"
8
9 [
10   uuid(12345678-1234-abcd-ef00-01234567cffb),
11   version(1.0),
12   pointer_default(unique)
13 ]
14
15 interface netlogon
16 {
17
18         /*****************/
19         /* Function 0x00 */
20
21         typedef struct {
22                 unistr *account_name;
23                 uint32 priv;
24                 uint32 auth_flags;
25                 uint32 logon_count;
26                 uint32 bad_pw_count;
27                 time_t last_logon;
28                 time_t last_logoff;
29                 time_t logoff_time;
30                 time_t kickoff_time;
31                 uint32 password_age;
32                 time_t pw_can_change;
33                 time_t pw_must_change;
34                 unistr *computer;
35                 unistr *domain;
36                 unistr *script_path;
37                 uint32 unknown;
38         } netr_UasInfo;
39
40         WERROR netr_LogonUasLogon(
41                 [in]   unistr *server_name,
42                 [in]   unistr username,
43                 [in]   unistr workstation,
44                 [out]  netr_UasInfo *info
45                 );
46
47
48         /*****************/
49         /* Function 0x01 */
50
51         typedef struct {
52                 uint32 duration;
53                 uint16 logon_count;
54         } netr_UasLogoffInfo;
55
56         WERROR netr_LogonUasLogoff(
57                 [in] unistr *server_name,
58                 [in] unistr username,
59                 [in] unistr workstation,
60                 [out] netr_UasLogoffInfo info
61                 );
62
63
64         /*****************/
65         /* Function 0x02 */
66
67         typedef [flag(NDR_PAHEX)] struct {
68                 uint8 data[8];
69         } netr_Credential;
70
71         typedef [flag(NDR_PAHEX)] struct {
72                 uint8 session_key[8];
73                 uint32 sequence;
74                 netr_Credential seed;
75                 netr_Credential client;
76                 netr_Credential server;
77         } netr_CredentialState;
78
79         typedef struct {
80                 [value(strlen_m(r->string)*2)] uint16 size;
81                 [value(r->size)]               uint16 length;
82                 unistr_noterm *string;
83         } netr_String;
84
85         typedef struct {
86                 netr_String domain_name;
87                 uint32      parameter_control;
88                 uint32      logon_id_low;
89                 uint32      logon_id_high;
90                 netr_String username;
91                 netr_String workstation;
92         } netr_IdentityInfo;
93
94         typedef [flag(NDR_PAHEX)] struct {
95                 uint8 data[16];
96         } netr_Password;
97
98         typedef struct {
99                 netr_IdentityInfo identity_info;
100                 netr_Password lmpassword;
101                 netr_Password ntpassword;
102         } netr_PasswordInfo;
103
104         typedef [flag(NDR_PAHEX)] struct {
105                 uint16 length;
106                 [value(r->length)] uint16 size;
107                 [size_is(size),length_is(length)] uint8 *data;
108         } netr_ChallengeResponse;
109
110         typedef [flag(NDR_PAHEX)] struct {
111                 netr_IdentityInfo logon_info;
112                 uint8 challenge[8];
113                 netr_ChallengeResponse nt;
114                 netr_ChallengeResponse lm;
115         } netr_NetworkInfo;
116
117         typedef union {
118                 [case(1)] netr_PasswordInfo *interactive;
119                 [case(2)] netr_NetworkInfo  *network;
120                 [case(3)] netr_PasswordInfo *service;
121         } netr_LogonLevel;
122
123         typedef struct {
124                 netr_Credential cred;
125                 time_t timestamp;
126         } netr_Authenticator;
127
128         typedef struct {
129                 uint32 user_id;
130                 uint32 attributes;
131         } netr_GroupMembership;
132
133         typedef [flag(NDR_PAHEX)] struct {
134                 uint8 user_session_key[16];
135         } netr_UserSessionKey;
136
137         typedef struct {
138                 NTTIME logon_time;
139                 NTTIME logoff_time;
140                 NTTIME kickoff_time;
141                 NTTIME passwd_last_set;
142                 NTTIME passwd_can_change;
143                 NTTIME passwd_must_change;
144                 netr_String account_name;
145                 netr_String full_name;
146                 netr_String logon_script;
147                 netr_String profile_path;
148                 netr_String home_dir;
149                 netr_String home_drive;
150                 uint16 logon_count;
151                 uint16 bad_passwd_count;
152                 uint32 userid;
153                 uint32 primary_group;
154                 uint32 group_count;
155                 [size_is(group_count)] netr_GroupMembership *groupids;
156                 uint32 user_flags;
157                 netr_UserSessionKey key;
158                 netr_String logon_server;
159                 netr_String domain;
160                 dom_sid2 *domain_sid;
161                 uint32 expansionroom[10];
162         } netr_SamInfo;
163
164         typedef struct {
165                 dom_sid2 *sid;
166                 uint32 attribute;
167         } netr_SidAttr;
168
169         typedef struct {
170                 NTTIME logon_time;
171                 NTTIME logoff_time;
172                 NTTIME kickoff_time;
173                 NTTIME passwd_last_set;
174                 NTTIME passwd_can_change;
175                 NTTIME passwd_must_change;
176                 netr_String account_name;
177                 netr_String full_name;
178                 netr_String logon_script;
179                 netr_String profile_path;
180                 netr_String home_dir;
181                 netr_String home_drive;
182                 uint16 logon_count;
183                 uint16 bad_passwd_count;
184                 uint32 userid;
185                 uint32 primary_group;
186                 uint32 group_count;
187                 [size_is(group_count)] netr_GroupMembership *groupids;
188                 uint32 user_flags;
189                 netr_UserSessionKey key;
190                 netr_String logon_server;
191                 netr_String domain;
192                 dom_sid2 *domain_sid;
193                 uint32 expansionroom[10];
194                 uint32 sidcount;
195                 [size_is(sidcount)] netr_SidAttr *sids;
196         } netr_SamInfo2;
197
198         typedef struct {
199                 uint32 pac_size;
200                 [size_is(pac_size)] uint8 *pac;
201                 netr_String logon_domain;
202                 netr_String logon_server;
203                 netr_String principal_name;
204                 uint32 auth_size;
205                 [size_is(auth_size)] uint8 *auth;
206                 netr_UserSessionKey user_session_key;
207                 uint32 expansionroom[10];
208                 netr_String unknown1;
209                 netr_String unknown2;
210                 netr_String unknown3;
211                 netr_String unknown4;
212         } netr_PacInfo;
213
214         typedef union {
215                 [case(2)] netr_SamInfo  *sam;
216                 [case(3)] netr_SamInfo2 *sam2;
217                 [case(4)] netr_PacInfo  *pac;
218                 [case(5)] netr_PacInfo  *pac2;
219         } netr_Validation;
220
221         NTSTATUS netr_LogonSamLogon(
222                 [in] unistr *server_name,
223                 [in] unistr *workstation,
224                 [in] netr_Authenticator *credential,
225                 [in][out] netr_Authenticator *authenticator,
226                 [in]  uint16 logon_level,
227                 [in]  [switch_is(logon_level)] netr_LogonLevel logon,
228                 [in]  uint16 validation_level,
229                 [out] [switch_is(validation_level)] netr_Validation validation,
230                 [out] uint32 authoritative
231                 );
232
233
234         /*****************/
235         /* Function 0x03 */
236
237         NTSTATUS netr_LogonSamLogoff(
238                 [in] unistr *server_name,
239                 [in] unistr *computer_name,
240                 [in]      netr_Authenticator *credential,
241                 [in][out] netr_Authenticator *return_authenticator,
242                 [in] uint16 logon_level,
243                 [in] [switch_is(logon_level)] netr_LogonLevel logon
244                 );
245
246
247
248         /*****************/
249         /* Function 0x04 */
250
251         NTSTATUS netr_ServerReqChallenge(
252                 [in]        unistr *server_name,
253                 [in]        unistr computer_name,
254                 [in][out]   netr_Credential credentials
255                 );
256
257
258         /*****************/
259         /* Function 0x05 */
260
261         NTSTATUS netr_ServerAuthenticate(
262                 [in]        unistr *server_name,
263                 [in]        unistr username,
264                 [in]        uint16 secure_challenge_type,
265                 [in]        unistr computer_name,
266                 [in,out]    netr_Credential credentials
267                 );
268
269
270         /*****************/
271         /* Function 0x06 */
272
273         NTSTATUS netr_ServerPasswordSet(
274                 [in]  unistr *server_name,
275                 [in]  unistr username,
276                 [in]  uint16 secure_challenge_type,
277                 [in]  unistr computer_name,
278                 [in]  netr_Authenticator credential,
279                 [in]  netr_Password new_password,
280                 [out] netr_Authenticator return_authenticator
281                 );
282
283 #if 0
284
285         /*****************/
286         /* Function 0x07 */
287
288         typedef struct {
289                 unistr *username;
290                 netr_String unknown1;
291                 netr_String unknown2;
292                 netr_String unknown3;
293                 netr_String unknown4;
294                 uint32 unknown5;
295                 uint32 unknown6;
296                 uint32 unknown7;
297                 uint32 unknown8;
298         } DELTA_DELETE_USER;
299
300         typedef struct {
301                 bool SensitiveDataFlag;
302                 uint32 DataLength;
303                 [size_is(DataLength)] uint8 *SensitiveData;
304         } USER_PRIVATE_INFO;
305
306         typedef struct {
307                 netr_String username;
308                 netr_String FullName;
309                 uint32 UserID;
310                 uint32 PrimaryGroupID;
311                 netr_String HomeDir;
312                 netr_String HomeDirDrive;
313                 netr_String LogonScript;
314                 netr_String Comment;
315                 netr_String workstations;
316                 NTTIME LastLogon;
317                 NTTIME LastLogoff;
318                 LOGON_HOURS logonhours;
319                 uint16 BadPwCount;
320                 uint16 LogonCount;
321                 NTTIME PwLastSet;
322                 NTTIME AccountExpires;
323                 uint32 AccountControl;
324                 LM_OWF_PASSWORD lmpw;
325                 NT_OWF_PASSWORD ntpw;
326                 bool NTPwPresent;
327                 bool LMPwPresent;
328                 bool PwExpired;
329                 netr_String UserComment;
330                 netr_String Parameters;
331                 uint16 CountryCode;
332                 uint16 CodePage;
333                 USER_PRIVATE_INFO user_private_info;
334                 uint32 SecurityInformation;
335                 LSA_SECURITY_DESCRIPTOR sec_desc;
336                 netr_String unknown1;
337                 netr_String unknown2;
338                 netr_String unknown3;
339                 netr_String unknown4;
340                 uint32 unknown5;
341                 uint32 unknown6;
342                 uint32 unknown7;
343                 uint32 unknown8;
344         } DELTA_USER;
345
346         typedef struct {
347                 netr_String DomainName;
348                 netr_String OEMInfo;
349                 NTTIME forcedlogoff;
350                 uint16 minpasswdlen;
351                 uint16 passwdhistorylen;
352                 NTTIME pwd_must_change_time;
353                 NTTIME pwd_can_change_time;
354                 NTTIME domain_modify_time;
355                 NTTIME domain_create_time;
356                 uint32 SecurityInformation;
357                 LSA_SECURITY_DESCRIPTOR sec_desc;
358                 netr_String unknown1;
359                 netr_String unknown2;
360                 netr_String unknown3;
361                 netr_String unknown4;
362                 uint32 unknown5;
363                 uint32 unknown6;
364                 uint32 unknown7;
365                 uint32 unknown8;
366         } DELTA_DOMAIN;
367
368         typedef struct {
369                 netr_String groupname;
370                 GROUP_MEMBERSHIP group_membership;
371                 netr_String comment;
372                 uint32 SecurityInformation;
373                 LSA_SECURITY_DESCRIPTOR sec_desc;
374                 netr_String unknown1;
375                 netr_String unknown2;
376                 netr_String unknown3;
377                 netr_String unknown4;
378                 uint32 unknown5;
379                 uint32 unknown6;
380                 uint32 unknown7;
381                 uint32 unknown8;
382         } DELTA_GROUP;
383
384         typedef struct {
385                 netr_String OldName;
386                 netr_String NewName;
387                 netr_String unknown1;
388                 netr_String unknown2;
389                 netr_String unknown3;
390                 netr_String unknown4;
391                 uint32 unknown5;
392                 uint32 unknown6;
393                 uint32 unknown7;
394                 uint32 unknown8;
395         } DELTA_RENAME;
396
397         typedef struct {
398                 [size_is(num_rids)] uint32 *rids;
399                 [size_is(num_rids)] uint32 *attribs;
400                 uint32 num_rids;
401                 uint32 unknown1;
402                 uint32 unknown2;
403                 uint32 unknown3;
404                 uint32 unknown4;
405         } DELTA_GROUP_MEMBER;
406
407         typedef struct {
408                 netr_String alias_name;
409                 uint32 rid;
410                 uint32 SecurityInformation;
411                 LSA_SECURITY_DESCRIPTOR sec_desc;
412                 netr_String unknown1;
413                 netr_String unknown2;
414                 netr_String unknown3;
415                 netr_String unknown4;
416                 uint32 unknown5;
417                 uint32 unknown6;
418                 uint32 unknown7;
419                 uint32 unknown8;
420         } DELTA_ALIAS;
421
422         typedef struct {
423                  SID_ARRAY sids;
424                 uint32 unknown1;
425                 uint32 unknown2;
426                 uint32 unknown3;
427                 uint32 unknown4;
428         } DELTA_ALIAS_MEMBER;
429
430         typedef struct {
431                 uint32 pagedpoollimit;
432                 uint32 nonpagedpoollimit;
433                 uint32 minimumworkingsetsize;
434                 uint32 maximumworkingsetsize;
435                 uint32 pagefilelimit;
436                 NTTIME timelimit;
437         } QUOTA_LIMITS;
438
439         typedef struct {
440                 uint32 maxlogsize;
441                 NTTIME auditretentionperiod;
442                 bool auditingmode;
443                 uint32 maxauditeventcount;
444                 [size_is(maxauditeventcount)] uint32 *eventauditoptions;
445                 netr_String primarydomainname;
446                  dom_sid2 *sid;
447                 QUOTA_LIMITS quota_limits;
448                 NTTIME db_modify_time;
449                 NTTIME db_create_time;
450                 uint32 SecurityInformation;
451                 LSA_SECURITY_DESCRIPTOR sec_desc;
452                 netr_String unknown1;
453                 netr_String unknown2;
454                 netr_String unknown3;
455                 netr_String unknown4;
456                 uint32 unknown5;
457                 uint32 unknown6;
458                 uint32 unknown7;
459                 uint32 unknown8;
460         } DELTA_POLICY;
461
462         typedef struct {
463                 netr_String DomainName;
464                 uint32 num_controllers;
465                 [size_is(num_controllers)] netr_String *controller_names;
466                 uint32 SecurityInformation;
467                 LSA_SECURITY_DESCRIPTOR sec_desc;
468                 netr_String unknown1;
469                 netr_String unknown2;
470                 netr_String unknown3;
471                 netr_String unknown4;
472                 uint32 unknown5;
473                 uint32 unknown6;
474                 uint32 unknown7;
475                 uint32 unknown8;
476         } DELTA_TRUSTED_DOMAINS;
477
478         typedef struct {
479                 uint32 privilegeentries;
480                 uint32 provolegecontrol;
481                 [size_is(privilege_entries)] uint32 *privilege_attrib;
482                 [size_is(privilege_entries)] netr_String *privilege_name;
483                 QUOTALIMITS quotalimits;
484                 uint32 SecurityInformation;
485                 LSA_SECURITY_DESCRIPTOR sec_desc;
486                 netr_String unknown1;
487                 netr_String unknown2;
488                 netr_String unknown3;
489                 netr_String unknown4;
490                 uint32 unknown5;
491                 uint32 unknown6;
492                 uint32 unknown7;
493                 uint32 unknown8;
494         } DELTA_ACCOUNTS;
495
496         typedef struct {
497                 uint32 len;
498                 uint32 maxlen;
499                 [size_is(maxlen)][length_is(len)] uint8 *cipher_data;
500         } CIPHER_VALUE;
501
502         typedef struct {
503                 CIPHER_VALUE current_cipher;
504                 NTTIME current_cipher_set_time;
505                 CIPHER_VALUE old_cipher;
506                 NTTIME old_cipher_set_time;
507                 uint32 SecurityInformation;
508                 LSA_SECURITY_DESCRIPTOR sec_desc;
509                 netr_String unknown1;
510                 netr_String unknown2;
511                 netr_String unknown3;
512                 netr_String unknown4;
513                 uint32 unknown5;
514                 uint32 unknown6;
515                 uint32 unknown7;
516                 uint32 unknown8;
517         } DELTA_SECRET;
518
519         typedef struct {
520                 uint32 low_value;
521                 uint32 high_value;
522         } xxx;
523
524         typedef [switch_type(short)] union {
525                 [case(1)] DELTA_DOMAIN *domain;
526                 [case(2)] DELTA_GROUP *group;
527                 [case(4)] DELTA_RENAME_GROUP *rename_group;
528                 [case(5)] DELTA_USER *user;
529                 [case(7)] DELTA_RENAME_USER *rename_user;
530                 [case(8)] DELTA_GROUP_MEMBER *group_member;
531                 [case(9)] DELTA_ALIAS *alias;
532                 [case(11)] DELTA_RENAME_ALIAS *rename_alias;
533                 [case(12)] DELTA_ALIAS_MEMBER *alias_member;
534                 [case(13)] DELTA_POLICY *policy;
535                 [case(14)] DELTA_TRUSTED_DOMAINS *trusted_domains;
536                 [case(16)] DELTA_ACCOUNTS *accounts;
537                 [case(18)] DELTA_SECRET *secret;
538                 [case(20)] DELTA_DELETE_USER *delete_group;
539                 [case(21)] DELTA_DELETE_USER *delete_user;
540                 [case(22)] MODIFIED_COUNT *modified_count;
541         } DELTA_UNION;
542
543         typedef [switch_type(short)] union {
544                 [case(1)] uint32 rid;
545                 [case(2)] uint32 rid;
546                 [case(3)] uint32 rid;
547                 [case(4)] uint32 rid;
548                 [case(5)] uint32 rid;
549                 [case(6)] uint32 rid;
550                 [case(7)] uint32 rid;
551                 [case(8)] uint32 rid;
552                 [case(9)] uint32 rid;
553                 [case(10)] uint32 rid;
554                 [case(11)] uint32 rid;
555                 [case(12)] uint32 rid;
556                 [case(13)]  dom_sid2 *sid;
557                 [case(14)]  dom_sid2 *sid;
558                 [case(15)]  dom_sid2 *sid;
559                 [case(16)]  dom_sid2 *sid;
560                 [case(17)]  dom_sid2 *sid;
561                 [case(18)] unistr *Name ;
562                 [case(19)] unistr *Name ;
563                 [case(20)] uint32 rid;
564                 [case(21)] uint32 rid;
565         } DELTA_ID_UNION;
566
567         typedef struct {
568                 uint16 delta_type;
569                 DELTA_ID_UNION delta_id_union;
570                 DELTA_UNION delta_union;
571         } DELTA_ENUM;
572
573         typedef struct {
574                 uint32 num_deltas;
575                 [size_is(num_deltas)] DELTA_ENUM *delta_enum;
576         } DELTA_ENUM_ARRAY;
577
578
579         WERROR netr_DatabaseDeltas(
580                 [in][string][ref] wchar_t *logonserver, # REF!!!
581                 [in][string][ref] wchar_t *computername,
582                 [in][ref] AUTHENTICATOR credential,
583                 [in][out][ref] AUTHENTICATOR return_authenticator,
584                 [in] uint32 database_id,
585                 [in][out][ref] MODIFIED_COUNT domain_modify_count,
586                 [in] uint32 preferredmaximumlength,
587                 [out] DELTA_ENUM_ARRAY *delta_enum_array
588                 );
589
590
591         /*****************/
592         /* Function 0x08 */
593
594         WERROR netr_DatabaseSync(
595                 [in][string][ref] wchar_t *logonserver, # REF!!!
596                 [in][string][ref] wchar_t *computername,
597                 [in][ref] AUTHENTICATOR credential,
598                 [in][out][ref] AUTHENTICATOR return_authenticator,
599                 [in] uint32 database_id,
600                 [in][out][ref] uint32 sync_context,
601                 [in] uint32 preferredmaximumlength,
602                 [out] DELTA_ENUM_ARRAY *delta_enum_array
603                 );
604
605
606         /*****************/
607         /* Function 0x09 */
608
609         typedef struct {
610                 uint8 computer_name[16];
611                 uint32 timecreated;
612                 uint32 serial_number;
613         } UAS_INFO_0;
614
615         WERROR netr_AccountDeltas(
616                 [in][string] wchar_t *logonserver,
617                 [in][string][ref] wchar_t *computername,
618                 [in][ref] AUTHENTICATOR credential,
619                 [in][out][ref] AUTHENTICATOR return_authenticator,
620                 [out][ref][size_is(count_returned)] uint8 *Buffer,
621                 [out][ref] uint32 count_returned,
622                 [out][ref] uint32 total_entries,
623                 [in][out][ref] UAS_INFO_0 recordid,
624                 [in][long] count,
625                 [in][long] level,
626                 [in][long] buffersize,
627                 );
628
629
630         /*****************/
631         /* Function 0x0A */
632
633         WERROR netr_AccountSync(
634                 [in][string] wchar_t *logonserver,
635                 [in][string][ref] wchar_t *computername,
636                 [in][ref] AUTHENTICATOR credential,
637                 [in][out][ref] AUTHENTICATOR return_authenticator,
638                 [out][ref][size_is(count_returned)] uint8 *Buffer,
639                 [out][ref] uint32 count_returned,
640                 [out][ref] uint32 total_entries,
641                 [out][ref] uint32 next_reference,
642                 [in][long] reference,
643                 [in][long] level,
644                 [in][long] buffersize,
645                 [in][out][ref] UAS_INFO_0 recordid,
646                 );
647
648
649         /*****************/
650         /* Function 0x0B */
651
652         WERROR netr_GetDcName(
653                 [in] unistr logon_server,
654                 [in] unistr *domainname,
655                 [out]unistr *dcname,
656                 };
657
658         typedef struct {
659                 uint32 flags;
660                 uint32 pdc_connection_status;
661         } NETLOGON_INFO_1;
662
663         typedef struct {
664                 uint32 flags;
665                 uint32 pdc_connection_status;
666                 unistrtrusted_dc_name;
667                 uint32 tc_connection_status;
668         } NETLOGON_INFO_2;
669
670         typedef struct {
671                 uint32 flags;
672                 uint32 logon_attempts;
673                 uint32 reserved;
674                 uint32 reserved;
675                 uint32 reserved;
676                 uint32 reserved;
677                 uint32 reserved;
678         } NETLOGON_INFO_3;
679
680         typedef [switch_type(long)] union {
681                 [case(1)]  NETLOGON_INFO_1 *i1;
682                 [case(2)]  NETLOGON_INFO_2 *i2;
683                 [case(3)]  NETLOGON_INFO_3 *i3;
684         } CONTROL_QUERY_INFORMATION;
685
686
687         /*****************/
688         /* Function 0x0C */
689
690         WERROR netr_LogonControl(
691                 [in][string] wchar_t *logonserver,
692                 [in] uint32 function_code,
693                 [in] uint32 level,
694                 [out][ref] CONTROL_QUERY_INFORMATION
695                 );
696
697
698         /*****************/
699         /* Function 0x0D */
700
701         WERROR netr_GetAnyDCName(
702                 [in] unistr *logon_server,
703                 [in] unistr *domainname,
704                 [out]unistr *dcname,
705                 };
706
707         typedef [switch_type(long)] union {
708                 [case(5)] unistr *unknown;
709                 [case(6)] unistr *unknown;
710                 [case(0xfffe)] uint32 unknown;
711                 [case(7)] unistry*unknown;
712         } CONTROL_DATA_INFORMATION;
713
714
715         /*****************/
716         /* Function 0x0E */
717
718         WERROR netr_LogonControl2(
719                 [in][string] wchar_t *logonserver,
720                 [in] uint32 function_code,
721                 [in] uint32 level,
722                 [in][ref] CONTROL_DATA_INFORMATION *data,
723                 [out][ref] CONTROL_QUERY_INFORMATION *query
724                 );
725
726
727         /*****************/
728         /* Function 0x0F */
729
730         WERROR netr_ServerAuthenticate2(
731                 [in][string] wchar_t *logonserver,
732                 [in] unistr username,
733                 [in] uint16 secure_channel_type,
734                 [in] unistr computername,
735                 [in][ref] CREDENTIAL *client_chal,
736                 [out][ref] CREDENTIAL *server_chal,
737                 [in][out][ref] uint32 *negotiate_flags,
738                 );
739
740
741         /*****************/
742         /* Function 0x10 */
743
744         WERROR netr_DatabaseSync2(
745                 [in][string][ref] wchar_t *logonserver, # REF!!!
746                 [in][string][ref] wchar_t *computername,
747                 [in][ref] AUTHENTICATOR credential,
748                 [in][out][ref] AUTHENTICATOR return_authenticator,
749                 [in] uint32 database_id,
750                 [in] uint16 restart_state,
751                 [in][out][ref] uint32 *sync_context,
752                 [in] uint32 preferredmaximumlength,
753                 [out] DELTA_ENUM_ARRAY *delta_enum_array
754                 );
755
756
757         /*****************/
758         /* Function 0x11 */
759
760         WERROR netr_DatabaseRedo(
761                 [in][string][ref] wchar_t *logonserver, # REF!!!
762                 [in][string][ref] wchar_t *computername,
763                 [in][ref] AUTHENTICATOR credential,
764                 [in][out][ref] AUTHENTICATOR return_authenticator,
765                 [in][ref][size_is(change_log_entry_size)] uint8 *change_log_entry,
766                 [in] uint32 change_log_entry_size,
767                 [out] DELTA_ENUM_ARRAY *delta_enum_array
768                 );
769
770
771         /*****************/
772         /* Function 0x12 */
773
774         WERROR netr_LogonControl2Ex(
775                 [in][string] wchar_t *logonserver,
776                 [in] uint32 function_code,
777                 [in] uint32 level,
778                 [in][ref] CONTROL_DATA_INFORMATION *data,
779                 [out][ref] CONTROL_QUERY_INFORMATION *query
780                 );
781 #endif  
782 }