00001 /* 00002 Unix SMB/CIFS implementation. 00003 SMB parameters and setup 00004 Copyright (C) Andrew Tridgell 1992-1997 00005 Copyright (C) Luke Kenneth Casson Leighton 1996-1997 00006 Copyright (C) Paul Ashton 1997 00007 Copyright (C) Jean Fran巽ois Micouleau 2002 00008 00009 This program is free software; you can redistribute it and/or modify 00010 it under the terms of the GNU General Public License as published by 00011 the Free Software Foundation; either version 2 of the License, or 00012 (at your option) any later version. 00013 00014 This program is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with this program; if not, write to the Free Software 00021 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00022 */ 00023 00024 #ifndef _RPC_NETLOGON_H /* _RPC_NETLOGON_H */ 00025 #define _RPC_NETLOGON_H 00026 00027 00028 /* NETLOGON pipe */ 00029 #define NET_SAMLOGON 0x02 00030 #define NET_SAMLOGOFF 0x03 00031 #define NET_REQCHAL 0x04 00032 #define NET_AUTH 0x05 00033 #define NET_SRVPWSET 0x06 00034 #define NET_SAM_DELTAS 0x07 00035 #define NET_LOGON_CTRL 0x0c 00036 #define NET_GETANYDCNAME 0x0d 00037 #define NET_AUTH2 0x0f 00038 #define NET_LOGON_CTRL2 0x0e 00039 #define NET_SAM_SYNC 0x10 00040 #define NET_TRUST_DOM_LIST 0x13 00041 #define NET_DSR_GETDCNAME 0x14 00042 #define NET_AUTH3 0x1a 00043 #define NET_DSR_GETDCNAMEEX 0x1b 00044 #define NET_DSR_GETSITENAME 0x1c 00045 #define NET_SRVPWSET2 0x1e 00046 #define NET_DSR_GETDCNAMEEX2 0x22 00047 #define NET_SAMLOGON_EX 0x27 00048 00049 /* Secure Channel types. used in NetrServerAuthenticate negotiation */ 00050 #define SEC_CHAN_WKSTA 2 00051 #define SEC_CHAN_DOMAIN 4 00052 #define SEC_CHAN_BDC 6 00053 00054 /* Returned delta types */ 00055 #define SAM_DELTA_DOMAIN_INFO 0x01 00056 #define SAM_DELTA_GROUP_INFO 0x02 00057 #define SAM_DELTA_RENAME_GROUP 0x04 00058 #define SAM_DELTA_ACCOUNT_INFO 0x05 00059 #define SAM_DELTA_RENAME_USER 0x07 00060 #define SAM_DELTA_GROUP_MEM 0x08 00061 #define SAM_DELTA_ALIAS_INFO 0x09 00062 #define SAM_DELTA_RENAME_ALIAS 0x0b 00063 #define SAM_DELTA_ALIAS_MEM 0x0c 00064 #define SAM_DELTA_POLICY_INFO 0x0d 00065 #define SAM_DELTA_TRUST_DOMS 0x0e 00066 #define SAM_DELTA_PRIVS_INFO 0x10 /* DT_DELTA_ACCOUNTS */ 00067 #define SAM_DELTA_SECRET_INFO 0x12 00068 #define SAM_DELTA_DELETE_GROUP 0x14 00069 #define SAM_DELTA_DELETE_USER 0x15 00070 #define SAM_DELTA_MODIFIED_COUNT 0x16 00071 00072 /* SAM database types */ 00073 #define SAM_DATABASE_DOMAIN 0x00 /* Domain users and groups */ 00074 #define SAM_DATABASE_BUILTIN 0x01 /* BUILTIN users and groups */ 00075 #define SAM_DATABASE_PRIVS 0x02 /* Privileges */ 00076 00077 /* flags use when sending a NETLOGON_CONTROL request */ 00078 00079 #define NETLOGON_CONTROL_SYNC 0x2 00080 #define NETLOGON_CONTROL_REDISCOVER 0x5 00081 #define NETLOGON_CONTROL_TC_QUERY 0x6 00082 #define NETLOGON_CONTROL_TRANSPORT_NOTIFY 0x7 00083 #define NETLOGON_CONTROL_SET_DBFLAG 0xfffe 00084 00085 /* Some flag values reverse engineered from NLTEST.EXE */ 00086 /* used in the NETLOGON_CONTROL[2] reply */ 00087 00088 #define NL_CTRL_IN_SYNC 0x0000 00089 #define NL_CTRL_REPL_NEEDED 0x0001 00090 #define NL_CTRL_REPL_IN_PROGRESS 0x0002 00091 #define NL_CTRL_FULL_SYNC 0x0004 00092 00093 #define LOGON_GUEST 0x00000001 00094 #define LOGON_NOENCRYPTION 0x00000002 00095 #define LOGON_CACHED_ACCOUNT 0x00000004 00096 #define LOGON_USED_LM_PASSWORD 0x00000008 00097 #define LOGON_EXTRA_SIDS 0x00000020 00098 #define LOGON_SUBAUTH_SESSION_KEY 0x00000040 00099 #define LOGON_SERVER_TRUST_ACCOUNT 0x00000080 00100 #define LOGON_NTLMV2_ENABLED 0x00000100 00101 #define LOGON_RESOURCE_GROUPS 0x00000200 00102 #define LOGON_PROFILE_PATH_RETURNED 0x00000400 00103 #define LOGON_GRACE_LOGON 0x01000000 00104 00105 #define SE_GROUP_MANDATORY 0x00000001 00106 #define SE_GROUP_ENABLED_BY_DEFAULT 0x00000002 00107 #define SE_GROUP_ENABLED 0x00000004 00108 #define SE_GROUP_OWNER 0x00000008 00109 #define SE_GROUP_USE_FOR_DENY_ONLY 0x00000010 00110 #define SE_GROUP_LOGON_ID 0xC0000000 00111 #define SE_GROUP_RESOURCE 0x20000000 00112 00113 /* Flags for controlling the behaviour of a particular logon */ 00114 00115 /* sets LOGON_SERVER_TRUST_ACCOUNT user_flag */ 00116 #define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 0x00000020 00117 #define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 0x00000800 00118 00119 /* updates the "logon time" on network logon */ 00120 #define MSV1_0_UPDATE_LOGON_STATISTICS 0x00000004 00121 00122 /* returns the user parameters in the driveletter */ 00123 #define MSV1_0_RETURN_USER_PARAMETERS 0x00000008 00124 00125 /* returns the profilepath in the driveletter and 00126 * sets LOGON_PROFILE_PATH_RETURNED user_flag */ 00127 #define MSV1_0_RETURN_PROFILE_PATH 0x00000200 00128 00129 #if 0 00130 /* I think this is correct - it's what gets parsed on the wire. JRA. */ 00131 /* NET_USER_INFO_2 */ 00132 typedef struct net_user_info_2 { 00133 uint32 ptr_user_info; 00134 00135 NTTIME logon_time; /* logon time */ 00136 NTTIME logoff_time; /* logoff time */ 00137 NTTIME kickoff_time; /* kickoff time */ 00138 NTTIME pass_last_set_time; /* password last set time */ 00139 NTTIME pass_can_change_time; /* password can change time */ 00140 NTTIME pass_must_change_time; /* password must change time */ 00141 00142 UNIHDR hdr_user_name; /* username unicode string header */ 00143 UNIHDR hdr_full_name; /* user's full name unicode string header */ 00144 UNIHDR hdr_logon_script; /* logon script unicode string header */ 00145 UNIHDR hdr_profile_path; /* profile path unicode string header */ 00146 UNIHDR hdr_home_dir; /* home directory unicode string header */ 00147 UNIHDR hdr_dir_drive; /* home directory drive unicode string header */ 00148 00149 uint16 logon_count; /* logon count */ 00150 uint16 bad_pw_count; /* bad password count */ 00151 00152 uint32 user_id; /* User ID */ 00153 uint32 group_id; /* Group ID */ 00154 uint32 num_groups; /* num groups */ 00155 uint32 buffer_groups; /* undocumented buffer pointer to groups. */ 00156 uint32 user_flgs; /* user flags */ 00157 00158 uint8 user_sess_key[16]; /* unused user session key */ 00159 00160 UNIHDR hdr_logon_srv; /* logon server unicode string header */ 00161 UNIHDR hdr_logon_dom; /* logon domain unicode string header */ 00162 00163 uint32 buffer_dom_id; /* undocumented logon domain id pointer */ 00164 uint8 padding[40]; /* unused padding bytes. expansion room */ 00165 00166 UNISTR2 uni_user_name; /* username unicode string */ 00167 UNISTR2 uni_full_name; /* user's full name unicode string */ 00168 UNISTR2 uni_logon_script; /* logon script unicode string */ 00169 UNISTR2 uni_profile_path; /* profile path unicode string */ 00170 UNISTR2 uni_home_dir; /* home directory unicode string */ 00171 UNISTR2 uni_dir_drive; /* home directory drive unicode string */ 00172 00173 uint32 num_groups2; /* num groups */ 00174 DOM_GID *gids; /* group info */ 00175 00176 UNISTR2 uni_logon_srv; /* logon server unicode string */ 00177 UNISTR2 uni_logon_dom; /* logon domain unicode string */ 00178 00179 DOM_SID2 dom_sid; /* domain SID */ 00180 00181 uint32 num_other_groups; /* other groups */ 00182 DOM_GID *other_gids; /* group info */ 00183 DOM_SID2 *other_sids; /* undocumented - domain SIDs */ 00184 00185 } NET_USER_INFO_2; 00186 #endif 00187 00188 /* NET_USER_INFO_2 */ 00189 typedef struct net_user_info_2 { 00190 uint32 ptr_user_info; 00191 00192 NTTIME logon_time; /* logon time */ 00193 NTTIME logoff_time; /* logoff time */ 00194 NTTIME kickoff_time; /* kickoff time */ 00195 NTTIME pass_last_set_time; /* password last set time */ 00196 NTTIME pass_can_change_time; /* password can change time */ 00197 NTTIME pass_must_change_time; /* password must change time */ 00198 00199 UNIHDR hdr_user_name; /* username unicode string header */ 00200 UNIHDR hdr_full_name; /* user's full name unicode string header */ 00201 UNIHDR hdr_logon_script; /* logon script unicode string header */ 00202 UNIHDR hdr_profile_path; /* profile path unicode string header */ 00203 UNIHDR hdr_home_dir; /* home directory unicode string header */ 00204 UNIHDR hdr_dir_drive; /* home directory drive unicode string header */ 00205 00206 uint16 logon_count; /* logon count */ 00207 uint16 bad_pw_count; /* bad password count */ 00208 00209 uint32 user_rid; /* User RID */ 00210 uint32 group_rid; /* Group RID */ 00211 00212 uint32 num_groups; /* num groups */ 00213 uint32 buffer_groups; /* undocumented buffer pointer to groups. */ 00214 uint32 user_flgs; /* user flags */ 00215 00216 uint8 user_sess_key[16]; /* user session key */ 00217 00218 UNIHDR hdr_logon_srv; /* logon server unicode string header */ 00219 UNIHDR hdr_logon_dom; /* logon domain unicode string header */ 00220 00221 uint32 buffer_dom_id; /* undocumented logon domain id pointer */ 00222 uint8 lm_sess_key[8]; /* lm session key */ 00223 uint32 acct_flags; /* account flags */ 00224 uint32 unknown[7]; /* unknown */ 00225 00226 UNISTR2 uni_user_name; /* username unicode string */ 00227 UNISTR2 uni_full_name; /* user's full name unicode string */ 00228 UNISTR2 uni_logon_script; /* logon script unicode string */ 00229 UNISTR2 uni_profile_path; /* profile path unicode string */ 00230 UNISTR2 uni_home_dir; /* home directory unicode string */ 00231 UNISTR2 uni_dir_drive; /* home directory drive unicode string */ 00232 00233 UNISTR2 uni_logon_srv; /* logon server unicode string */ 00234 UNISTR2 uni_logon_dom; /* logon domain unicode string */ 00235 00236 DOM_SID2 dom_sid; /* domain SID */ 00237 } NET_USER_INFO_2; 00238 00239 /* NET_USER_INFO_3 */ 00240 typedef struct net_user_info_3 { 00241 uint32 ptr_user_info; 00242 00243 NTTIME logon_time; /* logon time */ 00244 NTTIME logoff_time; /* logoff time */ 00245 NTTIME kickoff_time; /* kickoff time */ 00246 NTTIME pass_last_set_time; /* password last set time */ 00247 NTTIME pass_can_change_time; /* password can change time */ 00248 NTTIME pass_must_change_time; /* password must change time */ 00249 00250 UNIHDR hdr_user_name; /* username unicode string header */ 00251 UNIHDR hdr_full_name; /* user's full name unicode string header */ 00252 UNIHDR hdr_logon_script; /* logon script unicode string header */ 00253 UNIHDR hdr_profile_path; /* profile path unicode string header */ 00254 UNIHDR hdr_home_dir; /* home directory unicode string header */ 00255 UNIHDR hdr_dir_drive; /* home directory drive unicode string header */ 00256 00257 uint16 logon_count; /* logon count */ 00258 uint16 bad_pw_count; /* bad password count */ 00259 00260 uint32 user_rid; /* User RID */ 00261 uint32 group_rid; /* Group RID */ 00262 00263 uint32 num_groups; /* num groups */ 00264 uint32 buffer_groups; /* undocumented buffer pointer to groups. */ 00265 uint32 user_flgs; /* user flags */ 00266 00267 uint8 user_sess_key[16]; /* user session key */ 00268 00269 UNIHDR hdr_logon_srv; /* logon server unicode string header */ 00270 UNIHDR hdr_logon_dom; /* logon domain unicode string header */ 00271 00272 uint32 buffer_dom_id; /* undocumented logon domain id pointer */ 00273 uint8 lm_sess_key[8]; /* lm session key */ 00274 uint32 acct_flags; /* account flags */ 00275 uint32 unknown[7]; /* unknown */ 00276 00277 uint32 num_other_sids; /* number of foreign/trusted domain sids */ 00278 uint32 buffer_other_sids; 00279 00280 /* The next three uint32 are not really part of user_info_3 but here 00281 * for parsing convenience. They are only valid in Kerberos PAC 00282 * parsing - Guenther */ 00283 uint32 ptr_res_group_dom_sid; 00284 uint32 res_group_count; 00285 uint32 ptr_res_groups; 00286 00287 UNISTR2 uni_user_name; /* username unicode string */ 00288 UNISTR2 uni_full_name; /* user's full name unicode string */ 00289 UNISTR2 uni_logon_script; /* logon script unicode string */ 00290 UNISTR2 uni_profile_path; /* profile path unicode string */ 00291 UNISTR2 uni_home_dir; /* home directory unicode string */ 00292 UNISTR2 uni_dir_drive; /* home directory drive unicode string */ 00293 00294 uint32 num_groups2; /* num groups */ 00295 DOM_GID *gids; /* group info */ 00296 00297 UNISTR2 uni_logon_srv; /* logon server unicode string */ 00298 UNISTR2 uni_logon_dom; /* logon domain unicode string */ 00299 00300 DOM_SID2 dom_sid; /* domain SID */ 00301 00302 DOM_SID2 *other_sids; /* foreign/trusted domain SIDs */ 00303 uint32 *other_sids_attrib; 00304 } NET_USER_INFO_3; 00305 00306 00307 /* NETLOGON_INFO_1 - pdc status info, i presume */ 00308 typedef struct netlogon_1_info { 00309 uint32 flags; /* 0x0 - undocumented */ 00310 uint32 pdc_status; /* 0x0 - undocumented */ 00311 } NETLOGON_INFO_1; 00312 00313 /* NETLOGON_INFO_2 - pdc status info, plus trusted domain info */ 00314 typedef struct netlogon_2_info { 00315 uint32 flags; /* 0x0 - undocumented */ 00316 uint32 pdc_status; /* 0x0 - undocumented */ 00317 uint32 ptr_trusted_dc_name; /* pointer to trusted domain controller name */ 00318 uint32 tc_status; 00319 UNISTR2 uni_trusted_dc_name; /* unicode string - trusted dc name */ 00320 } NETLOGON_INFO_2; 00321 00322 /* NETLOGON_INFO_3 - logon status info, i presume */ 00323 typedef struct netlogon_3_info { 00324 uint32 flags; /* 0x0 - undocumented */ 00325 uint32 logon_attempts; /* number of logon attempts */ 00326 uint32 reserved_1; /* 0x0 - undocumented */ 00327 uint32 reserved_2; /* 0x0 - undocumented */ 00328 uint32 reserved_3; /* 0x0 - undocumented */ 00329 uint32 reserved_4; /* 0x0 - undocumented */ 00330 uint32 reserved_5; /* 0x0 - undocumented */ 00331 } NETLOGON_INFO_3; 00332 00333 /******************************************************** 00334 Logon Control Query 00335 00336 This is generated by a nltest /bdc_query:DOMAIN 00337 00338 query_level 0x1, function_code 0x1 00339 00340 ********************************************************/ 00341 00342 /* NET_Q_LOGON_CTRL - LSA Netr Logon Control */ 00343 00344 typedef struct net_q_logon_ctrl_info { 00345 uint32 ptr; 00346 UNISTR2 uni_server_name; 00347 uint32 function_code; 00348 uint32 query_level; 00349 } NET_Q_LOGON_CTRL; 00350 00351 /* NET_R_LOGON_CTRL - LSA Netr Logon Control */ 00352 00353 typedef struct net_r_logon_ctrl_info { 00354 uint32 switch_value; 00355 uint32 ptr; 00356 00357 union { 00358 NETLOGON_INFO_1 info1; 00359 } logon; 00360 00361 NTSTATUS status; 00362 } NET_R_LOGON_CTRL; 00363 00364 00365 typedef struct ctrl_data_info_5 { 00366 uint32 function_code; 00367 00368 uint32 ptr_domain; 00369 UNISTR2 domain; 00370 } CTRL_DATA_INFO_5; 00371 00372 typedef struct ctrl_data_info_6 { 00373 uint32 function_code; 00374 00375 uint32 ptr_domain; 00376 UNISTR2 domain; 00377 } CTRL_DATA_INFO_6; 00378 00379 00380 /******************************************************** 00381 Logon Control2 Query 00382 00383 query_level 0x1 - pdc status 00384 query_level 0x3 - number of logon attempts. 00385 00386 ********************************************************/ 00387 00388 /* NET_Q_LOGON_CTRL2 - LSA Netr Logon Control 2 */ 00389 typedef struct net_q_logon_ctrl2_info { 00390 uint32 ptr; /* undocumented buffer pointer */ 00391 UNISTR2 uni_server_name; /* server name, starting with two '\'s */ 00392 00393 uint32 function_code; 00394 uint32 query_level; 00395 union { 00396 CTRL_DATA_INFO_5 info5; 00397 CTRL_DATA_INFO_6 info6; 00398 } info; 00399 } NET_Q_LOGON_CTRL2; 00400 00401 /******************************************************* 00402 Logon Control Response 00403 00404 switch_value is same as query_level in request 00405 *******************************************************/ 00406 00407 /* NET_R_LOGON_CTRL2 - response to LSA Logon Control2 */ 00408 typedef struct net_r_logon_ctrl2_info { 00409 uint32 switch_value; /* 0x1, 0x3 */ 00410 uint32 ptr; 00411 00412 union 00413 { 00414 NETLOGON_INFO_1 info1; 00415 NETLOGON_INFO_2 info2; 00416 NETLOGON_INFO_3 info3; 00417 00418 } logon; 00419 00420 NTSTATUS status; /* return code */ 00421 } NET_R_LOGON_CTRL2; 00422 00423 /* NET_Q_GETANYDCNAME - Ask a DC for a trusted DC name */ 00424 00425 typedef struct net_q_getanydcname { 00426 uint32 ptr_logon_server; 00427 UNISTR2 uni_logon_server; 00428 uint32 ptr_domainname; 00429 UNISTR2 uni_domainname; 00430 } NET_Q_GETANYDCNAME; 00431 00432 /* NET_R_GETANYDCNAME - Ask a DC for a trusted DC name */ 00433 00434 typedef struct net_r_getanydcname { 00435 uint32 ptr_dcname; 00436 UNISTR2 uni_dcname; 00437 WERROR status; 00438 } NET_R_GETANYDCNAME; 00439 00440 /* NET_Q_TRUST_DOM_LIST - LSA Query Trusted Domains */ 00441 typedef struct net_q_trust_dom_info { 00442 uint32 ptr; /* undocumented buffer pointer */ 00443 UNISTR2 uni_server_name; /* server name, starting with two '\'s */ 00444 } NET_Q_TRUST_DOM_LIST; 00445 00446 #define MAX_TRUST_DOMS 1 00447 00448 /* NET_R_TRUST_DOM_LIST - response to LSA Trusted Domains */ 00449 typedef struct net_r_trust_dom_info { 00450 UNISTR2 uni_trust_dom_name[MAX_TRUST_DOMS]; 00451 00452 NTSTATUS status; /* return code */ 00453 } NET_R_TRUST_DOM_LIST; 00454 00455 00456 /* NEG_FLAGS */ 00457 typedef struct neg_flags_info { 00458 uint32 neg_flags; /* negotiated flags */ 00459 } NEG_FLAGS; 00460 00461 00462 /* NET_Q_REQ_CHAL */ 00463 typedef struct net_q_req_chal_info { 00464 uint32 undoc_buffer; /* undocumented buffer pointer */ 00465 UNISTR2 uni_logon_srv; /* logon server unicode string */ 00466 UNISTR2 uni_logon_clnt; /* logon client unicode string */ 00467 DOM_CHAL clnt_chal; /* client challenge */ 00468 } NET_Q_REQ_CHAL; 00469 00470 00471 /* NET_R_REQ_CHAL */ 00472 typedef struct net_r_req_chal_info { 00473 DOM_CHAL srv_chal; /* server challenge */ 00474 NTSTATUS status; /* return code */ 00475 } NET_R_REQ_CHAL; 00476 00477 /* NET_Q_AUTH */ 00478 typedef struct net_q_auth_info { 00479 DOM_LOG_INFO clnt_id; /* client identification info */ 00480 DOM_CHAL clnt_chal; /* client-calculated credentials */ 00481 } NET_Q_AUTH; 00482 00483 /* NET_R_AUTH */ 00484 typedef struct net_r_auth_info { 00485 DOM_CHAL srv_chal; /* server-calculated credentials */ 00486 NTSTATUS status; /* return code */ 00487 } NET_R_AUTH; 00488 00489 /* NET_Q_AUTH_2 */ 00490 typedef struct net_q_auth2_info { 00491 DOM_LOG_INFO clnt_id; /* client identification info */ 00492 DOM_CHAL clnt_chal; /* client-calculated credentials */ 00493 00494 NEG_FLAGS clnt_flgs; /* usually 0x0000 01ff */ 00495 } NET_Q_AUTH_2; 00496 00497 00498 /* NET_R_AUTH_2 */ 00499 typedef struct net_r_auth2_info { 00500 DOM_CHAL srv_chal; /* server-calculated credentials */ 00501 NEG_FLAGS srv_flgs; /* usually 0x0000 01ff */ 00502 NTSTATUS status; /* return code */ 00503 } NET_R_AUTH_2; 00504 00505 /* NET_Q_AUTH_3 */ 00506 typedef struct net_q_auth3_info { 00507 DOM_LOG_INFO clnt_id; /* client identification info */ 00508 DOM_CHAL clnt_chal; /* client-calculated credentials */ 00509 NEG_FLAGS clnt_flgs; /* usually 0x6007 ffff */ 00510 } NET_Q_AUTH_3; 00511 00512 /* NET_R_AUTH_3 */ 00513 typedef struct net_r_auth3_info { 00514 DOM_CHAL srv_chal; /* server-calculated credentials */ 00515 NEG_FLAGS srv_flgs; /* usually 0x6007 ffff */ 00516 uint32 unknown; /* 0x0000045b */ 00517 NTSTATUS status; /* return code */ 00518 } NET_R_AUTH_3; 00519 00520 00521 /* NET_Q_SRV_PWSET */ 00522 typedef struct net_q_srv_pwset_info { 00523 DOM_CLNT_INFO clnt_id; /* client identification/authentication info */ 00524 uint8 pwd[16]; /* new password - undocumented. */ 00525 } NET_Q_SRV_PWSET; 00526 00527 /* NET_R_SRV_PWSET */ 00528 typedef struct net_r_srv_pwset_info { 00529 DOM_CRED srv_cred; /* server-calculated credentials */ 00530 00531 NTSTATUS status; /* return code */ 00532 } NET_R_SRV_PWSET; 00533 00534 typedef struct net_crypt_password { 00535 uint8_t data[512]; 00536 uint32_t length; 00537 } NET_CRYPT_PWD; 00538 00539 /* NET_Q_SRV_PWSET2 */ 00540 typedef struct net_q_srv_pwset2_info { 00541 DOM_CLNT_INFO clnt_id; /* client identification/authentication info */ 00542 NET_CRYPT_PWD pwd; /* new password */ 00543 } NET_Q_SRV_PWSET2; 00544 00545 /* NET_R_SRV_PWSET2 */ 00546 typedef struct net_r_srv_pwset2_info { 00547 DOM_CRED srv_cred; /* server-calculated credentials */ 00548 NTSTATUS status; /* return code */ 00549 } NET_R_SRV_PWSET2; 00550 00551 /* NET_ID_INFO_2 */ 00552 typedef struct net_network_info_2 { 00553 uint32 ptr_id_info2; /* pointer to id_info_2 */ 00554 UNIHDR hdr_domain_name; /* domain name unicode header */ 00555 uint32 param_ctrl; /* param control (0x2) */ 00556 DOM_LOGON_ID logon_id; /* logon ID */ 00557 UNIHDR hdr_user_name; /* user name unicode header */ 00558 UNIHDR hdr_wksta_name; /* workstation name unicode header */ 00559 uint8 lm_chal[8]; /* lan manager 8 byte challenge */ 00560 STRHDR hdr_nt_chal_resp; /* nt challenge response */ 00561 STRHDR hdr_lm_chal_resp; /* lm challenge response */ 00562 00563 UNISTR2 uni_domain_name; /* domain name unicode string */ 00564 UNISTR2 uni_user_name; /* user name unicode string */ 00565 UNISTR2 uni_wksta_name; /* workgroup name unicode string */ 00566 STRING2 nt_chal_resp; /* nt challenge response */ 00567 STRING2 lm_chal_resp; /* lm challenge response */ 00568 } NET_ID_INFO_2; 00569 00570 /* NET_ID_INFO_1 */ 00571 typedef struct id_info_1 { 00572 uint32 ptr_id_info1; /* pointer to id_info_1 */ 00573 UNIHDR hdr_domain_name; /* domain name unicode header */ 00574 uint32 param_ctrl; /* param control */ 00575 DOM_LOGON_ID logon_id; /* logon ID */ 00576 UNIHDR hdr_user_name; /* user name unicode header */ 00577 UNIHDR hdr_wksta_name; /* workstation name unicode header */ 00578 OWF_INFO lm_owf; /* LM OWF Password */ 00579 OWF_INFO nt_owf; /* NT OWF Password */ 00580 UNISTR2 uni_domain_name; /* domain name unicode string */ 00581 UNISTR2 uni_user_name; /* user name unicode string */ 00582 UNISTR2 uni_wksta_name; /* workgroup name unicode string */ 00583 } NET_ID_INFO_1; 00584 00585 #define INTERACTIVE_LOGON_TYPE 1 00586 #define NET_LOGON_TYPE 2 00587 00588 /* NET_ID_INFO_CTR */ 00589 typedef struct net_id_info_ctr_info { 00590 uint16 switch_value; 00591 00592 union { 00593 NET_ID_INFO_1 id1; /* auth-level 1 - interactive user login */ 00594 NET_ID_INFO_2 id2; /* auth-level 2 - workstation referred login */ 00595 } auth; 00596 } NET_ID_INFO_CTR; 00597 00598 /* SAM_INFO - sam logon/off id structure */ 00599 typedef struct sam_info { 00600 DOM_CLNT_INFO2 client; 00601 uint32 ptr_rtn_cred; /* pointer to return credentials */ 00602 DOM_CRED rtn_cred; /* return credentials */ 00603 uint16 logon_level; 00604 NET_ID_INFO_CTR *ctr; 00605 } DOM_SAM_INFO; 00606 00607 /* SAM_INFO - sam logon/off id structure - no creds */ 00608 typedef struct sam_info_ex { 00609 DOM_CLNT_SRV client; 00610 uint16 logon_level; 00611 NET_ID_INFO_CTR *ctr; 00612 } DOM_SAM_INFO_EX; 00613 00614 /* NET_Q_SAM_LOGON */ 00615 typedef struct net_q_sam_logon_info { 00616 DOM_SAM_INFO sam_id; 00617 uint16 validation_level; 00618 } NET_Q_SAM_LOGON; 00619 00620 /* NET_Q_SAM_LOGON_EX */ 00621 typedef struct net_q_sam_logon_info_ex { 00622 DOM_SAM_INFO_EX sam_id; 00623 uint16 validation_level; 00624 uint32 flags; 00625 } NET_Q_SAM_LOGON_EX; 00626 00627 /* NET_R_SAM_LOGON */ 00628 typedef struct net_r_sam_logon_info { 00629 uint32 buffer_creds; /* undocumented buffer pointer */ 00630 DOM_CRED srv_creds; /* server credentials. server time stamp appears to be ignored. */ 00631 00632 uint16 switch_value; /* 3 - indicates type of USER INFO */ 00633 NET_USER_INFO_3 *user; 00634 00635 uint32 auth_resp; /* 1 - Authoritative response; 0 - Non-Auth? */ 00636 00637 NTSTATUS status; /* return code */ 00638 } NET_R_SAM_LOGON; 00639 00640 /* NET_R_SAM_LOGON_EX */ 00641 typedef struct net_r_sam_logon_info_ex { 00642 uint16 switch_value; /* 3 - indicates type of USER INFO */ 00643 NET_USER_INFO_3 *user; 00644 00645 uint32 auth_resp; /* 1 - Authoritative response; 0 - Non-Auth? */ 00646 uint32 flags; 00647 00648 NTSTATUS status; /* return code */ 00649 } NET_R_SAM_LOGON_EX; 00650 00651 00652 /* NET_Q_SAM_LOGOFF */ 00653 typedef struct net_q_sam_logoff_info { 00654 DOM_SAM_INFO sam_id; 00655 } NET_Q_SAM_LOGOFF; 00656 00657 /* NET_R_SAM_LOGOFF */ 00658 typedef struct net_r_sam_logoff_info { 00659 uint32 buffer_creds; /* undocumented buffer pointer */ 00660 DOM_CRED srv_creds; /* server credentials. server time stamp appears to be ignored. */ 00661 NTSTATUS status; /* return code */ 00662 } NET_R_SAM_LOGOFF; 00663 00664 /* NET_Q_SAM_SYNC */ 00665 typedef struct net_q_sam_sync_info { 00666 UNISTR2 uni_srv_name; /* \\PDC */ 00667 UNISTR2 uni_cli_name; /* BDC */ 00668 DOM_CRED cli_creds; 00669 DOM_CRED ret_creds; 00670 00671 uint32 database_id; 00672 uint32 restart_state; 00673 uint32 sync_context; 00674 00675 uint32 max_size; /* preferred maximum length */ 00676 } NET_Q_SAM_SYNC; 00677 00678 /* SAM_DELTA_HDR */ 00679 typedef struct sam_delta_hdr_info { 00680 uint16 type; /* type of structure attached */ 00681 uint16 type2; 00682 uint32 target_rid; 00683 00684 uint32 type3; 00685 uint32 ptr_delta; 00686 } SAM_DELTA_HDR; 00687 00688 /* LOCKOUT_STRING */ 00689 typedef struct account_lockout_string { 00690 uint32 array_size; 00691 uint32 offset; 00692 uint32 length; 00693 /* uint16 *bindata; */ 00694 uint64 lockout_duration; 00695 uint64 reset_count; 00696 uint32 bad_attempt_lockout; 00697 uint32 dummy; 00698 } LOCKOUT_STRING; 00699 00700 /* HDR_LOCKOUT_STRING */ 00701 typedef struct hdr_account_lockout_string { 00702 uint16 size; 00703 uint16 length; 00704 uint32 buffer; 00705 } HDR_LOCKOUT_STRING; 00706 00707 /* SAM_DOMAIN_INFO (0x1) */ 00708 typedef struct sam_domain_info_info { 00709 UNIHDR hdr_dom_name; 00710 UNIHDR hdr_oem_info; 00711 00712 uint64 force_logoff; 00713 uint16 min_pwd_len; 00714 uint16 pwd_history_len; 00715 uint64 max_pwd_age; 00716 uint64 min_pwd_age; 00717 uint64 dom_mod_count; 00718 NTTIME creation_time; 00719 uint32 security_information; 00720 00721 BUFHDR4 hdr_sec_desc; /* security descriptor */ 00722 00723 HDR_LOCKOUT_STRING hdr_account_lockout; 00724 00725 UNIHDR hdr_unknown2; 00726 UNIHDR hdr_unknown3; 00727 UNIHDR hdr_unknown4; 00728 00729 UNISTR2 uni_dom_name; 00730 UNISTR2 buf_oem_info; 00731 00732 RPC_DATA_BLOB buf_sec_desc; 00733 00734 LOCKOUT_STRING account_lockout; 00735 00736 UNISTR2 buf_unknown2; 00737 UNISTR2 buf_unknown3; 00738 UNISTR2 buf_unknown4; 00739 00740 uint32 logon_chgpass; 00741 uint32 unknown6; 00742 uint32 unknown7; 00743 uint32 unknown8; 00744 } SAM_DOMAIN_INFO; 00745 00746 /* SAM_GROUP_INFO (0x2) */ 00747 typedef struct sam_group_info_info { 00748 UNIHDR hdr_grp_name; 00749 DOM_GID gid; 00750 UNIHDR hdr_grp_desc; 00751 BUFHDR2 hdr_sec_desc; /* security descriptor */ 00752 uint8 reserved[48]; 00753 00754 UNISTR2 uni_grp_name; 00755 UNISTR2 uni_grp_desc; 00756 RPC_DATA_BLOB buf_sec_desc; 00757 } SAM_GROUP_INFO; 00758 00759 /* SAM_PWD */ 00760 typedef struct sam_passwd_info { 00761 /* this structure probably contains password history */ 00762 /* this is probably a count of lm/nt pairs */ 00763 uint32 unk_0; /* 0x0000 0002 */ 00764 00765 UNIHDR hdr_lm_pwd; 00766 uint8 buf_lm_pwd[16]; 00767 00768 UNIHDR hdr_nt_pwd; 00769 uint8 buf_nt_pwd[16]; 00770 00771 UNIHDR hdr_empty_lm; 00772 UNIHDR hdr_empty_nt; 00773 } SAM_PWD; 00774 00775 /* SAM_ACCOUNT_INFO (0x5) */ 00776 typedef struct sam_account_info_info { 00777 UNIHDR hdr_acct_name; 00778 UNIHDR hdr_full_name; 00779 00780 uint32 user_rid; 00781 uint32 group_rid; 00782 00783 UNIHDR hdr_home_dir; 00784 UNIHDR hdr_dir_drive; 00785 UNIHDR hdr_logon_script; 00786 UNIHDR hdr_acct_desc; 00787 UNIHDR hdr_workstations; 00788 00789 NTTIME logon_time; 00790 NTTIME logoff_time; 00791 00792 uint32 logon_divs; /* 0xA8 */ 00793 uint32 ptr_logon_hrs; 00794 00795 uint16 bad_pwd_count; 00796 uint16 logon_count; 00797 NTTIME pwd_last_set_time; 00798 NTTIME acct_expiry_time; 00799 00800 uint32 acb_info; 00801 uint8 nt_pwd[16]; 00802 uint8 lm_pwd[16]; 00803 uint8 nt_pwd_present; 00804 uint8 lm_pwd_present; 00805 uint8 pwd_expired; 00806 00807 UNIHDR hdr_comment; 00808 UNIHDR hdr_parameters; 00809 uint16 country; 00810 uint16 codepage; 00811 00812 BUFHDR2 hdr_sec_desc; /* security descriptor */ 00813 00814 UNIHDR hdr_profile; 00815 UNIHDR hdr_reserved[3]; /* space for more strings */ 00816 uint32 dw_reserved[4]; /* space for more data - first two seem to 00817 be an NTTIME */ 00818 00819 UNISTR2 uni_acct_name; 00820 UNISTR2 uni_full_name; 00821 UNISTR2 uni_home_dir; 00822 UNISTR2 uni_dir_drive; 00823 UNISTR2 uni_logon_script; 00824 UNISTR2 uni_acct_desc; 00825 UNISTR2 uni_workstations; 00826 00827 uint32 unknown1; /* 0x4EC */ 00828 uint32 unknown2; /* 0 */ 00829 00830 RPC_DATA_BLOB buf_logon_hrs; 00831 UNISTR2 uni_comment; 00832 UNISTR2 uni_parameters; 00833 SAM_PWD pass; 00834 RPC_DATA_BLOB buf_sec_desc; 00835 UNISTR2 uni_profile; 00836 } SAM_ACCOUNT_INFO; 00837 00838 /* SAM_GROUP_MEM_INFO (0x8) */ 00839 typedef struct sam_group_mem_info_info { 00840 uint32 ptr_rids; 00841 uint32 ptr_attribs; 00842 uint32 num_members; 00843 uint8 unknown[16]; 00844 00845 uint32 num_members2; 00846 uint32 *rids; 00847 00848 uint32 num_members3; 00849 uint32 *attribs; 00850 00851 } SAM_GROUP_MEM_INFO; 00852 00853 /* SAM_ALIAS_INFO (0x9) */ 00854 typedef struct sam_alias_info_info { 00855 UNIHDR hdr_als_name; 00856 uint32 als_rid; 00857 BUFHDR2 hdr_sec_desc; /* security descriptor */ 00858 UNIHDR hdr_als_desc; 00859 uint8 reserved[40]; 00860 00861 UNISTR2 uni_als_name; 00862 RPC_DATA_BLOB buf_sec_desc; 00863 UNISTR2 uni_als_desc; 00864 } SAM_ALIAS_INFO; 00865 00866 /* SAM_ALIAS_MEM_INFO (0xC) */ 00867 typedef struct sam_alias_mem_info_info { 00868 uint32 num_members; 00869 uint32 ptr_members; 00870 uint8 unknown[16]; 00871 00872 uint32 num_sids; 00873 uint32 *ptr_sids; 00874 DOM_SID2 *sids; 00875 } SAM_ALIAS_MEM_INFO; 00876 00877 00878 /* SAM_DELTA_POLICY (0x0D) */ 00879 typedef struct { 00880 uint32 max_log_size; /* 0x5000 */ 00881 uint64 audit_retention_period; /* 0 */ 00882 uint32 auditing_mode; /* 0 */ 00883 uint32 num_events; 00884 uint32 ptr_events; 00885 UNIHDR hdr_dom_name; 00886 uint32 sid_ptr; 00887 00888 uint32 paged_pool_limit; /* 0x02000000 */ 00889 uint32 non_paged_pool_limit; /* 0x00100000 */ 00890 uint32 min_workset_size; /* 0x00010000 */ 00891 uint32 max_workset_size; /* 0x0f000000 */ 00892 uint32 page_file_limit; /* 0 */ 00893 uint64 time_limit; /* 0 */ 00894 NTTIME modify_time; /* 0x3c*/ 00895 NTTIME create_time; /* a7080110 */ 00896 BUFHDR2 hdr_sec_desc; 00897 00898 uint32 num_event_audit_options; 00899 uint32 event_audit_option; 00900 00901 UNISTR2 domain_name; 00902 DOM_SID2 domain_sid; 00903 00904 RPC_DATA_BLOB buf_sec_desc; 00905 } SAM_DELTA_POLICY; 00906 00907 /* SAM_DELTA_TRUST_DOMS */ 00908 typedef struct { 00909 uint32 buf_size; 00910 SEC_DESC *sec_desc; 00911 DOM_SID2 sid; 00912 UNIHDR hdr_domain; 00913 00914 uint32 unknown0; 00915 uint32 unknown1; 00916 uint32 unknown2; 00917 00918 uint32 buf_size2; 00919 uint32 ptr; 00920 00921 uint32 unknown3; 00922 UNISTR2 domain; 00923 } SAM_DELTA_TRUSTDOMS; 00924 00925 /* SAM_DELTA_PRIVS (0x10) */ 00926 typedef struct { 00927 DOM_SID2 sid; 00928 00929 uint32 priv_count; 00930 uint32 priv_control; 00931 00932 uint32 priv_attr_ptr; 00933 uint32 priv_name_ptr; 00934 00935 uint32 paged_pool_limit; /* 0x02000000 */ 00936 uint32 non_paged_pool_limit; /* 0x00100000 */ 00937 uint32 min_workset_size; /* 0x00010000 */ 00938 uint32 max_workset_size; /* 0x0f000000 */ 00939 uint32 page_file_limit; /* 0 */ 00940 uint64 time_limit; /* 0 */ 00941 uint32 system_flags; /* 1 */ 00942 BUFHDR2 hdr_sec_desc; 00943 00944 uint32 buf_size2; 00945 00946 uint32 attribute_count; 00947 uint32 *attributes; 00948 00949 uint32 privlist_count; 00950 UNIHDR *hdr_privslist; 00951 UNISTR2 *uni_privslist; 00952 00953 RPC_DATA_BLOB buf_sec_desc; 00954 } SAM_DELTA_PRIVS; 00955 00956 /* SAM_DELTA_SECRET */ 00957 typedef struct { 00958 uint32 buf_size; 00959 SEC_DESC *sec_desc; 00960 UNISTR2 secret; 00961 00962 uint32 count1; 00963 uint32 count2; 00964 uint32 ptr; 00965 NTTIME time1; 00966 uint32 count3; 00967 uint32 count4; 00968 uint32 ptr2; 00969 NTTIME time2; 00970 uint32 unknow1; 00971 00972 uint32 buf_size2; 00973 uint32 ptr3; 00974 uint32 unknow2; /* 0x0 12 times */ 00975 00976 uint32 chal_len; 00977 uint32 reserved1; /* 0 */ 00978 uint32 chal_len2; 00979 uint8 chal[16]; 00980 00981 uint32 key_len; 00982 uint32 reserved2; /* 0 */ 00983 uint32 key_len2; 00984 uint8 key[8]; 00985 00986 uint32 buf_size3; 00987 SEC_DESC *sec_desc2; 00988 } SAM_DELTA_SECRET; 00989 00990 /* SAM_DELTA_MOD_COUNT (0x16) */ 00991 typedef struct { 00992 uint32 seqnum; 00993 uint32 dom_mod_count_ptr; 00994 uint64 dom_mod_count; /* domain mod count at last sync */ 00995 } SAM_DELTA_MOD_COUNT; 00996 00997 typedef union sam_delta_ctr_info { 00998 SAM_DOMAIN_INFO domain_info ; 00999 SAM_GROUP_INFO group_info ; 01000 SAM_ACCOUNT_INFO account_info; 01001 SAM_GROUP_MEM_INFO grp_mem_info; 01002 SAM_ALIAS_INFO alias_info ; 01003 SAM_ALIAS_MEM_INFO als_mem_info; 01004 SAM_DELTA_POLICY policy_info; 01005 SAM_DELTA_PRIVS privs_info; 01006 SAM_DELTA_MOD_COUNT mod_count; 01007 SAM_DELTA_TRUSTDOMS trustdoms_info; 01008 SAM_DELTA_SECRET secret_info; 01009 } SAM_DELTA_CTR; 01010 01011 /* NET_R_SAM_SYNC */ 01012 typedef struct net_r_sam_sync_info { 01013 DOM_CRED srv_creds; 01014 01015 uint32 sync_context; 01016 01017 uint32 ptr_deltas; 01018 uint32 num_deltas; 01019 uint32 ptr_deltas2; 01020 uint32 num_deltas2; 01021 01022 SAM_DELTA_HDR *hdr_deltas; 01023 SAM_DELTA_CTR *deltas; 01024 01025 NTSTATUS status; 01026 } NET_R_SAM_SYNC; 01027 01028 /* NET_Q_SAM_DELTAS */ 01029 typedef struct net_q_sam_deltas_info { 01030 UNISTR2 uni_srv_name; 01031 UNISTR2 uni_cli_name; 01032 DOM_CRED cli_creds; 01033 DOM_CRED ret_creds; 01034 01035 uint32 database_id; 01036 uint64 dom_mod_count; /* domain mod count at last sync */ 01037 01038 uint32 max_size; /* preferred maximum length */ 01039 } NET_Q_SAM_DELTAS; 01040 01041 /* NET_R_SAM_DELTAS */ 01042 typedef struct net_r_sam_deltas_info { 01043 DOM_CRED srv_creds; 01044 01045 uint64 dom_mod_count; /* new domain mod count */ 01046 01047 uint32 ptr_deltas; 01048 uint32 num_deltas; 01049 uint32 num_deltas2; 01050 01051 SAM_DELTA_HDR *hdr_deltas; 01052 SAM_DELTA_CTR *deltas; 01053 01054 NTSTATUS status; 01055 } NET_R_SAM_DELTAS; 01056 01057 #define DS_FORCE_REDISCOVERY 0x00000001 01058 #define DS_DIRECTORY_SERVICE_REQUIRED 0x00000010 01059 #define DS_DIRECTORY_SERVICE_PREFERRED 0x00000020 01060 #define DS_GC_SERVER_REQUIRED 0x00000040 01061 #define DS_PDC_REQUIRED 0x00000080 01062 #define DS_BACKGROUND_ONLY 0x00000100 01063 #define DS_IP_REQUIRED 0x00000200 01064 #define DS_KDC_REQUIRED 0x00000400 01065 #define DS_TIMESERV_REQUIRED 0x00000800 01066 #define DS_WRITABLE_REQUIRED 0x00001000 01067 #define DS_GOOD_TIMESERV_PREFERRED 0x00002000 01068 #define DS_AVOID_SELF 0x00004000 01069 #define DS_ONLY_LDAP_NEEDED 0x00008000 01070 01071 #define DS_IS_FLAT_NAME 0x00010000 01072 #define DS_IS_DNS_NAME 0x00020000 01073 01074 #define DS_RETURN_DNS_NAME 0x40000000 01075 #define DS_RETURN_FLAT_NAME 0x80000000 01076 01077 #if 0 /* unknown yet */ 01078 #define DS_IP_VERSION_AGNOSTIC 01079 #define DS_TRY_NEXTCLOSEST_SITE 01080 #endif 01081 01082 #define DSGETDC_VALID_FLAGS ( \ 01083 DS_FORCE_REDISCOVERY | \ 01084 DS_DIRECTORY_SERVICE_REQUIRED | \ 01085 DS_DIRECTORY_SERVICE_PREFERRED | \ 01086 DS_GC_SERVER_REQUIRED | \ 01087 DS_PDC_REQUIRED | \ 01088 DS_BACKGROUND_ONLY | \ 01089 DS_IP_REQUIRED | \ 01090 DS_KDC_REQUIRED | \ 01091 DS_TIMESERV_REQUIRED | \ 01092 DS_WRITABLE_REQUIRED | \ 01093 DS_GOOD_TIMESERV_PREFERRED | \ 01094 DS_AVOID_SELF | \ 01095 DS_ONLY_LDAP_NEEDED | \ 01096 DS_IS_FLAT_NAME | \ 01097 DS_IS_DNS_NAME | \ 01098 DS_RETURN_FLAT_NAME | \ 01099 DS_RETURN_DNS_NAME ) 01100 01101 struct DS_DOMAIN_CONTROLLER_INFO { 01102 const char *domain_controller_name; 01103 const char *domain_controller_address; 01104 int32 domain_controller_address_type; 01105 struct GUID *domain_guid; 01106 const char *domain_name; 01107 const char *dns_forest_name; 01108 uint32 flags; 01109 const char *dc_site_name; 01110 const char *client_site_name; 01111 }; 01112 01113 /* NET_Q_DSR_GETDCNAME */ 01114 typedef struct net_q_dsr_getdcname { 01115 uint32 ptr_server_unc; 01116 UNISTR2 uni_server_unc; 01117 uint32 ptr_domain_name; 01118 UNISTR2 uni_domain_name; 01119 uint32 ptr_domain_guid; 01120 struct GUID *domain_guid; 01121 uint32 ptr_site_guid; 01122 struct GUID *site_guid; 01123 uint32 flags; 01124 } NET_Q_DSR_GETDCNAME; 01125 01126 /* NET_R_DSR_GETDCNAME */ 01127 typedef struct net_r_dsr_getdcname { 01128 uint32 ptr_dc_unc; 01129 UNISTR2 uni_dc_unc; 01130 uint32 ptr_dc_address; 01131 UNISTR2 uni_dc_address; 01132 int32 dc_address_type; 01133 struct GUID domain_guid; 01134 uint32 ptr_domain_name; 01135 UNISTR2 uni_domain_name; 01136 uint32 ptr_forest_name; 01137 UNISTR2 uni_forest_name; 01138 uint32 dc_flags; 01139 uint32 ptr_dc_site_name; 01140 UNISTR2 uni_dc_site_name; 01141 uint32 ptr_client_site_name; 01142 UNISTR2 uni_client_site_name; 01143 WERROR result; 01144 } NET_R_DSR_GETDCNAME; 01145 01146 /* NET_Q_DSR_GETDCNAMEEX */ 01147 typedef struct net_q_dsr_getdcnameex { 01148 uint32 ptr_server_unc; 01149 UNISTR2 uni_server_unc; 01150 uint32 ptr_domain_name; 01151 UNISTR2 uni_domain_name; 01152 uint32 ptr_domain_guid; 01153 struct GUID *domain_guid; 01154 uint32 ptr_site_name; 01155 UNISTR2 uni_site_name; 01156 uint32 flags; 01157 } NET_Q_DSR_GETDCNAMEEX; 01158 01159 /* NET_R_DSR_GETDCNAMEEX */ 01160 typedef struct NET_R_DSR_GETDCNAME NET_R_DSR_GETDCNAMEEX; 01161 01162 /* NET_Q_DSR_GETDCNAMEEX2 */ 01163 typedef struct net_q_dsr_getdcnameex2 { 01164 uint32 ptr_server_unc; 01165 UNISTR2 uni_server_unc; 01166 uint32 ptr_client_account; 01167 UNISTR2 uni_client_account; 01168 uint32 mask; 01169 uint32 ptr_domain_name; 01170 UNISTR2 uni_domain_name; 01171 uint32 ptr_domain_guid; 01172 struct GUID *domain_guid; 01173 uint32 ptr_site_name; 01174 UNISTR2 uni_site_name; 01175 uint32 flags; 01176 } NET_Q_DSR_GETDCNAMEEX2; 01177 01178 /* NET_R_DSR_GETDCNAMEEX */ 01179 typedef struct NET_R_DSR_GETDCNAME NET_R_DSR_GETDCNAMEEX2; 01180 01181 /* NET_Q_DSR_GESITENAME */ 01182 typedef struct net_q_dsr_getsitename { 01183 uint32 ptr_computer_name; 01184 UNISTR2 uni_computer_name; 01185 } NET_Q_DSR_GETSITENAME; 01186 01187 /* NET_R_DSR_GETSITENAME */ 01188 typedef struct net_r_dsr_getsitename { 01189 uint32 ptr_site_name; 01190 UNISTR2 uni_site_name; 01191 WERROR result; 01192 } NET_R_DSR_GETSITENAME; 01193 01194 01195 #endif /* _RPC_NETLOGON_H */