3 much of this was derived from the ethereal sources - thanks to everyone
10 uuid("12345678-1234-abcd-ef00-01234567cffb"),
12 endpoint("ncacn_np:[\\pipe\\netlogon]","ncacn_ip_tcp:","ncalrpc:"),
13 pointer_default(unique),
14 pointer_default_top(unique),
20 declare bitmap samr_AcctFlags;
22 typedef [public] struct {
23 [value(strlen_m(string)*2)] uint16 size;
24 [value(strlen_m(string)*2)] uint16 length;
25 unistr_noterm *string;
43 time_t pw_must_change;
50 WERROR netr_LogonUasLogon(
51 [in] unistr *server_name,
52 [in] unistr account_name,
53 [in] unistr workstation,
54 [out] netr_UasInfo *info
66 WERROR netr_LogonUasLogoff(
67 [in] unistr *server_name,
68 [in] unistr account_name,
69 [in] unistr workstation,
70 [out] netr_UasLogoffInfo info
77 /* in netr_AcctLockStr size seems to be be 24, and rrenard thinks
78 that the structure of the bindata looks like this:
80 dlong lockout_duration;
82 uint32 bad_attempt_lockout;
85 but it doesn't look as though this structure is reflected at the
86 NDR level. Maybe it is left to the application to decode the bindata array.
91 [size_is(size/2),length_is(length/2)] uint16 *bindata;
95 netr_String domain_name;
96 uint32 parameter_control;
99 netr_String account_name;
100 netr_String workstation;
104 netr_IdentityInfo identity_info;
105 samr_Password lmpassword;
106 samr_Password ntpassword;
109 typedef [flag(NDR_PAHEX)] struct {
111 [value(length)] uint16 size;
112 [size_is(length),length_is(length)] uint8 *data;
113 } netr_ChallengeResponse;
115 typedef [flag(NDR_PAHEX)] struct {
116 netr_IdentityInfo identity_info;
118 netr_ChallengeResponse nt;
119 netr_ChallengeResponse lm;
122 typedef [switch_type(uint16)] union {
123 [case(1)] netr_PasswordInfo *password;
124 [case(2)] netr_NetworkInfo *network;
125 [case(3)] netr_PasswordInfo *password;
126 [case(5)] netr_PasswordInfo *password;
127 [case(6)] netr_NetworkInfo *network;
130 typedef [public] struct {
133 } netr_GroupMembership;
135 typedef [public,flag(NDR_PAHEX)] struct {
137 } netr_UserSessionKey;
139 typedef [public,flag(NDR_PAHEX)] struct {
143 /* Flags for user_flags below */
144 const int NETLOGON_EXTRA_SIDS = 0x0020;
145 const int NETLOGON_RESOURCE_GROUPS = 0x0200;
151 NTTIME last_password_change;
152 NTTIME allow_password_change;
153 NTTIME force_password_change;
154 netr_String account_name;
155 netr_String full_name;
156 netr_String logon_script;
157 netr_String profile_path;
158 netr_String home_directory;
159 netr_String home_drive;
161 uint16 bad_password_count;
164 samr_RidWithAttributeArray groups;
166 netr_UserSessionKey key;
167 netr_String logon_server;
169 dom_sid2 *domain_sid;
170 netr_LMSessionKey LMSessKey;
171 samr_AcctFlags acct_flags;
176 netr_SamBaseInfo base;
184 typedef [public] struct {
185 netr_SamBaseInfo base;
187 [size_is(sidcount)] netr_SidAttr *sids;
191 netr_SamBaseInfo base;
193 [size_is(sidcount)] netr_SidAttr *sids;
195 netr_String principle;
201 [size_is(pac_size)] uint8 *pac;
202 netr_String logon_domain;
203 netr_String logon_server;
204 netr_String principal_name;
206 [size_is(auth_size)] uint8 *auth;
207 netr_UserSessionKey user_session_key;
208 uint32 expansionroom[10];
209 netr_String unknown1;
210 netr_String unknown2;
211 netr_String unknown3;
212 netr_String unknown4;
215 typedef [switch_type(uint16)] union {
216 [case(2)] netr_SamInfo2 *sam2;
217 [case(3)] netr_SamInfo3 *sam3;
218 [case(4)] netr_PacInfo *pac;
219 [case(5)] netr_PacInfo *pac;
220 [case(6)] netr_SamInfo6 *sam6;
223 typedef [public, flag(NDR_PAHEX)] struct {
227 typedef [public] struct {
228 netr_Credential cred;
230 } netr_Authenticator;
232 NTSTATUS netr_LogonSamLogon(
233 [in] unistr *server_name,
234 [in] unistr *workstation,
235 [in] netr_Authenticator *credential,
236 [in][out] netr_Authenticator *return_authenticator,
237 [in] uint16 logon_level,
238 [in] [switch_is(logon_level)] netr_LogonLevel logon,
239 [in] uint16 validation_level,
240 [out] [switch_is(validation_level)] netr_Validation validation,
241 [out] uint8 authoritative
248 NTSTATUS netr_LogonSamLogoff(
249 [in] unistr *server_name,
250 [in] unistr *computer_name,
251 [in] netr_Authenticator *credential,
252 [in][out] netr_Authenticator *return_authenticator,
253 [in] uint16 logon_level,
254 [in] [switch_is(logon_level)] netr_LogonLevel logon
262 NTSTATUS netr_ServerReqChallenge(
263 [in] unistr *server_name,
264 [in] unistr computer_name,
265 [in,out,ref] netr_Credential *credentials
272 declare enum netr_SchannelType;
274 NTSTATUS netr_ServerAuthenticate(
275 [in] unistr *server_name,
276 [in] unistr account_name,
277 [in] netr_SchannelType secure_channel_type,
278 [in] unistr computer_name,
279 [in,out,ref] netr_Credential *credentials
286 NTSTATUS netr_ServerPasswordSet(
287 [in] unistr *server_name,
288 [in] unistr account_name,
289 [in] netr_SchannelType secure_channel_type,
290 [in] unistr computer_name,
291 [in] netr_Authenticator credential,
292 [in] samr_Password new_password,
293 [out] netr_Authenticator return_authenticator
300 /* SAM database types */
301 typedef [v1_enum] enum {
302 SAM_DATABASE_DOMAIN = 0, /* Domain users and groups */
303 SAM_DATABASE_BUILTIN = 1, /* BUILTIN users and groups */
304 SAM_DATABASE_PRIVS = 2 /* Privileges */
305 } netr_SamDatabaseID;
308 unistr *account_name;
309 netr_String unknown1;
310 netr_String unknown2;
311 netr_String unknown3;
312 netr_String unknown4;
317 } netr_DELTA_DELETE_USER;
321 [value(length)] uint16 size;
333 uint8 nt_history[nt_length];
334 uint8 lm_history[lm_length];
335 } netr_PasswordHistory;
338 netr_USER_KEY16 lmpassword;
339 netr_USER_KEY16 ntpassword;
340 netr_PasswordHistory lmhistory;
344 netr_USER_KEYS2 keys2;
345 } netr_USER_KEY_UNION;
347 typedef [public] struct {
349 netr_USER_KEY_UNION keys;
353 bool8 SensitiveDataFlag;
356 /* netr_USER_KEYS encrypted with the session key */
357 [size_is(DataLength)][flag(NDR_PAHEX)] uint8 *SensitiveData;
358 } netr_USER_PRIVATE_INFO;
361 netr_String account_name;
362 netr_String full_name;
365 netr_String home_directory;
366 netr_String home_drive;
367 netr_String logon_script;
368 netr_String description;
369 netr_String workstations;
372 samr_LogonHours logon_hours;
373 uint16 bad_password_count;
375 NTTIME last_password_change;
377 samr_AcctFlags acct_flags;
378 samr_Password lmpassword;
379 samr_Password ntpassword;
380 bool8 nt_password_present;
381 bool8 lm_password_present;
382 bool8 password_expired;
384 netr_String parameters;
387 netr_USER_PRIVATE_INFO user_private_info;
388 uint32 SecurityInformation;
390 netr_String profile_path;
391 netr_String unknown2;
392 netr_String unknown3;
393 netr_String unknown4;
401 netr_String domain_name;
403 NTTIME force_logoff_time;
404 uint16 min_password_length;
405 uint16 password_history_length;
406 /* yes, these are signed. They are in negative 100ns */
407 dlong max_password_age;
408 dlong min_password_age;
410 NTTIME domain_create_time;
411 uint32 SecurityInformation;
413 netr_AcctLockStr account_lockout;
414 netr_String unknown2;
415 netr_String unknown3;
416 netr_String unknown4;
417 uint32 logon_to_chgpass;
424 netr_String group_name;
427 netr_String description;
428 uint32 SecurityInformation;
430 netr_String unknown1;
431 netr_String unknown2;
432 netr_String unknown3;
433 netr_String unknown4;
443 netr_String unknown1;
444 netr_String unknown2;
445 netr_String unknown3;
446 netr_String unknown4;
454 [size_is(num_rids)] uint32 *rids;
455 [size_is(num_rids)] uint32 *attribs;
461 } netr_DELTA_GROUP_MEMBER;
464 netr_String alias_name;
466 uint32 SecurityInformation;
468 netr_String description;
469 netr_String unknown2;
470 netr_String unknown3;
471 netr_String unknown4;
484 } netr_DELTA_ALIAS_MEMBER;
487 uint32 pagedpoollimit;
488 uint32 nonpagedpoollimit;
489 uint32 minimumworkingsetsize;
490 uint32 maximumworkingsetsize;
491 uint32 pagefilelimit;
497 NTTIME auditretentionperiod;
499 uint32 maxauditeventcount;
500 [size_is(maxauditeventcount+1)] uint32 *eventauditoptions;
501 netr_String primary_domain_name;
503 netr_QUOTA_LIMITS quota_limits;
505 NTTIME db_create_time;
506 uint32 SecurityInformation;
508 netr_String unknown1;
509 netr_String unknown2;
510 netr_String unknown3;
511 netr_String unknown4;
519 netr_String domain_name;
520 uint32 num_controllers;
521 [size_is(num_controllers)] netr_String *controller_names;
522 uint32 SecurityInformation;
524 netr_String unknown1;
525 netr_String unknown2;
526 netr_String unknown3;
527 netr_String unknown4;
532 } netr_DELTA_TRUSTED_DOMAIN;
536 } netr_DELTA_DELETE_TRUST;
539 uint32 privilege_entries;
540 uint32 privilege_control;
541 [size_is(privilege_entries)] uint32 *privilege_attrib;
542 [size_is(privilege_entries)] netr_String *privilege_name;
543 netr_QUOTA_LIMITS quotalimits;
545 uint32 SecurityInformation;
547 netr_String unknown1;
548 netr_String unknown2;
549 netr_String unknown3;
550 netr_String unknown4;
555 } netr_DELTA_ACCOUNT;
559 } netr_DELTA_DELETE_ACCOUNT;
563 } netr_DELTA_DELETE_SECRET;
568 [size_is(maxlen)][length_is(len)] uint8 *cipher_data;
572 netr_CIPHER_VALUE current_cipher;
573 NTTIME current_cipher_set_time;
574 netr_CIPHER_VALUE old_cipher;
575 NTTIME old_cipher_set_time;
576 uint32 SecurityInformation;
578 netr_String unknown1;
579 netr_String unknown2;
580 netr_String unknown3;
581 netr_String unknown4;
589 NETR_DELTA_DOMAIN = 1,
590 NETR_DELTA_GROUP = 2,
591 NETR_DELTA_DELETE_GROUP = 3,
592 NETR_DELTA_RENAME_GROUP = 4,
594 NETR_DELTA_DELETE_USER = 6,
595 NETR_DELTA_RENAME_USER = 7,
596 NETR_DELTA_GROUP_MEMBER = 8,
597 NETR_DELTA_ALIAS = 9,
598 NETR_DELTA_DELETE_ALIAS = 10,
599 NETR_DELTA_RENAME_ALIAS = 11,
600 NETR_DELTA_ALIAS_MEMBER = 12,
601 NETR_DELTA_POLICY = 13,
602 NETR_DELTA_TRUSTED_DOMAIN = 14,
603 NETR_DELTA_DELETE_TRUST = 15,
604 NETR_DELTA_ACCOUNT = 16,
605 NETR_DELTA_DELETE_ACCOUNT = 17,
606 NETR_DELTA_SECRET = 18,
607 NETR_DELTA_DELETE_SECRET = 19,
608 NETR_DELTA_DELETE_GROUP2 = 20,
609 NETR_DELTA_DELETE_USER2 = 21,
610 NETR_DELTA_MODIFY_COUNT = 22
613 typedef [switch_type(netr_DeltaEnum)] union {
614 [case(NETR_DELTA_DOMAIN)] netr_DELTA_DOMAIN *domain;
615 [case(NETR_DELTA_GROUP)] netr_DELTA_GROUP *group;
616 [case(NETR_DELTA_DELETE_GROUP)] ; /* rid only */
617 [case(NETR_DELTA_RENAME_GROUP)] netr_DELTA_RENAME *rename_group;
618 [case(NETR_DELTA_USER)] netr_DELTA_USER *user;
619 [case(NETR_DELTA_DELETE_USER)] ; /* rid only */
620 [case(NETR_DELTA_RENAME_USER)] netr_DELTA_RENAME *rename_user;
621 [case(NETR_DELTA_GROUP_MEMBER)] netr_DELTA_GROUP_MEMBER *group_member;
622 [case(NETR_DELTA_ALIAS)] netr_DELTA_ALIAS *alias;
623 [case(NETR_DELTA_DELETE_ALIAS)] ; /* rid only */
624 [case(NETR_DELTA_RENAME_ALIAS)] netr_DELTA_RENAME *rename_alias;
625 [case(NETR_DELTA_ALIAS_MEMBER)] netr_DELTA_ALIAS_MEMBER *alias_member;
626 [case(NETR_DELTA_POLICY)] netr_DELTA_POLICY *policy;
627 [case(NETR_DELTA_TRUSTED_DOMAIN)] netr_DELTA_TRUSTED_DOMAIN *trusted_domain;
628 [case(NETR_DELTA_DELETE_TRUST)] netr_DELTA_DELETE_TRUST delete_trust;
629 [case(NETR_DELTA_ACCOUNT)] netr_DELTA_ACCOUNT *account;
630 [case(NETR_DELTA_DELETE_ACCOUNT)] netr_DELTA_DELETE_ACCOUNT delete_account;
631 [case(NETR_DELTA_SECRET)] netr_DELTA_SECRET *secret;
632 [case(NETR_DELTA_DELETE_SECRET)] netr_DELTA_DELETE_SECRET delete_secret;
633 [case(NETR_DELTA_DELETE_GROUP2)] netr_DELTA_DELETE_USER *delete_group;
634 [case(NETR_DELTA_DELETE_USER2)] netr_DELTA_DELETE_USER *delete_user;
635 [case(NETR_DELTA_MODIFY_COUNT)] udlong *modified_count;
638 typedef [switch_type(netr_DeltaEnum)] union {
639 [case(NETR_DELTA_DOMAIN)] uint32 rid;
640 [case(NETR_DELTA_GROUP)] uint32 rid;
641 [case(NETR_DELTA_DELETE_GROUP)] uint32 rid;
642 [case(NETR_DELTA_RENAME_GROUP)] uint32 rid;
643 [case(NETR_DELTA_USER)] uint32 rid;
644 [case(NETR_DELTA_DELETE_USER)] uint32 rid;
645 [case(NETR_DELTA_RENAME_USER)] uint32 rid;
646 [case(NETR_DELTA_GROUP_MEMBER)] uint32 rid;
647 [case(NETR_DELTA_ALIAS)] uint32 rid;
648 [case(NETR_DELTA_DELETE_ALIAS)] uint32 rid;
649 [case(NETR_DELTA_RENAME_ALIAS)] uint32 rid;
650 [case(NETR_DELTA_ALIAS_MEMBER)] uint32 rid;
651 [case(NETR_DELTA_POLICY)] dom_sid2 *sid;
652 [case(NETR_DELTA_TRUSTED_DOMAIN)] dom_sid2 *sid;
653 [case(NETR_DELTA_DELETE_TRUST)] dom_sid2 *sid;
654 [case(NETR_DELTA_ACCOUNT)] dom_sid2 *sid;
655 [case(NETR_DELTA_DELETE_ACCOUNT)] dom_sid2 *sid;
656 [case(NETR_DELTA_SECRET)] unistr *name;
657 [case(NETR_DELTA_DELETE_SECRET)] unistr *name;
658 [case(NETR_DELTA_DELETE_GROUP2)] uint32 rid;
659 [case(NETR_DELTA_DELETE_USER2)] uint32 rid;
660 [case(NETR_DELTA_MODIFY_COUNT)] ;
661 } netr_DELTA_ID_UNION;
664 netr_DeltaEnum delta_type;
665 [switch_is(delta_type)] netr_DELTA_ID_UNION delta_id_union;
666 [switch_is(delta_type)] netr_DELTA_UNION delta_union;
671 [size_is(num_deltas)] netr_DELTA_ENUM *delta_enum;
672 } netr_DELTA_ENUM_ARRAY;
675 NTSTATUS netr_DatabaseDeltas(
676 [in] unistr logon_server,
677 [in] unistr computername,
678 [in] netr_Authenticator credential,
679 [in,out] netr_Authenticator return_authenticator,
680 [in] netr_SamDatabaseID database_id,
681 [in,out] udlong sequence_num,
682 [in] uint32 preferredmaximumlength,
683 [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
690 NTSTATUS netr_DatabaseSync(
691 [in] unistr logon_server,
692 [in] unistr computername,
693 [in] netr_Authenticator credential,
694 [in,out] netr_Authenticator return_authenticator,
695 [in] netr_SamDatabaseID database_id,
696 [in,out] uint32 sync_context,
697 [in] uint32 preferredmaximumlength,
698 [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
705 /* w2k3 returns NT_STATUS_NOT_IMPLEMENTED for this call */
707 typedef [flag(NDR_PAHEX)] struct {
708 uint8 computer_name[16];
710 uint32 serial_number;
714 [flag(NDR_REMAINING)] DATA_BLOB blob;
715 } netr_AccountBuffer;
717 NTSTATUS netr_AccountDeltas(
718 [in] unistr *logon_server,
719 [in] unistr computername,
720 [in] netr_Authenticator credential,
721 [in,out] netr_Authenticator return_authenticator,
722 [in] netr_UAS_INFO_0 uas,
725 [in] uint32 buffersize,
726 [out,subcontext(4)] netr_AccountBuffer buffer,
727 [out] uint32 count_returned,
728 [out] uint32 total_entries,
729 [out] netr_UAS_INFO_0 recordid
736 NTSTATUS netr_AccountSync(
737 [in] unistr *logon_server,
738 [in] unistr computername,
739 [in] netr_Authenticator credential,
740 [in,out] netr_Authenticator return_authenticator,
741 [in] uint32 reference,
743 [in] uint32 buffersize,
744 [out,subcontext(4)] netr_AccountBuffer buffer,
745 [out] uint32 count_returned,
746 [out] uint32 total_entries,
747 [out] uint32 next_reference,
748 [in,out] netr_UAS_INFO_0 recordid
755 NTSTATUS netr_GetDcName(
756 [in] unistr logon_server,
757 [in] unistr *domainname,
766 uint32 pdc_connection_status;
767 } netr_NETLOGON_INFO_1;
771 uint32 pdc_connection_status;
772 unistr trusted_dc_name;
773 uint32 tc_connection_status;
774 } netr_NETLOGON_INFO_2;
778 uint32 logon_attempts;
784 } netr_NETLOGON_INFO_3;
787 [case(1)] netr_NETLOGON_INFO_1 *info1;
788 [case(2)] netr_NETLOGON_INFO_2 *info2;
789 [case(3)] netr_NETLOGON_INFO_3 *info3;
790 } netr_CONTROL_QUERY_INFORMATION;
792 /* function_code values */
793 typedef [v1_enum] enum {
794 NETLOGON_CONTROL_REDISCOVER = 5,
795 NETLOGON_CONTROL_TC_QUERY = 6,
796 NETLOGON_CONTROL_TRANSPORT_NOTIFY = 7,
797 NETLOGON_CONTROL_SET_DBFLAG = 65534
798 } netr_LogonControlCode;
800 WERROR netr_LogonControl(
801 [in] unistr *logon_server,
802 [in] netr_LogonControlCode function_code,
804 [out,switch_is(level)] netr_CONTROL_QUERY_INFORMATION info
811 WERROR netr_GetAnyDCName(
812 [in] unistr *logon_server,
813 [in] unistr *domainname,
822 [case(NETLOGON_CONTROL_REDISCOVER)] unistr *domain;
823 [case(NETLOGON_CONTROL_TC_QUERY)] unistr *domain;
824 [case(NETLOGON_CONTROL_TRANSPORT_NOTIFY)] unistr *domain;
825 [case(NETLOGON_CONTROL_SET_DBFLAG)] uint32 debug_level;
826 } netr_CONTROL_DATA_INFORMATION;
828 WERROR netr_LogonControl2(
829 [in] unistr *logon_server,
830 [in] uint32 function_code,
832 [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION data,
833 [out][switch_is(level)] netr_CONTROL_QUERY_INFORMATION query
837 /* If this flag is not set, then the passwords and LM session keys are
838 * encrypted with DES calls. (And the user session key is
840 const int NETLOGON_NEG_ARCFOUR = 0x00000004;
841 const int NETLOGON_NEG_128BIT = 0x00004000;
842 const int NETLOGON_NEG_SCHANNEL = 0x40000000;
847 NTSTATUS netr_ServerAuthenticate2(
848 [in] unistr *server_name,
849 [in] unistr account_name,
850 [in] netr_SchannelType secure_channel_type,
851 [in] unistr computer_name,
852 [in,out,ref] netr_Credential *credentials,
853 [in,out,ref] uint32 *negotiate_flags
860 NTSTATUS netr_DatabaseSync2(
861 [in] unistr logon_server,
862 [in] unistr computername,
863 [in] netr_Authenticator credential,
864 [in,out] netr_Authenticator return_authenticator,
865 [in] netr_SamDatabaseID database_id,
866 [in] uint16 restart_state,
867 [in,out] uint32 sync_context,
868 [in] uint32 preferredmaximumlength,
869 [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
876 /* i'm not at all sure how this call works */
878 NTSTATUS netr_DatabaseRedo(
879 [in] unistr logon_server,
880 [in] unistr computername,
881 [in] netr_Authenticator credential,
882 [in,out] netr_Authenticator return_authenticator,
883 [in][size_is(change_log_entry_size)] uint8 *change_log_entry,
884 [in] uint32 change_log_entry_size,
885 [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
892 WERROR netr_LogonControl2Ex(
893 [in] unistr *logon_server,
894 [in] uint32 function_code,
896 [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION data,
897 [out][switch_is(level)] netr_CONTROL_QUERY_INFORMATION query
902 WERROR netr_NETRENUMERATETRUSTEDDOMAINS() ;
906 WERROR netr_DSRGETDCNAME() ;
910 WERROR netr_NETRLOGONDUMMYROUTINE1();
914 WERROR netr_NETRLOGONSETSERVICEBITS();
918 WERROR netr_NETRLOGONGETTRUSTRID();
922 WERROR netr_NETRLOGONCOMPUTESERVERDIGEST();
926 WERROR netr_NETRLOGONCOMPUTECLIENTDIGEST();
930 NTSTATUS netr_ServerAuthenticate3(
931 [in] unistr *server_name,
932 [in] unistr account_name,
933 [in] netr_SchannelType secure_channel_type,
934 [in] unistr computer_name,
935 [in,out,ref] netr_Credential *credentials,
936 [in,out,ref] uint32 *negotiate_flags,
937 [out,ref] uint32 *rid
942 WERROR netr_DSRGETDCNAMEX();
946 WERROR netr_DSRGETSITENAME();
953 [size_is(length)] uint8 *data;
956 typedef [flag(NDR_PAHEX)] struct {
959 [size_is(size/2),length_is(length/2)] uint16 *data;
964 unistr *workstation_domain;
965 unistr *workstation_site;
970 netr_BinaryString blob2;
972 netr_String unknown5;
973 netr_String unknown6;
978 [case(1)] netr_DomainQuery1 *query1;
979 [case(2)] netr_DomainQuery1 *query1;
983 netr_String domainname;
984 netr_String fulldomainname;
988 netr_BinaryString unknown1[4];
990 } netr_DomainTrustInfo;
993 netr_DomainTrustInfo domaininfo;
995 [size_is(num_trusts)] netr_DomainTrustInfo *trusts;
996 uint32 unknown[14]; /* room for expansion? */
1000 [case(1)] netr_DomainInfo1 *info1;
1001 [case(2)] netr_DomainInfo1 *info1;
1004 NTSTATUS netr_LogonGetDomainInfo(
1005 [in] unistr server_name,
1006 [in] unistr *computer_name,
1007 [in,ref] netr_Authenticator *credential,
1008 [in,out,ref] netr_Authenticator *return_authenticator,
1010 [in,switch_is(level)] netr_DomainQuery query,
1011 [out,switch_is(level)] netr_DomainInfo info
1014 typedef [flag(NDR_PAHEX)] struct {
1017 } netr_CryptPassword;
1021 NTSTATUS netr_ServerPasswordSet2(
1022 [in] unistr *server_name,
1023 [in] unistr account_name,
1024 [in] netr_SchannelType secure_channel_type,
1025 [in] unistr computer_name,
1026 [in] netr_Authenticator credential,
1027 [in] netr_CryptPassword new_password,
1028 [out] netr_Authenticator return_authenticator
1033 WERROR netr_NETRSERVERPASSWORDGET();
1037 WERROR netr_NETRLOGONSENDTOSAM();
1041 WERROR netr_DSRADDRESSTOSITENAMESW();
1048 int32 dc_address_type;
1050 unistr *domain_name;
1051 unistr *forest_name;
1053 unistr *dc_site_name;
1054 unistr *client_site_name;
1055 } netr_DrsGetDCNameEx2Info;
1057 WERROR netr_DrsGetDCNameEx2(
1058 [in] unistr *server_unc,
1059 [in] unistr *client_account,
1061 [in] unistr *domain_name,
1062 [in] GUID *domain_guid,
1063 [in] unistr *site_name,
1065 [out] netr_DrsGetDCNameEx2Info *info
1070 WERROR netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN();
1074 WERROR netr_NETRENUMERATETRUSTEDDOMAINSEX();
1078 WERROR netr_DSRADDRESSTOSITENAMESEXW();
1082 WERROR netr_DSRGETDCSITECOVERAGEW();
1086 NTSTATUS netr_LogonSamLogonEx(
1087 [in] unistr *server_name,
1088 [in] unistr *workstation,
1089 [in] uint16 logon_level,
1090 [in] [switch_is(logon_level)] netr_LogonLevel logon,
1091 [in] uint16 validation_level,
1092 [out] [switch_is(validation_level)] netr_Validation validation,
1093 [out] uint8 authoritative,
1094 [in,out] uint32 flags
1100 typedef [bitmap32bit] bitmap {
1101 NETR_TRUST_FLAG_IN_FOREST = 0x00000001,
1102 NETR_TRUST_FLAG_OUTBOUND = 0x00000002,
1103 NETR_TRUST_FLAG_TREEROOT = 0x00000004,
1104 NETR_TRUST_FLAG_PRIMARY = 0x00000008,
1105 NETR_TRUST_FLAG_NATIVE = 0x00000010,
1106 NETR_TRUST_FLAG_INBOUND = 0x00000020
1109 typedef [v1_enum] enum {
1110 NETR_TRUST_TYPE_DOWNLEVEL = 1,
1111 NETR_TRUST_TYPE_UPLEVEL = 2,
1112 NETR_TRUST_TYPE_MIT = 3,
1113 NETR_TRUST_TYPE_DCE = 4
1116 typedef [bitmap32bit] bitmap {
1117 NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE = 0x00000001,
1118 NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY = 0x00000002,
1119 NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN = 0x00000004,
1120 NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE = 0x00000008,
1121 NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION = 0x00000010,
1122 NETR_TRUST_ATTRIBUTE_WITHIN_FOREST = 0x00000020,
1123 NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL = 0x00000040
1124 } netr_TrustAttributes;
1127 unistr *netbios_name;
1129 netr_TrustFlags trust_flags;
1130 uint32 parent_index;
1131 netr_TrustType trust_type;
1132 netr_TrustAttributes trust_attributes;
1137 WERROR netr_DsrEnumerateDomainTrusts(
1138 [in] unistr *server_name,
1139 [in] netr_TrustFlags trust_flags,
1141 [out,size_is(count)] netr_DomainTrust *trusts
1147 WERROR netr_DSRDEREGISTERDNSHOSTRECORDS();
1151 WERROR netr_NETRSERVERTRUSTPASSWORDSGET();
1155 WERROR netr_DSRGETFORESTTRUSTINFORMATION();
1159 WERROR netr_NETRGETFORESTTRUSTINFORMATION();
1164 /* this is the ADS varient. I don't yet know what the "flags" are for */
1165 NTSTATUS netr_LogonSamLogonWithFlags(
1166 [in] unistr *server_name,
1167 [in] unistr *workstation,
1168 [in] netr_Authenticator *credential,
1169 [in][out] netr_Authenticator *return_authenticator,
1170 [in] uint16 logon_level,
1171 [in] [switch_is(logon_level)] netr_LogonLevel logon,
1172 [in] uint16 validation_level,
1173 [out] [switch_is(validation_level)] netr_Validation validation,
1174 [out] uint8 authoritative,
1175 [in,out] uint32 flags
1180 WERROR netr_NETRSERVERGETTRUSTINFO();