netr_DatabaseDeltas() now works. We ask for the deltas associated with
[ira/wip.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         /* secure channel types */
262         const int SEC_CHAN_WKSTA   = 2;
263         const int SEC_CHAN_DOMAIN  = 4;
264         const int SEC_CHAN_BDC     = 6;
265
266         NTSTATUS netr_ServerAuthenticate(
267                 [in]        unistr *server_name,
268                 [in]        unistr username,
269                 [in]        uint16 secure_challenge_type,
270                 [in]        unistr computer_name,
271                 [in,out]    netr_Credential credentials
272                 );
273
274
275         /*****************/
276         /* Function 0x06 */
277
278         NTSTATUS netr_ServerPasswordSet(
279                 [in]  unistr *server_name,
280                 [in]  unistr username,
281                 [in]  uint16 secure_challenge_type,
282                 [in]  unistr computer_name,
283                 [in]  netr_Authenticator credential,
284                 [in]  netr_Password new_password,
285                 [out] netr_Authenticator return_authenticator
286                 );
287
288
289         /*****************/
290         /* Function 0x07 */
291
292         typedef struct {
293                 unistr *username;
294                 netr_String unknown1;
295                 netr_String unknown2;
296                 netr_String unknown3;
297                 netr_String unknown4;
298                 uint32 unknown5;
299                 uint32 unknown6;
300                 uint32 unknown7;
301                 uint32 unknown8;
302         } netr_DELTA_DELETE_USER;
303
304         typedef struct {
305                 bool8  SensitiveDataFlag;
306                 uint32 DataLength;
307                 [size_is(DataLength)] uint8 *SensitiveData;
308         } netr_USER_PRIVATE_INFO;
309
310         typedef struct {
311                 netr_String account_name;
312                 netr_String full_name;
313                 uint32 rid;
314                 uint32 primary_group;
315                 netr_String home_dir;
316                 netr_String home_drive;
317                 netr_String logon_script;
318                 netr_String description;
319                 netr_String workstations;
320                 NTTIME LastLogon;
321                 NTTIME LastLogoff;
322                 samr_LogonHours logon_hours;
323                 uint16 bad_pw_count;
324                 uint16 logon_count;
325                 NTTIME PwLastSet;
326                 NTTIME AccountExpires;
327                 uint32 AccountControl;
328                 netr_Password lmpw;
329                 netr_Password ntpw;
330                 bool8 NTPwPresent;
331                 bool8 LMPwPresent;
332                 bool8 PwExpired;
333                 netr_String UserComment;
334                 netr_String Parameters;
335                 uint16 CountryCode;
336                 uint16 CodePage;
337                 netr_USER_PRIVATE_INFO user_private_info;
338                 uint32 SecurityInformation;
339                 sec_desc_buf sdbuf;
340                 netr_String profile_path;
341                 netr_String unknown2;
342                 netr_String unknown3;
343                 netr_String unknown4;
344                 uint32 unknown5;
345                 uint32 unknown6;
346                 uint32 unknown7;
347                 uint32 unknown8;
348         } netr_DELTA_USER;
349
350         typedef struct {
351                 netr_String DomainName;
352                 netr_String OEMInfo;
353                 NTTIME forcedlogoff;
354                 uint16 minpasswdlen;
355                 uint16 passwdhistorylen;
356                 ULONG8 pwd_must_change_time;
357                 ULONG8 pwd_can_change_time;
358                 ULONG8 sequence_num;
359                 NTTIME domain_create_time;
360                 uint32 SecurityInformation;
361                 sec_desc_buf sdbuf;
362                 netr_String unknown1;
363                 netr_String unknown2;
364                 netr_String unknown3;
365                 netr_String unknown4;
366                 uint32 unknown5;
367                 uint32 unknown6;
368                 uint32 unknown7;
369                 uint32 unknown8;
370         } netr_DELTA_DOMAIN;
371
372         typedef struct {
373                 netr_String groupname;
374                 netr_GroupMembership group_membership;
375                 netr_String comment;
376                 uint32 SecurityInformation;
377                 sec_desc_buf sdbuf;
378                 netr_String unknown1;
379                 netr_String unknown2;
380                 netr_String unknown3;
381                 netr_String unknown4;
382                 uint32 unknown5;
383                 uint32 unknown6;
384                 uint32 unknown7;
385                 uint32 unknown8;
386         } netr_DELTA_GROUP;
387
388         typedef struct {
389                 netr_String OldName;
390                 netr_String NewName;
391                 netr_String unknown1;
392                 netr_String unknown2;
393                 netr_String unknown3;
394                 netr_String unknown4;
395                 uint32 unknown5;
396                 uint32 unknown6;
397                 uint32 unknown7;
398                 uint32 unknown8;
399         } netr_DELTA_RENAME;
400
401         typedef struct {
402                 [size_is(num_rids)] uint32 *rids;
403                 [size_is(num_rids)] uint32 *attribs;
404                 uint32 num_rids;
405                 uint32 unknown1;
406                 uint32 unknown2;
407                 uint32 unknown3;
408                 uint32 unknown4;
409         } netr_DELTA_GROUP_MEMBER;
410
411         typedef struct {
412                 netr_String alias_name;
413                 uint32 rid;
414                 uint32 SecurityInformation;
415                 sec_desc_buf sdbuf;
416                 netr_String unknown1;
417                 netr_String unknown2;
418                 netr_String unknown3;
419                 netr_String unknown4;
420                 uint32 unknown5;
421                 uint32 unknown6;
422                 uint32 unknown7;
423                 uint32 unknown8;
424         } netr_DELTA_ALIAS;
425
426         typedef struct {
427                 lsa_SidArray sids;
428                 uint32 unknown1;
429                 uint32 unknown2;
430                 uint32 unknown3;
431                 uint32 unknown4;
432         } netr_DELTA_ALIAS_MEMBER;
433
434         typedef struct {
435                 uint32 pagedpoollimit;
436                 uint32 nonpagedpoollimit;
437                 uint32 minimumworkingsetsize;
438                 uint32 maximumworkingsetsize;
439                 uint32 pagefilelimit;
440                 NTTIME timelimit;
441         } netr_QUOTA_LIMITS;
442
443         typedef struct {
444                 uint32 maxlogsize;
445                 NTTIME auditretentionperiod;
446                 bool8 auditingmode;
447                 uint32 maxauditeventcount;
448                 [size_is(maxauditeventcount+1)] uint32 *eventauditoptions;
449                 netr_String primarydomainname;
450                 dom_sid2 *sid;
451                 netr_QUOTA_LIMITS quota_limits;
452                 NTTIME db_modify_time;
453                 NTTIME db_create_time;
454                 uint32 SecurityInformation;
455                 sec_desc_buf sdbuf;
456                 netr_String unknown1;
457                 netr_String unknown2;
458                 netr_String unknown3;
459                 netr_String unknown4;
460                 uint32 unknown5;
461                 uint32 unknown6;
462                 uint32 unknown7;
463                 uint32 unknown8;
464         } netr_DELTA_POLICY;
465
466         typedef struct {
467                 netr_String DomainName;
468                 uint32 num_controllers;
469                 [size_is(num_controllers)] netr_String *controller_names;
470                 uint32 SecurityInformation;
471                 sec_desc_buf sdbuf;
472                 netr_String unknown1;
473                 netr_String unknown2;
474                 netr_String unknown3;
475                 netr_String unknown4;
476                 uint32 unknown5;
477                 uint32 unknown6;
478                 uint32 unknown7;
479                 uint32 unknown8;
480         } netr_DELTA_TRUSTED_DOMAINS;
481
482         typedef struct {
483                 uint32 privilege_entries;
484                 uint32 privilege_control;
485                 [size_is(privilege_entries)] uint32 *privilege_attrib;
486                 [size_is(privilege_entries)] netr_String *privilege_name;
487                 netr_QUOTA_LIMITS quotalimits;
488                 uint32 system_flags;
489                 uint32 SecurityInformation;
490                 sec_desc_buf sdbuf;
491                 netr_String unknown1;
492                 netr_String unknown2;
493                 netr_String unknown3;
494                 netr_String unknown4;
495                 uint32 unknown5;
496                 uint32 unknown6;
497                 uint32 unknown7;
498                 uint32 unknown8;
499         } netr_DELTA_ACCOUNTS;
500
501         typedef struct {
502                 uint32 len;
503                 uint32 maxlen;
504                 [size_is(maxlen)][length_is(len)] uint8 *cipher_data;
505         } netr_CIPHER_VALUE;
506
507         typedef struct {
508                 netr_CIPHER_VALUE current_cipher;
509                 NTTIME current_cipher_set_time;
510                 netr_CIPHER_VALUE old_cipher;
511                 NTTIME old_cipher_set_time;
512                 uint32 SecurityInformation;
513                 sec_desc_buf sdbuf;
514                 netr_String unknown1;
515                 netr_String unknown2;
516                 netr_String unknown3;
517                 netr_String unknown4;
518                 uint32 unknown5;
519                 uint32 unknown6;
520                 uint32 unknown7;
521                 uint32 unknown8;
522         } netr_DELTA_SECRET;
523
524         typedef union {
525                 [case(1)] netr_DELTA_DOMAIN *domain;
526                 [case(2)] netr_DELTA_GROUP *group;
527                 [case(4)] netr_DELTA_RENAME *rename_group;
528                 [case(5)] netr_DELTA_USER *user;
529                 [case(7)] netr_DELTA_RENAME *rename_user;
530                 [case(8)] netr_DELTA_GROUP_MEMBER *group_member;
531                 [case(9)] netr_DELTA_ALIAS *alias;
532                 [case(11)] netr_DELTA_RENAME *rename_alias;
533                 [case(12)] netr_DELTA_ALIAS_MEMBER *alias_member;
534                 [case(13)] netr_DELTA_POLICY *policy;
535                 [case(14)] netr_DELTA_TRUSTED_DOMAINS *trusted_domains;
536                 [case(16)] netr_DELTA_ACCOUNTS *accounts;
537                 [case(18)] netr_DELTA_SECRET *secret;
538                 [case(20)] netr_DELTA_DELETE_USER *delete_group;
539                 [case(21)] netr_DELTA_DELETE_USER *delete_user;
540                 [case(22)] ULONG8 *modified_count;
541         } netr_DELTA_UNION;
542
543         typedef 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         } netr_DELTA_ID_UNION;
566
567         typedef struct {
568                 uint16 delta_type;
569                 [switch_is(delta_type)] netr_DELTA_ID_UNION delta_id_union;
570                 [switch_is(delta_type)] netr_DELTA_UNION delta_union;
571         } netr_DELTA_ENUM;
572
573         typedef struct {
574                 uint32 num_deltas;
575                 [size_is(num_deltas)] netr_DELTA_ENUM *delta_enum;
576         } netr_DELTA_ENUM_ARRAY;
577
578
579         NTSTATUS netr_DatabaseDeltas(
580                 [in]      unistr logonserver,
581                 [in]      unistr computername,
582                 [in]      netr_Authenticator credential,
583                 [in,out]  netr_Authenticator return_authenticator,
584                 [in]      uint32 database_id,
585                 [in,out]  ULONG8 sequence_num,
586                 [in]      uint32 preferredmaximumlength,
587                 [out]     netr_DELTA_ENUM_ARRAY *delta_enum_array
588                 );
589
590
591         /*****************/
592         /* Function 0x08 */
593
594         NTSTATUS netr_DatabaseSync(
595                 [in]     unistr logonserver,
596                 [in]     unistr computername,
597                 [in]     netr_Authenticator credential,
598                 [in,out] netr_Authenticator return_authenticator,
599                 [in]     uint32 database_id,
600                 [in,out] uint32 sync_context,
601                 [in]     uint32 preferredmaximumlength,
602                 [out]    netr_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         NTSTATUS netr_AccountDeltas(
616                 [in]     unistr *logonserver,
617                 [in]     unistr computername,
618                 [in]     netr_Authenticator credential,
619                 [in,out] netr_Authenticator return_authenticator,
620                 [out][size_is(count_returned)] uint8 *buffer,
621                 [out]    uint32 count_returned,
622                 [out]    uint32 total_entries,
623                 [in,out] UAS_INFO_0 recordid,
624                 [in]     uint32 count,
625                 [in]     uint32 level,
626                 [in]     uint32 buffersize
627                 );
628
629 #if 0
630
631         /*****************/
632         /* Function 0x0A */
633
634         NTSTATUS netr_AccountSync(
635                 [in][string] wchar_t *logonserver,
636                 [in][string][ref] wchar_t *computername,
637                 [in][ref] AUTHENTICATOR credential,
638                 [in][out][ref] AUTHENTICATOR return_authenticator,
639                 [out][ref][size_is(count_returned)] uint8 *Buffer,
640                 [out][ref] uint32 count_returned,
641                 [out][ref] uint32 total_entries,
642                 [out][ref] uint32 next_reference,
643                 [in][long] reference,
644                 [in][long] level,
645                 [in][long] buffersize,
646                 [in][out][ref] UAS_INFO_0 recordid,
647                 );
648
649
650         /*****************/
651         /* Function 0x0B */
652
653         NTSTATUS netr_GetDcName(
654                 [in] unistr logon_server,
655                 [in] unistr *domainname,
656                 [out]unistr *dcname,
657                 };
658
659         typedef struct {
660                 uint32 flags;
661                 uint32 pdc_connection_status;
662         } NETLOGON_INFO_1;
663
664         typedef struct {
665                 uint32 flags;
666                 uint32 pdc_connection_status;
667                 unistr trusted_dc_name;
668                 uint32 tc_connection_status;
669         } NETLOGON_INFO_2;
670
671         typedef struct {
672                 uint32 flags;
673                 uint32 logon_attempts;
674                 uint32 reserved;
675                 uint32 reserved;
676                 uint32 reserved;
677                 uint32 reserved;
678                 uint32 reserved;
679         } NETLOGON_INFO_3;
680
681         typedef [switch_type(long)] union {
682                 [case(1)]  NETLOGON_INFO_1 *i1;
683                 [case(2)]  NETLOGON_INFO_2 *i2;
684                 [case(3)]  NETLOGON_INFO_3 *i3;
685         } CONTROL_QUERY_INFORMATION;
686
687
688         /*****************/
689         /* Function 0x0C */
690
691         NTSTATUS netr_LogonControl(
692                 [in][string] wchar_t *logonserver,
693                 [in] uint32 function_code,
694                 [in] uint32 level,
695                 [out][ref] CONTROL_QUERY_INFORMATION
696                 );
697
698
699         /*****************/
700         /* Function 0x0D */
701
702         NTSTATUS netr_GetAnyDCName(
703                 [in] unistr *logon_server,
704                 [in] unistr *domainname,
705                 [out]unistr *dcname,
706                 };
707
708         typedef [switch_type(long)] union {
709                 [case(5)] unistr *unknown;
710                 [case(6)] unistr *unknown;
711                 [case(0xfffe)] uint32 unknown;
712                 [case(7)] unistry*unknown;
713         } CONTROL_DATA_INFORMATION;
714
715
716         /*****************/
717         /* Function 0x0E */
718
719         NTSTATUS netr_LogonControl2(
720                 [in][string] wchar_t *logonserver,
721                 [in] uint32 function_code,
722                 [in] uint32 level,
723                 [in][ref] CONTROL_DATA_INFORMATION *data,
724                 [out][ref] CONTROL_QUERY_INFORMATION *query
725                 );
726
727
728         /*****************/
729         /* Function 0x0F */
730
731         NTSTATUS netr_ServerAuthenticate2(
732                 [in][string] wchar_t *logonserver,
733                 [in] unistr username,
734                 [in] uint16 secure_channel_type,
735                 [in] unistr computername,
736                 [in][ref] CREDENTIAL *client_chal,
737                 [out][ref] CREDENTIAL *server_chal,
738                 [in][out][ref] uint32 *negotiate_flags,
739                 );
740
741
742         /*****************/
743         /* Function 0x10 */
744
745         NTSTATUS netr_DatabaseSync2(
746                 [in][string][ref] wchar_t *logonserver, # REF!!!
747                 [in][string][ref] wchar_t *computername,
748                 [in][ref] AUTHENTICATOR credential,
749                 [in][out][ref] AUTHENTICATOR return_authenticator,
750                 [in] uint32 database_id,
751                 [in] uint16 restart_state,
752                 [in][out][ref] uint32 *sync_context,
753                 [in] uint32 preferredmaximumlength,
754                 [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
755                 );
756
757
758         /*****************/
759         /* Function 0x11 */
760
761         NTSTATUS netr_DatabaseRedo(
762                 [in][string][ref] wchar_t *logonserver, # REF!!!
763                 [in][string][ref] wchar_t *computername,
764                 [in][ref] netr_Authenticator credential,
765                 [in][out][ref] netr_Authenticator return_authenticator,
766                 [in][ref][size_is(change_log_entry_size)] uint8 *change_log_entry,
767                 [in] uint32 change_log_entry_size,
768                 [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
769                 );
770
771
772         /*****************/
773         /* Function 0x12 */
774
775         NTSTATUS netr_LogonControl2Ex(
776                 [in][string] wchar_t *logonserver,
777                 [in] uint32 function_code,
778                 [in] uint32 level,
779                 [in][ref] CONTROL_DATA_INFORMATION *data,
780                 [out][ref] CONTROL_QUERY_INFORMATION *query
781                 );
782 #endif  
783 }