関数 | |
static BOOL | net_io_neg_flags (const char *desc, NEG_FLAGS *neg, prs_struct *ps, int depth) |
static void | init_netinfo_3 (NETLOGON_INFO_3 *info, uint32 flags, uint32 logon_attempts) |
static BOOL | net_io_netinfo_3 (const char *desc, NETLOGON_INFO_3 *info, prs_struct *ps, int depth) |
static void | init_netinfo_1 (NETLOGON_INFO_1 *info, uint32 flags, uint32 pdc_status) |
static BOOL | net_io_netinfo_1 (const char *desc, NETLOGON_INFO_1 *info, prs_struct *ps, int depth) |
static void | init_netinfo_2 (NETLOGON_INFO_2 *info, uint32 flags, uint32 pdc_status, uint32 tc_status, const char *trusted_dc_name) |
static BOOL | net_io_netinfo_2 (const char *desc, NETLOGON_INFO_2 *info, prs_struct *ps, int depth) |
static BOOL | net_io_ctrl_data_info_5 (const char *desc, CTRL_DATA_INFO_5 *info, prs_struct *ps, int depth) |
static BOOL | net_io_ctrl_data_info_6 (const char *desc, CTRL_DATA_INFO_6 *info, prs_struct *ps, int depth) |
BOOL | net_io_q_logon_ctrl2 (const char *desc, NET_Q_LOGON_CTRL2 *q_l, prs_struct *ps, int depth) |
void | init_net_q_logon_ctrl2 (NET_Q_LOGON_CTRL2 *q_l, const char *srv_name, uint32 query_level) |
void | init_net_r_logon_ctrl2 (NET_R_LOGON_CTRL2 *r_l, uint32 query_level, uint32 flags, uint32 pdc_status, uint32 logon_attempts, uint32 tc_status, const char *trusted_domain_name) |
BOOL | net_io_r_logon_ctrl2 (const char *desc, NET_R_LOGON_CTRL2 *r_l, prs_struct *ps, int depth) |
BOOL | net_io_q_logon_ctrl (const char *desc, NET_Q_LOGON_CTRL *q_l, prs_struct *ps, int depth) |
void | init_net_q_logon_ctrl (NET_Q_LOGON_CTRL *q_l, const char *srv_name, uint32 query_level) |
void | init_net_r_logon_ctrl (NET_R_LOGON_CTRL *r_l, uint32 query_level, uint32 flags, uint32 pdc_status) |
BOOL | net_io_r_logon_ctrl (const char *desc, NET_R_LOGON_CTRL *r_l, prs_struct *ps, int depth) |
void | init_net_q_getanydcname (NET_Q_GETANYDCNAME *r_t, const char *logon_server, const char *domainname) |
BOOL | net_io_q_getanydcname (const char *desc, NET_Q_GETANYDCNAME *r_t, prs_struct *ps, int depth) |
void | init_net_r_getanydcname (NET_R_GETANYDCNAME *r_t, const char *dcname) |
BOOL | net_io_r_getanydcname (const char *desc, NET_R_GETANYDCNAME *r_t, prs_struct *ps, int depth) |
void | init_r_trust_dom (NET_R_TRUST_DOM_LIST *r_t, uint32 num_doms, const char *dom_name) |
BOOL | net_io_r_trust_dom (const char *desc, NET_R_TRUST_DOM_LIST *r_t, prs_struct *ps, int depth) |
BOOL | net_io_q_trust_dom (const char *desc, NET_Q_TRUST_DOM_LIST *q_l, prs_struct *ps, int depth) |
void | init_q_req_chal (NET_Q_REQ_CHAL *q_c, const char *logon_srv, const char *logon_clnt, const DOM_CHAL *clnt_chal) |
BOOL | net_io_q_req_chal (const char *desc, NET_Q_REQ_CHAL *q_c, prs_struct *ps, int depth) |
BOOL | net_io_r_req_chal (const char *desc, NET_R_REQ_CHAL *r_c, prs_struct *ps, int depth) |
BOOL | net_io_q_auth (const char *desc, NET_Q_AUTH *q_a, prs_struct *ps, int depth) |
BOOL | net_io_r_auth (const char *desc, NET_R_AUTH *r_a, prs_struct *ps, int depth) |
void | init_q_auth_2 (NET_Q_AUTH_2 *q_a, const char *logon_srv, const char *acct_name, uint16 sec_chan, const char *comp_name, const DOM_CHAL *clnt_chal, uint32 clnt_flgs) |
BOOL | net_io_q_auth_2 (const char *desc, NET_Q_AUTH_2 *q_a, prs_struct *ps, int depth) |
BOOL | net_io_r_auth_2 (const char *desc, NET_R_AUTH_2 *r_a, prs_struct *ps, int depth) |
void | init_q_auth_3 (NET_Q_AUTH_3 *q_a, const char *logon_srv, const char *acct_name, uint16 sec_chan, const char *comp_name, const DOM_CHAL *clnt_chal, uint32 clnt_flgs) |
BOOL | net_io_q_auth_3 (const char *desc, NET_Q_AUTH_3 *q_a, prs_struct *ps, int depth) |
BOOL | net_io_r_auth_3 (const char *desc, NET_R_AUTH_3 *r_a, prs_struct *ps, int depth) |
void | init_q_srv_pwset (NET_Q_SRV_PWSET *q_s, const char *logon_srv, const char *sess_key, const char *acct_name, uint16 sec_chan, const char *comp_name, DOM_CRED *cred, const uchar hashed_mach_pwd[16]) |
BOOL | net_io_q_srv_pwset (const char *desc, NET_Q_SRV_PWSET *q_s, prs_struct *ps, int depth) |
BOOL | net_io_r_srv_pwset (const char *desc, NET_R_SRV_PWSET *r_s, prs_struct *ps, int depth) |
void | init_q_srv_pwset2 (NET_Q_SRV_PWSET2 *q_s, const char *logon_srv, const char *sess_key, const char *acct_name, uint16 sec_chan, const char *comp_name, DOM_CRED *cred, const char *clear_text_mach_pwd) |
BOOL | net_io_q_srv_pwset2 (const char *desc, NET_Q_SRV_PWSET2 *q_s, prs_struct *ps, int depth) |
BOOL | net_io_r_srv_pwset2 (const char *desc, NET_R_SRV_PWSET2 *r_s, prs_struct *ps, int depth) |
static int | init_dom_sid2s (TALLOC_CTX *ctx, const char *sids_str, DOM_SID2 **ppsids) |
void | init_id_info1 (NET_ID_INFO_1 *id, const char *domain_name, uint32 param_ctrl, uint32 log_id_low, uint32 log_id_high, const char *user_name, const char *wksta_name, const char *sess_key, unsigned char lm_cypher[16], unsigned char nt_cypher[16]) |
static BOOL | net_io_id_info1 (const char *desc, NET_ID_INFO_1 *id, prs_struct *ps, int depth) |
void | init_id_info2 (NET_ID_INFO_2 *id, const char *domain_name, uint32 param_ctrl, uint32 log_id_low, uint32 log_id_high, const char *user_name, const char *wksta_name, const uchar lm_challenge[8], const uchar *lm_chal_resp, size_t lm_chal_resp_len, const uchar *nt_chal_resp, size_t nt_chal_resp_len) |
static BOOL | net_io_id_info2 (const char *desc, NET_ID_INFO_2 *id, prs_struct *ps, int depth) |
void | init_sam_info (DOM_SAM_INFO *sam, const char *logon_srv, const char *comp_name, DOM_CRED *clnt_cred, DOM_CRED *rtn_cred, uint16 logon_level, NET_ID_INFO_CTR *ctr) |
static BOOL | net_io_id_info_ctr (const char *desc, NET_ID_INFO_CTR **pp_ctr, prs_struct *ps, int depth) |
static BOOL | smb_io_sam_info (const char *desc, DOM_SAM_INFO *sam, prs_struct *ps, int depth) |
static BOOL | smb_io_sam_info_ex (const char *desc, DOM_SAM_INFO_EX *sam, prs_struct *ps, int depth) |
void | init_net_user_info3 (TALLOC_CTX *ctx, NET_USER_INFO_3 *usr, uint32 user_rid, uint32 group_rid, const char *user_name, const char *full_name, const char *home_dir, const char *dir_drive, const char *logon_script, const char *profile_path, time_t unix_logon_time, time_t unix_logoff_time, time_t unix_kickoff_time, time_t unix_pass_last_set_time, time_t unix_pass_can_change_time, time_t unix_pass_must_change_time, uint16 logon_count, uint16 bad_pw_count, uint32 num_groups, const DOM_GID *gids, uint32 user_flgs, uint32 acct_flags, uchar user_session_key[16], uchar lm_session_key[8], const char *logon_srv, const char *logon_dom, const DOM_SID *dom_sid) |
static void | dump_acct_flags (uint32 acct_flags) |
static void | dump_user_flgs (uint32 user_flags) |
BOOL | net_io_user_info3 (const char *desc, NET_USER_INFO_3 *usr, prs_struct *ps, int depth, uint16 validation_level, BOOL kerb_validation_level) |
BOOL | net_io_q_sam_logon (const char *desc, NET_Q_SAM_LOGON *q_l, prs_struct *ps, int depth) |
BOOL | net_io_r_sam_logon (const char *desc, NET_R_SAM_LOGON *r_l, prs_struct *ps, int depth) |
BOOL | net_io_q_sam_logon_ex (const char *desc, NET_Q_SAM_LOGON_EX *q_l, prs_struct *ps, int depth) |
BOOL | net_io_r_sam_logon_ex (const char *desc, NET_R_SAM_LOGON_EX *r_l, prs_struct *ps, int depth) |
BOOL | net_io_q_sam_logoff (const char *desc, NET_Q_SAM_LOGOFF *q_l, prs_struct *ps, int depth) |
BOOL | net_io_r_sam_logoff (const char *desc, NET_R_SAM_LOGOFF *r_l, prs_struct *ps, int depth) |
BOOL | init_net_q_sam_sync (NET_Q_SAM_SYNC *q_s, const char *srv_name, const char *cli_name, DOM_CRED *cli_creds, DOM_CRED *ret_creds, uint32 database_id, uint32 next_rid) |
BOOL | net_io_q_sam_sync (const char *desc, NET_Q_SAM_SYNC *q_s, prs_struct *ps, int depth) |
static BOOL | net_io_sam_delta_hdr (const char *desc, SAM_DELTA_HDR *delta, prs_struct *ps, int depth) |
static BOOL | net_io_sam_delta_mod_count (const char *desc, SAM_DELTA_MOD_COUNT *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_domain_info (const char *desc, SAM_DOMAIN_INFO *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_group_info (const char *desc, SAM_GROUP_INFO *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_passwd_info (const char *desc, SAM_PWD *pwd, prs_struct *ps, int depth) |
static BOOL | net_io_sam_account_info (const char *desc, SAM_ACCOUNT_INFO *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_group_mem_info (const char *desc, SAM_GROUP_MEM_INFO *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_alias_info (const char *desc, SAM_ALIAS_INFO *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_alias_mem_info (const char *desc, SAM_ALIAS_MEM_INFO *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_policy_info (const char *desc, SAM_DELTA_POLICY *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_trustdoms_info (const char *desc, SAM_DELTA_TRUSTDOMS *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_secret_info (const char *desc, SAM_DELTA_SECRET *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_privs_info (const char *desc, SAM_DELTA_PRIVS *info, prs_struct *ps, int depth) |
static BOOL | net_io_sam_delta_ctr (const char *desc, SAM_DELTA_CTR *delta, uint16 type, prs_struct *ps, int depth) |
BOOL | net_io_r_sam_sync (const char *desc, NET_R_SAM_SYNC *r_s, prs_struct *ps, int depth) |
BOOL | init_net_q_sam_deltas (NET_Q_SAM_DELTAS *q_s, const char *srv_name, const char *cli_name, DOM_CRED *cli_creds, uint32 database_id, uint64 dom_mod_count) |
BOOL | net_io_q_sam_deltas (const char *desc, NET_Q_SAM_DELTAS *q_s, prs_struct *ps, int depth) |
BOOL | net_io_r_sam_deltas (const char *desc, NET_R_SAM_DELTAS *r_s, prs_struct *ps, int depth) |
void | init_net_q_dsr_getdcname (NET_Q_DSR_GETDCNAME *r_t, const char *server_unc, const char *domain_name, struct GUID *domain_guid, struct GUID *site_guid, uint32_t flags) |
void | init_net_q_dsr_getdcnameex (NET_Q_DSR_GETDCNAMEEX *r_t, const char *server_unc, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags) |
void | init_net_q_dsr_getdcnameex2 (NET_Q_DSR_GETDCNAMEEX2 *r_t, const char *server_unc, const char *domain_name, const char *client_account, uint32 mask, struct GUID *domain_guid, const char *site_name, uint32_t flags) |
BOOL | net_io_q_dsr_getdcname (const char *desc, NET_Q_DSR_GETDCNAME *r_t, prs_struct *ps, int depth) |
BOOL | net_io_q_dsr_getdcnameex (const char *desc, NET_Q_DSR_GETDCNAMEEX *r_t, prs_struct *ps, int depth) |
BOOL | net_io_q_dsr_getdcnameex2 (const char *desc, NET_Q_DSR_GETDCNAMEEX2 *r_t, prs_struct *ps, int depth) |
void | init_net_r_dsr_getdcname (NET_R_DSR_GETDCNAME *r_t, const char *dc_unc, const char *dc_address, int32 dc_address_type, struct GUID domain_guid, const char *domain_name, const char *forest_name, uint32 dc_flags, const char *dc_site_name, const char *client_site_name) |
BOOL | net_io_r_dsr_getdcname (const char *desc, NET_R_DSR_GETDCNAME *r_t, prs_struct *ps, int depth) |
void | init_net_q_dsr_getsitename (NET_Q_DSR_GETSITENAME *r_t, const char *computer_name) |
BOOL | net_io_q_dsr_getsitename (const char *desc, NET_Q_DSR_GETSITENAME *r_t, prs_struct *ps, int depth) |
BOOL | net_io_r_dsr_getsitename (const char *desc, NET_R_DSR_GETSITENAME *r_t, prs_struct *ps, int depth) |
static BOOL net_io_neg_flags | ( | const char * | desc, | |
NEG_FLAGS * | neg, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 33 行で定義されています。
参照先 neg_flags_info::neg_flags・prs_debug().
参照元 net_io_q_auth_2()・net_io_q_auth_3()・net_io_r_auth_2()・net_io_r_auth_3().
00034 { 00035 if (neg == NULL) 00036 return False; 00037 00038 prs_debug(ps, depth, desc, "net_io_neg_flags"); 00039 depth++; 00040 00041 if(!prs_align(ps)) 00042 return False; 00043 00044 if(!prs_uint32("neg_flags", ps, depth, &neg->neg_flags)) 00045 return False; 00046 00047 return True; 00048 }
static void init_netinfo_3 | ( | NETLOGON_INFO_3 * | info, | |
uint32 | flags, | |||
uint32 | logon_attempts | |||
) | [static] |
parse_net.c の 54 行で定義されています。
参照先 netlogon_3_info::flags・netlogon_3_info::logon_attempts・netlogon_3_info::reserved_1・netlogon_3_info::reserved_2・netlogon_3_info::reserved_3・netlogon_3_info::reserved_4・netlogon_3_info::reserved_5.
00055 { 00056 info->flags = flags; 00057 info->logon_attempts = logon_attempts; 00058 info->reserved_1 = 0x0; 00059 info->reserved_2 = 0x0; 00060 info->reserved_3 = 0x0; 00061 info->reserved_4 = 0x0; 00062 info->reserved_5 = 0x0; 00063 }
static BOOL net_io_netinfo_3 | ( | const char * | desc, | |
NETLOGON_INFO_3 * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 69 行で定義されています。
参照先 netlogon_3_info::flags・netlogon_3_info::logon_attempts・prs_debug()・netlogon_3_info::reserved_1・netlogon_3_info::reserved_2・netlogon_3_info::reserved_3・netlogon_3_info::reserved_4・netlogon_3_info::reserved_5.
00070 { 00071 if (info == NULL) 00072 return False; 00073 00074 prs_debug(ps, depth, desc, "net_io_netinfo_3"); 00075 depth++; 00076 00077 if(!prs_align(ps)) 00078 return False; 00079 00080 if(!prs_uint32("flags ", ps, depth, &info->flags)) 00081 return False; 00082 if(!prs_uint32("logon_attempts", ps, depth, &info->logon_attempts)) 00083 return False; 00084 if(!prs_uint32("reserved_1 ", ps, depth, &info->reserved_1)) 00085 return False; 00086 if(!prs_uint32("reserved_2 ", ps, depth, &info->reserved_2)) 00087 return False; 00088 if(!prs_uint32("reserved_3 ", ps, depth, &info->reserved_3)) 00089 return False; 00090 if(!prs_uint32("reserved_4 ", ps, depth, &info->reserved_4)) 00091 return False; 00092 if(!prs_uint32("reserved_5 ", ps, depth, &info->reserved_5)) 00093 return False; 00094 00095 return True; 00096 }
static void init_netinfo_1 | ( | NETLOGON_INFO_1 * | info, | |
uint32 | flags, | |||
uint32 | pdc_status | |||
) | [static] |
parse_net.c の 103 行で定義されています。
参照先 netlogon_1_info::flags・netlogon_1_info::pdc_status.
参照元 init_net_r_logon_ctrl()・init_net_r_logon_ctrl2().
00104 { 00105 info->flags = flags; 00106 info->pdc_status = pdc_status; 00107 }
static BOOL net_io_netinfo_1 | ( | const char * | desc, | |
NETLOGON_INFO_1 * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 113 行で定義されています。
参照先 netlogon_1_info::flags・netlogon_1_info::pdc_status・prs_debug().
参照元 net_io_r_logon_ctrl()・net_io_r_logon_ctrl2().
00114 { 00115 if (info == NULL) 00116 return False; 00117 00118 prs_debug(ps, depth, desc, "net_io_netinfo_1"); 00119 depth++; 00120 00121 if(!prs_align(ps)) 00122 return False; 00123 00124 if(!prs_uint32("flags ", ps, depth, &info->flags)) 00125 return False; 00126 if(!prs_uint32("pdc_status", ps, depth, &info->pdc_status)) 00127 return False; 00128 00129 return True; 00130 }
static void init_netinfo_2 | ( | NETLOGON_INFO_2 * | info, | |
uint32 | flags, | |||
uint32 | pdc_status, | |||
uint32 | tc_status, | |||
const char * | trusted_dc_name | |||
) | [static] |
parse_net.c の 136 行で定義されています。
参照先 netlogon_2_info::flags・init_unistr2()・netlogon_2_info::pdc_status・netlogon_2_info::ptr_trusted_dc_name・netlogon_2_info::tc_status・UNI_STR_TERMINATE・netlogon_2_info::uni_trusted_dc_name.
00138 { 00139 info->flags = flags; 00140 info->pdc_status = pdc_status; 00141 info->ptr_trusted_dc_name = 1; 00142 info->tc_status = tc_status; 00143 00144 if (trusted_dc_name != NULL) 00145 init_unistr2(&info->uni_trusted_dc_name, trusted_dc_name, UNI_STR_TERMINATE); 00146 else 00147 init_unistr2(&info->uni_trusted_dc_name, "", UNI_STR_TERMINATE); 00148 }
static BOOL net_io_netinfo_2 | ( | const char * | desc, | |
NETLOGON_INFO_2 * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 154 行で定義されています。
参照先 netlogon_2_info::flags・netlogon_2_info::pdc_status・prs_debug()・netlogon_2_info::ptr_trusted_dc_name・smb_io_unistr2()・netlogon_2_info::tc_status・netlogon_2_info::uni_trusted_dc_name.
00155 { 00156 if (info == NULL) 00157 return False; 00158 00159 prs_debug(ps, depth, desc, "net_io_netinfo_2"); 00160 depth++; 00161 00162 if(!prs_align(ps)) 00163 return False; 00164 00165 if(!prs_uint32("flags ", ps, depth, &info->flags)) 00166 return False; 00167 if(!prs_uint32("pdc_status ", ps, depth, &info->pdc_status)) 00168 return False; 00169 if(!prs_uint32("ptr_trusted_dc_name", ps, depth, &info->ptr_trusted_dc_name)) 00170 return False; 00171 if(!prs_uint32("tc_status ", ps, depth, &info->tc_status)) 00172 return False; 00173 00174 if (info->ptr_trusted_dc_name != 0) { 00175 if(!smb_io_unistr2("unistr2", &info->uni_trusted_dc_name, info->ptr_trusted_dc_name, ps, depth)) 00176 return False; 00177 } 00178 00179 if(!prs_align(ps)) 00180 return False; 00181 00182 return True; 00183 }
static BOOL net_io_ctrl_data_info_5 | ( | const char * | desc, | |
CTRL_DATA_INFO_5 * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 185 行で定義されています。
参照先 ctrl_data_info_5::domain・ctrl_data_info_5::function_code・prs_debug()・ctrl_data_info_5::ptr_domain・smb_io_unistr2().
00186 { 00187 if (info == NULL) 00188 return False; 00189 00190 prs_debug(ps, depth, desc, "net_io_ctrl_data_info_5"); 00191 depth++; 00192 00193 if ( !prs_uint32( "function_code", ps, depth, &info->function_code ) ) 00194 return False; 00195 00196 if(!prs_uint32("ptr_domain", ps, depth, &info->ptr_domain)) 00197 return False; 00198 00199 if ( info->ptr_domain ) { 00200 if(!smb_io_unistr2("domain", &info->domain, info->ptr_domain, ps, depth)) 00201 return False; 00202 } 00203 00204 return True; 00205 }
static BOOL net_io_ctrl_data_info_6 | ( | const char * | desc, | |
CTRL_DATA_INFO_6 * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 207 行で定義されています。
参照先 ctrl_data_info_6::domain・ctrl_data_info_6::function_code・prs_debug()・ctrl_data_info_6::ptr_domain・smb_io_unistr2().
00208 { 00209 if (info == NULL) 00210 return False; 00211 00212 prs_debug(ps, depth, desc, "net_io_ctrl_data_info_6"); 00213 depth++; 00214 00215 if ( !prs_uint32( "function_code", ps, depth, &info->function_code ) ) 00216 return False; 00217 00218 if(!prs_uint32("ptr_domain", ps, depth, &info->ptr_domain)) 00219 return False; 00220 00221 if ( info->ptr_domain ) { 00222 if(!smb_io_unistr2("domain", &info->domain, info->ptr_domain, ps, depth)) 00223 return False; 00224 } 00225 00226 return True; 00227 }
BOOL net_io_q_logon_ctrl2 | ( | const char * | desc, | |
NET_Q_LOGON_CTRL2 * | q_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 233 行で定義されています。
参照先 net_q_logon_ctrl2_info::function_code・net_q_logon_ctrl2_info::info・net_q_logon_ctrl2_info::info5・net_q_logon_ctrl2_info::info6・net_io_ctrl_data_info_5()・net_io_ctrl_data_info_6()・prs_debug()・net_q_logon_ctrl2_info::ptr・net_q_logon_ctrl2_info::query_level・smb_io_unistr2()・net_q_logon_ctrl2_info::uni_server_name.
参照元 api_net_logon_ctrl2()・rpccli_netlogon_logon_ctrl2().
00234 { 00235 if (q_l == NULL) 00236 return False; 00237 00238 prs_debug(ps, depth, desc, "net_io_q_logon_ctrl2"); 00239 depth++; 00240 00241 if(!prs_align(ps)) 00242 return False; 00243 00244 if(!prs_uint32("ptr ", ps, depth, &q_l->ptr)) 00245 return False; 00246 00247 if(!smb_io_unistr2 ("", &q_l->uni_server_name, q_l->ptr, ps, depth)) 00248 return False; 00249 00250 if(!prs_align(ps)) 00251 return False; 00252 00253 if(!prs_uint32("function_code", ps, depth, &q_l->function_code)) 00254 return False; 00255 if(!prs_uint32("query_level ", ps, depth, &q_l->query_level)) 00256 return False; 00257 switch ( q_l->function_code ) { 00258 case NETLOGON_CONTROL_REDISCOVER: 00259 if ( !net_io_ctrl_data_info_5( "ctrl_data_info5", &q_l->info.info5, ps, depth) ) 00260 return False; 00261 break; 00262 00263 case NETLOGON_CONTROL_TC_QUERY: 00264 if ( !net_io_ctrl_data_info_6( "ctrl_data_info6", &q_l->info.info6, ps, depth) ) 00265 return False; 00266 break; 00267 00268 default: 00269 DEBUG(0,("net_io_q_logon_ctrl2: unknown function_code [%d]\n", 00270 q_l->function_code)); 00271 return False; 00272 } 00273 00274 return True; 00275 }
void init_net_q_logon_ctrl2 | ( | NET_Q_LOGON_CTRL2 * | q_l, | |
const char * | srv_name, | |||
uint32 | query_level | |||
) |
parse_net.c の 281 行で定義されています。
参照先 net_q_logon_ctrl2_info::function_code・init_unistr2()・net_q_logon_ctrl2_info::query_level・net_q_logon_ctrl2_info::uni_server_name・UNI_STR_TERMINATE.
参照元 rpccli_netlogon_logon_ctrl2().
00283 { 00284 DEBUG(5,("init_q_logon_ctrl2\n")); 00285 00286 q_l->function_code = 0x01; 00287 q_l->query_level = query_level; 00288 00289 init_unistr2(&q_l->uni_server_name, srv_name, UNI_STR_TERMINATE); 00290 }
void init_net_r_logon_ctrl2 | ( | NET_R_LOGON_CTRL2 * | r_l, | |
uint32 | query_level, | |||
uint32 | flags, | |||
uint32 | pdc_status, | |||
uint32 | logon_attempts, | |||
uint32 | tc_status, | |||
const char * | trusted_domain_name | |||
) |
parse_net.c の 296 行で定義されています。
参照先 net_r_logon_ctrl2_info::info1・net_r_logon_ctrl2_info::info2・net_r_logon_ctrl2_info::info3・init_netinfo_1()・init_netinfo_2()・init_netinfo_3()・net_r_logon_ctrl2_info::logon・net_r_logon_ctrl2_info::ptr・net_r_logon_ctrl2_info::status・net_r_logon_ctrl2_info::switch_value.
参照元 _net_logon_ctrl2().
00300 { 00301 r_l->switch_value = query_level; 00302 00303 switch (query_level) { 00304 case 1: 00305 r_l->ptr = 1; /* undocumented pointer */ 00306 init_netinfo_1(&r_l->logon.info1, flags, pdc_status); 00307 r_l->status = NT_STATUS_OK; 00308 break; 00309 case 2: 00310 r_l->ptr = 1; /* undocumented pointer */ 00311 init_netinfo_2(&r_l->logon.info2, flags, pdc_status, 00312 tc_status, trusted_domain_name); 00313 r_l->status = NT_STATUS_OK; 00314 break; 00315 case 3: 00316 r_l->ptr = 1; /* undocumented pointer */ 00317 init_netinfo_3(&r_l->logon.info3, flags, logon_attempts); 00318 r_l->status = NT_STATUS_OK; 00319 break; 00320 default: 00321 DEBUG(2,("init_r_logon_ctrl2: unsupported switch value %d\n", 00322 r_l->switch_value)); 00323 r_l->ptr = 0; /* undocumented pointer */ 00324 00325 /* take a guess at an error code... */ 00326 r_l->status = NT_STATUS_INVALID_INFO_CLASS; 00327 break; 00328 } 00329 }
BOOL net_io_r_logon_ctrl2 | ( | const char * | desc, | |
NET_R_LOGON_CTRL2 * | r_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 335 行で定義されています。
参照先 net_r_logon_ctrl2_info::info1・net_r_logon_ctrl2_info::info2・net_r_logon_ctrl2_info::info3・net_r_logon_ctrl2_info::logon・net_io_netinfo_1()・net_io_netinfo_2()・net_io_netinfo_3()・prs_debug()・net_r_logon_ctrl2_info::ptr・net_r_logon_ctrl2_info::status・net_r_logon_ctrl2_info::switch_value.
参照元 api_net_logon_ctrl2()・rpccli_netlogon_logon_ctrl2().
00336 { 00337 if (r_l == NULL) 00338 return False; 00339 00340 prs_debug(ps, depth, desc, "net_io_r_logon_ctrl2"); 00341 depth++; 00342 00343 if(!prs_uint32("switch_value ", ps, depth, &r_l->switch_value)) 00344 return False; 00345 if(!prs_uint32("ptr ", ps, depth, &r_l->ptr)) 00346 return False; 00347 00348 if (r_l->ptr != 0) { 00349 switch (r_l->switch_value) { 00350 case 1: 00351 if(!net_io_netinfo_1("", &r_l->logon.info1, ps, depth)) 00352 return False; 00353 break; 00354 case 2: 00355 if(!net_io_netinfo_2("", &r_l->logon.info2, ps, depth)) 00356 return False; 00357 break; 00358 case 3: 00359 if(!net_io_netinfo_3("", &r_l->logon.info3, ps, depth)) 00360 return False; 00361 break; 00362 default: 00363 DEBUG(2,("net_io_r_logon_ctrl2: unsupported switch value %d\n", 00364 r_l->switch_value)); 00365 break; 00366 } 00367 } 00368 00369 if(!prs_ntstatus("status ", ps, depth, &r_l->status)) 00370 return False; 00371 00372 return True; 00373 }
BOOL net_io_q_logon_ctrl | ( | const char * | desc, | |
NET_Q_LOGON_CTRL * | q_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 379 行で定義されています。
参照先 net_q_logon_ctrl_info::function_code・prs_debug()・net_q_logon_ctrl_info::ptr・net_q_logon_ctrl_info::query_level・smb_io_unistr2()・net_q_logon_ctrl_info::uni_server_name.
参照元 api_net_logon_ctrl().
00381 { 00382 prs_debug(ps, depth, desc, "net_io_q_logon_ctrl"); 00383 depth++; 00384 00385 if(!prs_align(ps)) 00386 return False; 00387 00388 if(!prs_uint32("ptr ", ps, depth, &q_l->ptr)) 00389 return False; 00390 00391 if(!smb_io_unistr2 ("", &q_l->uni_server_name, q_l->ptr, ps, depth)) 00392 return False; 00393 00394 if(!prs_align(ps)) 00395 return False; 00396 00397 if(!prs_uint32("function_code", ps, depth, &q_l->function_code)) 00398 return False; 00399 if(!prs_uint32("query_level ", ps, depth, &q_l->query_level)) 00400 return False; 00401 00402 return True; 00403 }
void init_net_q_logon_ctrl | ( | NET_Q_LOGON_CTRL * | q_l, | |
const char * | srv_name, | |||
uint32 | query_level | |||
) |
parse_net.c の 409 行で定義されています。
参照先 net_q_logon_ctrl_info::function_code・init_unistr2()・net_q_logon_ctrl_info::query_level・net_q_logon_ctrl_info::uni_server_name・UNI_STR_TERMINATE.
00411 { 00412 DEBUG(5,("init_q_logon_ctrl\n")); 00413 00414 q_l->function_code = 0x01; /* ??? */ 00415 q_l->query_level = query_level; 00416 00417 init_unistr2(&q_l->uni_server_name, srv_name, UNI_STR_TERMINATE); 00418 }
void init_net_r_logon_ctrl | ( | NET_R_LOGON_CTRL * | r_l, | |
uint32 | query_level, | |||
uint32 | flags, | |||
uint32 | pdc_status | |||
) |
parse_net.c の 424 行で定義されています。
参照先 net_r_logon_ctrl_info::info1・init_netinfo_1()・net_r_logon_ctrl_info::logon・net_r_logon_ctrl_info::ptr・net_r_logon_ctrl_info::status・net_r_logon_ctrl_info::switch_value.
参照元 _net_logon_ctrl().
00426 { 00427 DEBUG(5,("init_r_logon_ctrl\n")); 00428 00429 r_l->switch_value = query_level; /* should only be 0x1 */ 00430 00431 switch (query_level) { 00432 case 1: 00433 r_l->ptr = 1; /* undocumented pointer */ 00434 init_netinfo_1(&r_l->logon.info1, flags, pdc_status); 00435 r_l->status = NT_STATUS_OK; 00436 break; 00437 default: 00438 DEBUG(2,("init_r_logon_ctrl: unsupported switch value %d\n", 00439 r_l->switch_value)); 00440 r_l->ptr = 0; /* undocumented pointer */ 00441 00442 /* take a guess at an error code... */ 00443 r_l->status = NT_STATUS_INVALID_INFO_CLASS; 00444 break; 00445 } 00446 }
BOOL net_io_r_logon_ctrl | ( | const char * | desc, | |
NET_R_LOGON_CTRL * | r_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 452 行で定義されています。
参照先 net_r_logon_ctrl_info::info1・net_r_logon_ctrl_info::logon・net_io_netinfo_1()・prs_debug()・net_r_logon_ctrl_info::ptr・net_r_logon_ctrl_info::status・net_r_logon_ctrl_info::switch_value.
参照元 api_net_logon_ctrl().
00454 { 00455 prs_debug(ps, depth, desc, "net_io_r_logon_ctrl"); 00456 depth++; 00457 00458 if(!prs_uint32("switch_value ", ps, depth, &r_l->switch_value)) 00459 return False; 00460 if(!prs_uint32("ptr ", ps, depth, &r_l->ptr)) 00461 return False; 00462 00463 if (r_l->ptr != 0) { 00464 switch (r_l->switch_value) { 00465 case 1: 00466 if(!net_io_netinfo_1("", &r_l->logon.info1, ps, depth)) 00467 return False; 00468 break; 00469 default: 00470 DEBUG(2,("net_io_r_logon_ctrl: unsupported switch value %d\n", 00471 r_l->switch_value)); 00472 break; 00473 } 00474 } 00475 00476 if(!prs_ntstatus("status ", ps, depth, &r_l->status)) 00477 return False; 00478 00479 return True; 00480 }
void init_net_q_getanydcname | ( | NET_Q_GETANYDCNAME * | r_t, | |
const char * | logon_server, | |||
const char * | domainname | |||
) |
parse_net.c の 485 行で定義されています。
参照先 init_unistr2()・net_q_getanydcname::ptr_domainname・net_q_getanydcname::ptr_logon_server・net_q_getanydcname::uni_domainname・net_q_getanydcname::uni_logon_server・UNI_STR_TERMINATE.
参照元 rpccli_netlogon_getanydcname().
00487 { 00488 DEBUG(5,("init_q_getanydcname\n")); 00489 00490 r_t->ptr_logon_server = (logon_server != NULL); 00491 init_unistr2(&r_t->uni_logon_server, logon_server, UNI_STR_TERMINATE); 00492 r_t->ptr_domainname = (domainname != NULL); 00493 init_unistr2(&r_t->uni_domainname, domainname, UNI_STR_TERMINATE); 00494 }
BOOL net_io_q_getanydcname | ( | const char * | desc, | |
NET_Q_GETANYDCNAME * | r_t, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 500 行で定義されています。
参照先 prs_debug()・net_q_getanydcname::ptr_domainname・net_q_getanydcname::ptr_logon_server・smb_io_unistr2()・net_q_getanydcname::uni_domainname・net_q_getanydcname::uni_logon_server.
参照元 rpccli_netlogon_getanydcname().
00502 { 00503 if (r_t == NULL) 00504 return False; 00505 00506 prs_debug(ps, depth, desc, "net_io_q_getanydcname"); 00507 depth++; 00508 00509 if (!prs_uint32("ptr_logon_server", ps, depth, &r_t->ptr_logon_server)) 00510 return False; 00511 00512 if (!smb_io_unistr2("logon_server", &r_t->uni_logon_server, 00513 r_t->ptr_logon_server, ps, depth)) 00514 return False; 00515 00516 if (!prs_align(ps)) 00517 return False; 00518 00519 if (!prs_uint32("ptr_domainname", ps, depth, &r_t->ptr_domainname)) 00520 return False; 00521 00522 if (!smb_io_unistr2("domainname", &r_t->uni_domainname, 00523 r_t->ptr_domainname, ps, depth)) 00524 return False; 00525 00526 return True; 00527 }
void init_net_r_getanydcname | ( | NET_R_GETANYDCNAME * | r_t, | |
const char * | dcname | |||
) |
parse_net.c の 533 行で定義されています。
参照先 init_unistr2()・net_r_getanydcname::uni_dcname・UNI_STR_TERMINATE.
00534 { 00535 DEBUG(5,("init_r_getanydcname\n")); 00536 00537 init_unistr2(&r_t->uni_dcname, dcname, UNI_STR_TERMINATE); 00538 }
BOOL net_io_r_getanydcname | ( | const char * | desc, | |
NET_R_GETANYDCNAME * | r_t, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 544 行で定義されています。
参照先 prs_debug()・net_r_getanydcname::ptr_dcname・smb_io_unistr2()・net_r_getanydcname::status・net_r_getanydcname::uni_dcname.
参照元 rpccli_netlogon_getanydcname().
00546 { 00547 if (r_t == NULL) 00548 return False; 00549 00550 prs_debug(ps, depth, desc, "net_io_r_getanydcname"); 00551 depth++; 00552 00553 if (!prs_uint32("ptr_dcname", ps, depth, &r_t->ptr_dcname)) 00554 return False; 00555 00556 if (!smb_io_unistr2("dcname", &r_t->uni_dcname, 00557 r_t->ptr_dcname, ps, depth)) 00558 return False; 00559 00560 if (!prs_align(ps)) 00561 return False; 00562 00563 if (!prs_werror("status", ps, depth, &r_t->status)) 00564 return False; 00565 00566 return True; 00567 }
void init_r_trust_dom | ( | NET_R_TRUST_DOM_LIST * | r_t, | |
uint32 | num_doms, | |||
const char * | dom_name | |||
) |
parse_net.c の 573 行で定義されています。
参照先 domain_name・init_unistr2()・UNISTR2::offset・net_r_trust_dom_info::status・strupper_m()・UNISTR2::uni_max_len・UNISTR2::uni_str_len・UNI_STR_TERMINATE・net_r_trust_dom_info::uni_trust_dom_name.
00575 { 00576 unsigned int i = 0; 00577 00578 DEBUG(5,("init_r_trust_dom\n")); 00579 00580 for (i = 0; i < MAX_TRUST_DOMS; i++) { 00581 r_t->uni_trust_dom_name[i].uni_str_len = 0; 00582 r_t->uni_trust_dom_name[i].uni_max_len = 0; 00583 } 00584 if (num_doms > MAX_TRUST_DOMS) 00585 num_doms = MAX_TRUST_DOMS; 00586 00587 for (i = 0; i < num_doms; i++) { 00588 fstring domain_name; 00589 fstrcpy(domain_name, dom_name); 00590 strupper_m(domain_name); 00591 init_unistr2(&r_t->uni_trust_dom_name[i], domain_name, UNI_STR_TERMINATE); 00592 /* the use of UNISTR2 here is non-standard. */ 00593 r_t->uni_trust_dom_name[i].offset = 0x1; 00594 } 00595 00596 r_t->status = NT_STATUS_OK; 00597 }
BOOL net_io_r_trust_dom | ( | const char * | desc, | |
NET_R_TRUST_DOM_LIST * | r_t, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 603 行で定義されています。
参照先 endif・prs_debug()・smb_io_unistr2()・net_r_trust_dom_info::status・UNISTR2::uni_str_len・net_r_trust_dom_info::uni_trust_dom_name.
00604 { 00605 uint32 value; 00606 00607 if (r_t == NULL) 00608 return False; 00609 00610 prs_debug(ps, depth, desc, "net_io_r_trust_dom"); 00611 depth++; 00612 00613 /* temporary code to give a valid response */ 00614 value=2; 00615 if(!prs_uint32("status", ps, depth, &value)) 00616 return False; 00617 00618 value=1; 00619 if(!prs_uint32("status", ps, depth, &value)) 00620 return False; 00621 value=2; 00622 if(!prs_uint32("status", ps, depth, &value)) 00623 return False; 00624 00625 value=0; 00626 if(!prs_uint32("status", ps, depth, &value)) 00627 return False; 00628 00629 value=0; 00630 if(!prs_uint32("status", ps, depth, &value)) 00631 return False; 00632 00633 /* old non working code */ 00634 #if 0 00635 int i; 00636 00637 for (i = 0; i < MAX_TRUST_DOMS; i++) { 00638 if (r_t->uni_trust_dom_name[i].uni_str_len == 0) 00639 break; 00640 if(!smb_io_unistr2("", &r_t->uni_trust_dom_name[i], True, ps, depth)) 00641 return False; 00642 } 00643 00644 if(!prs_ntstatus("status", ps, depth, &r_t->status)) 00645 return False; 00646 #endif 00647 return True; 00648 }
BOOL net_io_q_trust_dom | ( | const char * | desc, | |
NET_Q_TRUST_DOM_LIST * | q_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 655 行で定義されています。
参照先 prs_debug()・net_q_trust_dom_info::ptr・smb_io_unistr2()・net_q_trust_dom_info::uni_server_name.
00656 { 00657 if (q_l == NULL) 00658 return False; 00659 00660 prs_debug(ps, depth, desc, "net_io_q_trust_dom"); 00661 depth++; 00662 00663 if(!prs_uint32("ptr ", ps, depth, &q_l->ptr)) 00664 return False; 00665 if(!smb_io_unistr2 ("", &q_l->uni_server_name, q_l->ptr, ps, depth)) 00666 return False; 00667 00668 return True; 00669 }
void init_q_req_chal | ( | NET_Q_REQ_CHAL * | q_c, | |
const char * | logon_srv, | |||
const char * | logon_clnt, | |||
const DOM_CHAL * | clnt_chal | |||
) |
parse_net.c の 675 行で定義されています。
参照先 net_q_req_chal_info::clnt_chal・chal_info::data・init_unistr2()・net_q_req_chal_info::undoc_buffer・net_q_req_chal_info::uni_logon_clnt・net_q_req_chal_info::uni_logon_srv・UNI_STR_TERMINATE.
00678 { 00679 DEBUG(5,("init_q_req_chal: %d\n", __LINE__)); 00680 00681 q_c->undoc_buffer = 1; /* don't know what this buffer is */ 00682 00683 init_unistr2(&q_c->uni_logon_srv, logon_srv , UNI_STR_TERMINATE); 00684 init_unistr2(&q_c->uni_logon_clnt, logon_clnt, UNI_STR_TERMINATE); 00685 00686 memcpy(q_c->clnt_chal.data, clnt_chal->data, sizeof(clnt_chal->data)); 00687 00688 DEBUG(5,("init_q_req_chal: %d\n", __LINE__)); 00689 }
BOOL net_io_q_req_chal | ( | const char * | desc, | |
NET_Q_REQ_CHAL * | q_c, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 695 行で定義されています。
参照先 net_q_req_chal_info::clnt_chal・prs_debug()・smb_io_chal()・smb_io_unistr2()・net_q_req_chal_info::undoc_buffer・net_q_req_chal_info::uni_logon_clnt・net_q_req_chal_info::uni_logon_srv.
参照元 api_net_req_chal()・rpccli_net_req_chal().
00696 { 00697 if (q_c == NULL) 00698 return False; 00699 00700 prs_debug(ps, depth, desc, "net_io_q_req_chal"); 00701 depth++; 00702 00703 if(!prs_align(ps)) 00704 return False; 00705 00706 if(!prs_uint32("undoc_buffer", ps, depth, &q_c->undoc_buffer)) 00707 return False; 00708 00709 if(!smb_io_unistr2("", &q_c->uni_logon_srv, True, ps, depth)) /* logon server unicode string */ 00710 return False; 00711 if(!smb_io_unistr2("", &q_c->uni_logon_clnt, True, ps, depth)) /* logon client unicode string */ 00712 return False; 00713 00714 if(!smb_io_chal("", &q_c->clnt_chal, ps, depth)) 00715 return False; 00716 00717 return True; 00718 }
BOOL net_io_r_req_chal | ( | const char * | desc, | |
NET_R_REQ_CHAL * | r_c, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 724 行で定義されています。
参照先 prs_debug()・smb_io_chal()・net_r_req_chal_info::srv_chal・net_r_req_chal_info::status.
参照元 api_net_req_chal()・rpccli_net_req_chal().
00725 { 00726 if (r_c == NULL) 00727 return False; 00728 00729 prs_debug(ps, depth, desc, "net_io_r_req_chal"); 00730 depth++; 00731 00732 if(!prs_align(ps)) 00733 return False; 00734 00735 if(!smb_io_chal("", &r_c->srv_chal, ps, depth)) /* server challenge */ 00736 return False; 00737 00738 if(!prs_ntstatus("status", ps, depth, &r_c->status)) 00739 return False; 00740 00741 return True; 00742 }
BOOL net_io_q_auth | ( | const char * | desc, | |
NET_Q_AUTH * | q_a, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 749 行で定義されています。
参照先 net_q_auth_info::clnt_chal・net_q_auth_info::clnt_id・prs_debug()・smb_io_chal()・smb_io_log_info().
参照元 api_net_auth().
00750 { 00751 if (q_a == NULL) 00752 return False; 00753 00754 prs_debug(ps, depth, desc, "net_io_q_auth"); 00755 depth++; 00756 00757 if(!prs_align(ps)) 00758 return False; 00759 00760 if(!smb_io_log_info ("", &q_a->clnt_id, ps, depth)) /* client identification info */ 00761 return False; 00762 if(!smb_io_chal("", &q_a->clnt_chal, ps, depth)) 00763 return False; 00764 00765 return True; 00766 }
BOOL net_io_r_auth | ( | const char * | desc, | |
NET_R_AUTH * | r_a, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 772 行で定義されています。
参照先 prs_debug()・smb_io_chal()・net_r_auth_info::srv_chal・net_r_auth_info::status.
参照元 api_net_auth().
00773 { 00774 if (r_a == NULL) 00775 return False; 00776 00777 prs_debug(ps, depth, desc, "net_io_r_auth"); 00778 depth++; 00779 00780 if(!prs_align(ps)) 00781 return False; 00782 00783 if(!smb_io_chal("", &r_a->srv_chal, ps, depth)) /* server challenge */ 00784 return False; 00785 00786 if(!prs_ntstatus("status", ps, depth, &r_a->status)) 00787 return False; 00788 00789 return True; 00790 }
void init_q_auth_2 | ( | NET_Q_AUTH_2 * | q_a, | |
const char * | logon_srv, | |||
const char * | acct_name, | |||
uint16 | sec_chan, | |||
const char * | comp_name, | |||
const DOM_CHAL * | clnt_chal, | |||
uint32 | clnt_flgs | |||
) |
parse_net.c の 796 行で定義されています。
参照先 net_q_auth2_info::clnt_chal・net_q_auth2_info::clnt_flgs・net_q_auth2_info::clnt_id・chal_info::data・init_log_info()・neg_flags_info::neg_flags.
参照元 rpccli_net_auth2().
00799 { 00800 DEBUG(5,("init_q_auth_2: %d\n", __LINE__)); 00801 00802 init_log_info(&q_a->clnt_id, logon_srv, acct_name, sec_chan, comp_name); 00803 memcpy(q_a->clnt_chal.data, clnt_chal->data, sizeof(clnt_chal->data)); 00804 q_a->clnt_flgs.neg_flags = clnt_flgs; 00805 00806 DEBUG(5,("init_q_auth_2: %d\n", __LINE__)); 00807 }
BOOL net_io_q_auth_2 | ( | const char * | desc, | |
NET_Q_AUTH_2 * | q_a, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 813 行で定義されています。
参照先 net_q_auth2_info::clnt_chal・net_q_auth2_info::clnt_flgs・net_q_auth2_info::clnt_id・net_io_neg_flags()・prs_debug()・smb_io_chal()・smb_io_log_info().
参照元 api_net_auth_2()・rpccli_net_auth2().
00814 { 00815 if (q_a == NULL) 00816 return False; 00817 00818 prs_debug(ps, depth, desc, "net_io_q_auth_2"); 00819 depth++; 00820 00821 if(!prs_align(ps)) 00822 return False; 00823 00824 if(!smb_io_log_info ("", &q_a->clnt_id, ps, depth)) /* client identification info */ 00825 return False; 00826 if(!smb_io_chal("", &q_a->clnt_chal, ps, depth)) 00827 return False; 00828 if(!net_io_neg_flags("", &q_a->clnt_flgs, ps, depth)) 00829 return False; 00830 00831 return True; 00832 }
BOOL net_io_r_auth_2 | ( | const char * | desc, | |
NET_R_AUTH_2 * | r_a, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 838 行で定義されています。
参照先 net_io_neg_flags()・prs_debug()・smb_io_chal()・net_r_auth2_info::srv_chal・net_r_auth2_info::srv_flgs・net_r_auth2_info::status.
参照元 api_net_auth_2()・rpccli_net_auth2().
00839 { 00840 if (r_a == NULL) 00841 return False; 00842 00843 prs_debug(ps, depth, desc, "net_io_r_auth_2"); 00844 depth++; 00845 00846 if(!prs_align(ps)) 00847 return False; 00848 00849 if(!smb_io_chal("", &r_a->srv_chal, ps, depth)) /* server challenge */ 00850 return False; 00851 if(!net_io_neg_flags("", &r_a->srv_flgs, ps, depth)) 00852 return False; 00853 00854 if(!prs_ntstatus("status", ps, depth, &r_a->status)) 00855 return False; 00856 00857 return True; 00858 }
void init_q_auth_3 | ( | NET_Q_AUTH_3 * | q_a, | |
const char * | logon_srv, | |||
const char * | acct_name, | |||
uint16 | sec_chan, | |||
const char * | comp_name, | |||
const DOM_CHAL * | clnt_chal, | |||
uint32 | clnt_flgs | |||
) |
parse_net.c の 864 行で定義されています。
参照先 net_q_auth3_info::clnt_chal・net_q_auth3_info::clnt_flgs・net_q_auth3_info::clnt_id・chal_info::data・init_log_info()・neg_flags_info::neg_flags.
参照元 rpccli_net_auth3().
00867 { 00868 DEBUG(5,("init_q_auth_3: %d\n", __LINE__)); 00869 00870 init_log_info(&q_a->clnt_id, logon_srv, acct_name, sec_chan, comp_name); 00871 memcpy(q_a->clnt_chal.data, clnt_chal->data, sizeof(clnt_chal->data)); 00872 q_a->clnt_flgs.neg_flags = clnt_flgs; 00873 00874 DEBUG(5,("init_q_auth_3: %d\n", __LINE__)); 00875 }
BOOL net_io_q_auth_3 | ( | const char * | desc, | |
NET_Q_AUTH_3 * | q_a, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 881 行で定義されています。
参照先 net_q_auth3_info::clnt_chal・net_q_auth3_info::clnt_flgs・net_q_auth3_info::clnt_id・net_io_neg_flags()・prs_debug()・smb_io_chal()・smb_io_log_info().
参照元 rpccli_net_auth3().
00882 { 00883 if (q_a == NULL) 00884 return False; 00885 00886 prs_debug(ps, depth, desc, "net_io_q_auth_3"); 00887 depth++; 00888 00889 if(!prs_align(ps)) 00890 return False; 00891 00892 if(!smb_io_log_info ("", &q_a->clnt_id, ps, depth)) /* client identification info */ 00893 return False; 00894 if(!smb_io_chal("", &q_a->clnt_chal, ps, depth)) 00895 return False; 00896 if(!net_io_neg_flags("", &q_a->clnt_flgs, ps, depth)) 00897 return False; 00898 00899 return True; 00900 }
BOOL net_io_r_auth_3 | ( | const char * | desc, | |
NET_R_AUTH_3 * | r_a, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 906 行で定義されています。
参照先 net_io_neg_flags()・prs_debug()・smb_io_chal()・net_r_auth3_info::srv_chal・net_r_auth3_info::srv_flgs・net_r_auth3_info::status・net_r_auth3_info::unknown.
参照元 rpccli_net_auth3().
00907 { 00908 if (r_a == NULL) 00909 return False; 00910 00911 prs_debug(ps, depth, desc, "net_io_r_auth_3"); 00912 depth++; 00913 00914 if(!prs_align(ps)) 00915 return False; 00916 00917 if(!smb_io_chal("srv_chal", &r_a->srv_chal, ps, depth)) /* server challenge */ 00918 return False; 00919 if(!net_io_neg_flags("srv_flgs", &r_a->srv_flgs, ps, depth)) 00920 return False; 00921 if (!prs_uint32("unknown", ps, depth, &r_a->unknown)) 00922 return False; 00923 00924 if(!prs_ntstatus("status", ps, depth, &r_a->status)) 00925 return False; 00926 00927 return True; 00928 }
void init_q_srv_pwset | ( | NET_Q_SRV_PWSET * | q_s, | |
const char * | logon_srv, | |||
const char * | sess_key, | |||
const char * | acct_name, | |||
uint16 | sec_chan, | |||
const char * | comp_name, | |||
DOM_CRED * | cred, | |||
const uchar | hashed_mach_pwd[16] | |||
) |
parse_net.c の 935 行で定義されています。
参照先 net_q_srv_pwset_info::clnt_id・cred_hash3()・init_clnt_info()・net_q_srv_pwset_info::pwd.
00939 { 00940 unsigned char nt_cypher[16]; 00941 00942 DEBUG(5,("init_q_srv_pwset\n")); 00943 00944 /* Process the new password. */ 00945 cred_hash3( nt_cypher, hashed_mach_pwd, (const unsigned char *)sess_key, 1); 00946 00947 init_clnt_info(&q_s->clnt_id, logon_srv, acct_name, sec_chan, comp_name, cred); 00948 00949 memcpy(q_s->pwd, nt_cypher, sizeof(q_s->pwd)); 00950 }
BOOL net_io_q_srv_pwset | ( | const char * | desc, | |
NET_Q_SRV_PWSET * | q_s, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 956 行で定義されています。
参照先 net_q_srv_pwset_info::clnt_id・prs_debug()・net_q_srv_pwset_info::pwd・smb_io_clnt_info().
参照元 api_net_srv_pwset()・rpccli_net_srv_pwset().
00957 { 00958 if (q_s == NULL) 00959 return False; 00960 00961 prs_debug(ps, depth, desc, "net_io_q_srv_pwset"); 00962 depth++; 00963 00964 if(!prs_align(ps)) 00965 return False; 00966 00967 if(!smb_io_clnt_info("", &q_s->clnt_id, ps, depth)) /* client identification/authentication info */ 00968 return False; 00969 if(!prs_uint8s (False, "pwd", ps, depth, q_s->pwd, 16)) /* new password - undocumented */ 00970 return False; 00971 00972 return True; 00973 }
BOOL net_io_r_srv_pwset | ( | const char * | desc, | |
NET_R_SRV_PWSET * | r_s, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 979 行で定義されています。
参照先 prs_debug()・smb_io_cred()・net_r_srv_pwset_info::srv_cred・net_r_srv_pwset_info::status.
参照元 api_net_srv_pwset()・rpccli_net_srv_pwset().
00980 { 00981 if (r_s == NULL) 00982 return False; 00983 00984 prs_debug(ps, depth, desc, "net_io_r_srv_pwset"); 00985 depth++; 00986 00987 if(!prs_align(ps)) 00988 return False; 00989 00990 if(!smb_io_cred("", &r_s->srv_cred, ps, depth)) /* server challenge */ 00991 return False; 00992 00993 if(!prs_ntstatus("status", ps, depth, &r_s->status)) 00994 return False; 00995 00996 return True; 00997 }
void init_q_srv_pwset2 | ( | NET_Q_SRV_PWSET2 * | q_s, | |
const char * | logon_srv, | |||
const char * | sess_key, | |||
const char * | acct_name, | |||
uint16 | sec_chan, | |||
const char * | comp_name, | |||
DOM_CRED * | cred, | |||
const char * | clear_text_mach_pwd | |||
) |
parse_net.c の 1003 行で定義されています。
参照先 net_q_srv_pwset2_info::clnt_id・net_crypt_password::data・encode_pw_buffer()・init_clnt_info()・net_crypt_password::length・net_q_srv_pwset2_info::pwd・SamOEMhash().
01011 { 01012 uint8_t password_buf[516]; 01013 NET_CRYPT_PWD new_password; 01014 01015 DEBUG(5,("init_q_srv_pwset2\n")); 01016 01017 /* Process the new password. */ 01018 01019 encode_pw_buffer(password_buf, clear_text_mach_pwd, STR_UNICODE); 01020 01021 SamOEMhash(password_buf, (const unsigned char *)sess_key, 516); 01022 memcpy(new_password.data, password_buf, 512); 01023 new_password.length = IVAL(password_buf, 512); 01024 01025 init_clnt_info(&q_s->clnt_id, logon_srv, acct_name, sec_chan, comp_name, cred); 01026 01027 memcpy(&q_s->pwd, &new_password, sizeof(q_s->pwd)); 01028 }
BOOL net_io_q_srv_pwset2 | ( | const char * | desc, | |
NET_Q_SRV_PWSET2 * | q_s, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 1034 行で定義されています。
参照先 net_q_srv_pwset2_info::clnt_id・net_crypt_password::data・net_crypt_password::length・prs_debug()・net_q_srv_pwset2_info::pwd・smb_io_clnt_info().
01035 { 01036 if (q_s == NULL) 01037 return False; 01038 01039 prs_debug(ps, depth, desc, "net_io_q_srv_pwset2"); 01040 depth++; 01041 01042 if(!prs_align(ps)) 01043 return False; 01044 01045 if(!smb_io_clnt_info("", &q_s->clnt_id, ps, depth)) /* client identification/authentication info */ 01046 return False; 01047 if(!prs_uint8s(False, "pwd.data", ps, depth, q_s->pwd.data, 512)) /* new password - undocumented */ 01048 return False; 01049 if(!prs_uint32("pwd.length", ps, depth, &q_s->pwd.length)) /* new password - undocumented */ 01050 return False; 01051 01052 return True; 01053 }
BOOL net_io_r_srv_pwset2 | ( | const char * | desc, | |
NET_R_SRV_PWSET2 * | r_s, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 1059 行で定義されています。
参照先 prs_debug()・smb_io_cred()・net_r_srv_pwset2_info::srv_cred・net_r_srv_pwset2_info::status.
01060 { 01061 if (r_s == NULL) 01062 return False; 01063 01064 prs_debug(ps, depth, desc, "net_io_r_srv_pwset2"); 01065 depth++; 01066 01067 if(!prs_align(ps)) 01068 return False; 01069 01070 if(!smb_io_cred("", &r_s->srv_cred, ps, depth)) /* server challenge */ 01071 return False; 01072 01073 if(!prs_ntstatus("status", ps, depth, &r_s->status)) 01074 return False; 01075 01076 return True; 01077 }
static int init_dom_sid2s | ( | TALLOC_CTX * | ctx, | |
const char * | sids_str, | |||
DOM_SID2 ** | ppsids | |||
) | [static] |
parse_net.c の 1083 行で定義されています。
参照先 init_dom_sid2()・next_token()・string_to_sid().
01084 { 01085 const char *ptr; 01086 pstring s2; 01087 int count = 0; 01088 01089 DEBUG(4,("init_dom_sid2s: %s\n", sids_str ? sids_str:"")); 01090 01091 *ppsids = NULL; 01092 01093 if(sids_str) { 01094 int number; 01095 DOM_SID2 *sids; 01096 01097 /* Count the number of valid SIDs. */ 01098 for (count = 0, ptr = sids_str; next_token(&ptr, s2, NULL, sizeof(s2)); ) { 01099 DOM_SID tmpsid; 01100 if (string_to_sid(&tmpsid, s2)) 01101 count++; 01102 } 01103 01104 /* Now allocate space for them. */ 01105 if (count) { 01106 *ppsids = TALLOC_ZERO_ARRAY(ctx, DOM_SID2, count); 01107 if (*ppsids == NULL) 01108 return 0; 01109 } else { 01110 *ppsids = NULL; 01111 } 01112 01113 sids = *ppsids; 01114 01115 for (number = 0, ptr = sids_str; next_token(&ptr, s2, NULL, sizeof(s2)); ) { 01116 DOM_SID tmpsid; 01117 if (string_to_sid(&tmpsid, s2)) { 01118 /* count only valid sids */ 01119 init_dom_sid2(&sids[number], &tmpsid); 01120 number++; 01121 } 01122 } 01123 } 01124 01125 return count; 01126 }
void init_id_info1 | ( | NET_ID_INFO_1 * | id, | |
const char * | domain_name, | |||
uint32 | param_ctrl, | |||
uint32 | log_id_low, | |||
uint32 | log_id_high, | |||
const char * | user_name, | |||
const char * | wksta_name, | |||
const char * | sess_key, | |||
unsigned char | lm_cypher[16], | |||
unsigned char | nt_cypher[16] | |||
) |
parse_net.c の 1132 行で定義されています。
参照先 dump_data()・id・init_logon_id()・init_owf_info()・init_uni_hdr()・init_unistr2()・SamOEMhash()・UNI_FLAGS_NONE.
参照元 rpccli_netlogon_sam_logon().
01137 { 01138 unsigned char lm_owf[16]; 01139 unsigned char nt_owf[16]; 01140 01141 DEBUG(5,("init_id_info1: %d\n", __LINE__)); 01142 01143 id->ptr_id_info1 = 1; 01144 01145 id->param_ctrl = param_ctrl; 01146 init_logon_id(&id->logon_id, log_id_low, log_id_high); 01147 01148 01149 if (lm_cypher && nt_cypher) { 01150 unsigned char key[16]; 01151 #ifdef DEBUG_PASSWORD 01152 DEBUG(100,("lm cypher:")); 01153 dump_data(100, (char *)lm_cypher, 16); 01154 01155 DEBUG(100,("nt cypher:")); 01156 dump_data(100, (char *)nt_cypher, 16); 01157 #endif 01158 01159 memset(key, 0, 16); 01160 memcpy(key, sess_key, 8); 01161 01162 memcpy(lm_owf, lm_cypher, 16); 01163 SamOEMhash(lm_owf, key, 16); 01164 memcpy(nt_owf, nt_cypher, 16); 01165 SamOEMhash(nt_owf, key, 16); 01166 01167 #ifdef DEBUG_PASSWORD 01168 DEBUG(100,("encrypt of lm owf password:")); 01169 dump_data(100, (char *)lm_owf, 16); 01170 01171 DEBUG(100,("encrypt of nt owf password:")); 01172 dump_data(100, (char *)nt_owf, 16); 01173 #endif 01174 /* set up pointers to cypher blocks */ 01175 lm_cypher = lm_owf; 01176 nt_cypher = nt_owf; 01177 } 01178 01179 init_owf_info(&id->lm_owf, lm_cypher); 01180 init_owf_info(&id->nt_owf, nt_cypher); 01181 01182 init_unistr2(&id->uni_domain_name, domain_name, UNI_FLAGS_NONE); 01183 init_uni_hdr(&id->hdr_domain_name, &id->uni_domain_name); 01184 init_unistr2(&id->uni_user_name, user_name, UNI_FLAGS_NONE); 01185 init_uni_hdr(&id->hdr_user_name, &id->uni_user_name); 01186 init_unistr2(&id->uni_wksta_name, wksta_name, UNI_FLAGS_NONE); 01187 init_uni_hdr(&id->hdr_wksta_name, &id->uni_wksta_name); 01188 }
static BOOL net_io_id_info1 | ( | const char * | desc, | |
NET_ID_INFO_1 * | id, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 1194 行で定義されています。
参照先 id・prs_debug()・smb_io_logon_id()・smb_io_owf_info()・smb_io_unihdr()・smb_io_unistr2().
参照元 net_io_id_info_ctr().
01195 { 01196 if (id == NULL) 01197 return False; 01198 01199 prs_debug(ps, depth, desc, "net_io_id_info1"); 01200 depth++; 01201 01202 if(!prs_align(ps)) 01203 return False; 01204 01205 if(!prs_uint32("ptr_id_info1", ps, depth, &id->ptr_id_info1)) 01206 return False; 01207 01208 if (id->ptr_id_info1 != 0) { 01209 if(!smb_io_unihdr("unihdr", &id->hdr_domain_name, ps, depth)) 01210 return False; 01211 01212 if(!prs_uint32("param_ctrl", ps, depth, &id->param_ctrl)) 01213 return False; 01214 if(!smb_io_logon_id("", &id->logon_id, ps, depth)) 01215 return False; 01216 01217 if(!smb_io_unihdr("unihdr", &id->hdr_user_name, ps, depth)) 01218 return False; 01219 if(!smb_io_unihdr("unihdr", &id->hdr_wksta_name, ps, depth)) 01220 return False; 01221 01222 if(!smb_io_owf_info("", &id->lm_owf, ps, depth)) 01223 return False; 01224 if(!smb_io_owf_info("", &id->nt_owf, ps, depth)) 01225 return False; 01226 01227 if(!smb_io_unistr2("unistr2", &id->uni_domain_name, 01228 id->hdr_domain_name.buffer, ps, depth)) 01229 return False; 01230 if(!smb_io_unistr2("unistr2", &id->uni_user_name, 01231 id->hdr_user_name.buffer, ps, depth)) 01232 return False; 01233 if(!smb_io_unistr2("unistr2", &id->uni_wksta_name, 01234 id->hdr_wksta_name.buffer, ps, depth)) 01235 return False; 01236 } 01237 01238 return True; 01239 }
void init_id_info2 | ( | NET_ID_INFO_2 * | id, | |
const char * | domain_name, | |||
uint32 | param_ctrl, | |||
uint32 | log_id_low, | |||
uint32 | log_id_high, | |||
const char * | user_name, | |||
const char * | wksta_name, | |||
const uchar | lm_challenge[8], | |||
const uchar * | lm_chal_resp, | |||
size_t | lm_chal_resp_len, | |||
const uchar * | nt_chal_resp, | |||
size_t | nt_chal_resp_len | |||
) |
parse_net.c の 1256 行で定義されています。
参照先 id・init_logon_id()・init_str_hdr()・init_string2()・init_uni_hdr()・init_unistr2()・UNI_FLAGS_NONE.
参照元 rpccli_netlogon_sam_logon()・rpccli_netlogon_sam_network_logon().
01263 { 01264 01265 DEBUG(5,("init_id_info2: %d\n", __LINE__)); 01266 01267 id->ptr_id_info2 = 1; 01268 01269 id->param_ctrl = param_ctrl; 01270 init_logon_id(&id->logon_id, log_id_low, log_id_high); 01271 01272 memcpy(id->lm_chal, lm_challenge, sizeof(id->lm_chal)); 01273 init_str_hdr(&id->hdr_nt_chal_resp, nt_chal_resp_len, nt_chal_resp_len, (nt_chal_resp != NULL) ? 1 : 0); 01274 init_str_hdr(&id->hdr_lm_chal_resp, lm_chal_resp_len, lm_chal_resp_len, (lm_chal_resp != NULL) ? 1 : 0); 01275 01276 init_unistr2(&id->uni_domain_name, domain_name, UNI_FLAGS_NONE); 01277 init_uni_hdr(&id->hdr_domain_name, &id->uni_domain_name); 01278 init_unistr2(&id->uni_user_name, user_name, UNI_FLAGS_NONE); 01279 init_uni_hdr(&id->hdr_user_name, &id->uni_user_name); 01280 init_unistr2(&id->uni_wksta_name, wksta_name, UNI_FLAGS_NONE); 01281 init_uni_hdr(&id->hdr_wksta_name, &id->uni_wksta_name); 01282 01283 init_string2(&id->nt_chal_resp, (const char *)nt_chal_resp, nt_chal_resp_len, nt_chal_resp_len); 01284 init_string2(&id->lm_chal_resp, (const char *)lm_chal_resp, lm_chal_resp_len, lm_chal_resp_len); 01285 01286 }
static BOOL net_io_id_info2 | ( | const char * | desc, | |
NET_ID_INFO_2 * | id, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 1292 行で定義されています。
参照先 id・prs_debug()・smb_io_logon_id()・smb_io_strhdr()・smb_io_string2()・smb_io_unihdr()・smb_io_unistr2().
参照元 net_io_id_info_ctr().
01293 { 01294 if (id == NULL) 01295 return False; 01296 01297 prs_debug(ps, depth, desc, "net_io_id_info2"); 01298 depth++; 01299 01300 if(!prs_align(ps)) 01301 return False; 01302 01303 if(!prs_uint32("ptr_id_info2", ps, depth, &id->ptr_id_info2)) 01304 return False; 01305 01306 if (id->ptr_id_info2 != 0) { 01307 if(!smb_io_unihdr("unihdr", &id->hdr_domain_name, ps, depth)) 01308 return False; 01309 01310 if(!prs_uint32("param_ctrl", ps, depth, &id->param_ctrl)) 01311 return False; 01312 if(!smb_io_logon_id("", &id->logon_id, ps, depth)) 01313 return False; 01314 01315 if(!smb_io_unihdr("unihdr", &id->hdr_user_name, ps, depth)) 01316 return False; 01317 if(!smb_io_unihdr("unihdr", &id->hdr_wksta_name, ps, depth)) 01318 return False; 01319 01320 if(!prs_uint8s (False, "lm_chal", ps, depth, id->lm_chal, 8)) /* lm 8 byte challenge */ 01321 return False; 01322 01323 if(!smb_io_strhdr("hdr_nt_chal_resp", &id->hdr_nt_chal_resp, ps, depth)) 01324 return False; 01325 if(!smb_io_strhdr("hdr_lm_chal_resp", &id->hdr_lm_chal_resp, ps, depth)) 01326 return False; 01327 01328 if(!smb_io_unistr2("uni_domain_name", &id->uni_domain_name, 01329 id->hdr_domain_name.buffer, ps, depth)) 01330 return False; 01331 if(!smb_io_unistr2("uni_user_name ", &id->uni_user_name, 01332 id->hdr_user_name.buffer, ps, depth)) 01333 return False; 01334 if(!smb_io_unistr2("uni_wksta_name ", &id->uni_wksta_name, 01335 id->hdr_wksta_name.buffer, ps, depth)) 01336 return False; 01337 if(!smb_io_string2("nt_chal_resp", &id->nt_chal_resp, 01338 id->hdr_nt_chal_resp.buffer, ps, depth)) 01339 return False; 01340 if(!smb_io_string2("lm_chal_resp", &id->lm_chal_resp, 01341 id->hdr_lm_chal_resp.buffer, ps, depth)) 01342 return False; 01343 } 01344 01345 return True; 01346 }
void init_sam_info | ( | DOM_SAM_INFO * | sam, | |
const char * | logon_srv, | |||
const char * | comp_name, | |||
DOM_CRED * | clnt_cred, | |||
DOM_CRED * | rtn_cred, | |||
uint16 | logon_level, | |||
NET_ID_INFO_CTR * | ctr | |||
) |
parse_net.c の 1353 行で定義されています。
参照先 sam_info::client・sam_info::ctr・init_clnt_info2()・sam_info::logon_level・sam_info::ptr_rtn_cred・sam_info::rtn_cred.
参照元 rpccli_netlogon_sam_logon()・rpccli_netlogon_sam_network_logon().
01358 { 01359 DEBUG(5,("init_sam_info: %d\n", __LINE__)); 01360 01361 init_clnt_info2(&sam->client, logon_srv, comp_name, clnt_cred); 01362 01363 if (rtn_cred != NULL) { 01364 sam->ptr_rtn_cred = 1; 01365 memcpy(&sam->rtn_cred, rtn_cred, sizeof(sam->rtn_cred)); 01366 } else { 01367 sam->ptr_rtn_cred = 0; 01368 } 01369 01370 sam->logon_level = logon_level; 01371 sam->ctr = ctr; 01372 }
static BOOL net_io_id_info_ctr | ( | const char * | desc, | |
NET_ID_INFO_CTR ** | pp_ctr, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 1378 行で定義されています。
参照先 net_id_info_ctr_info::auth・net_id_info_ctr_info::id1・net_id_info_ctr_info::id2・net_io_id_info1()・net_io_id_info2()・prs_debug()・net_id_info_ctr_info::switch_value.
参照元 smb_io_sam_info()・smb_io_sam_info_ex().
01379 { 01380 NET_ID_INFO_CTR *ctr = *pp_ctr; 01381 01382 prs_debug(ps, depth, desc, "smb_io_sam_info_ctr"); 01383 depth++; 01384 01385 if (UNMARSHALLING(ps)) { 01386 ctr = *pp_ctr = PRS_ALLOC_MEM(ps, NET_ID_INFO_CTR, 1); 01387 if (ctr == NULL) 01388 return False; 01389 } 01390 01391 if (ctr == NULL) 01392 return False; 01393 01394 /* don't 4-byte align here! */ 01395 01396 if(!prs_uint16("switch_value ", ps, depth, &ctr->switch_value)) 01397 return False; 01398 01399 switch (ctr->switch_value) { 01400 case 1: 01401 if(!net_io_id_info1("", &ctr->auth.id1, ps, depth)) 01402 return False; 01403 break; 01404 case 2: 01405 if(!net_io_id_info2("", &ctr->auth.id2, ps, depth)) 01406 return False; 01407 break; 01408 default: 01409 /* PANIC! */ 01410 DEBUG(4,("smb_io_sam_info_ctr: unknown switch_value!\n")); 01411 break; 01412 } 01413 01414 return True; 01415 }
static BOOL smb_io_sam_info | ( | const char * | desc, | |
DOM_SAM_INFO * | sam, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 1421 行で定義されています。
参照先 sam_info::client・sam_info::ctr・sam_info::logon_level・net_io_id_info_ctr()・prs_debug()・sam_info::ptr_rtn_cred・sam_info::rtn_cred・smb_io_clnt_info2()・smb_io_cred().
参照元 net_io_q_sam_logoff()・net_io_q_sam_logon().
01422 { 01423 if (sam == NULL) 01424 return False; 01425 01426 prs_debug(ps, depth, desc, "smb_io_sam_info"); 01427 depth++; 01428 01429 if(!prs_align(ps)) 01430 return False; 01431 01432 if(!smb_io_clnt_info2("", &sam->client, ps, depth)) 01433 return False; 01434 01435 if(!prs_uint32("ptr_rtn_cred ", ps, depth, &sam->ptr_rtn_cred)) 01436 return False; 01437 if (sam->ptr_rtn_cred) { 01438 if(!smb_io_cred("", &sam->rtn_cred, ps, depth)) 01439 return False; 01440 } 01441 01442 if(!prs_uint16("logon_level ", ps, depth, &sam->logon_level)) 01443 return False; 01444 01445 if (sam->logon_level != 0) { 01446 if(!net_io_id_info_ctr("logon_info", &sam->ctr, ps, depth)) 01447 return False; 01448 } 01449 01450 return True; 01451 }
static BOOL smb_io_sam_info_ex | ( | const char * | desc, | |
DOM_SAM_INFO_EX * | sam, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 1457 行で定義されています。
参照先 sam_info_ex::client・sam_info_ex::ctr・sam_info_ex::logon_level・net_io_id_info_ctr()・prs_debug()・smb_io_clnt_srv().
01458 { 01459 if (sam == NULL) 01460 return False; 01461 01462 prs_debug(ps, depth, desc, "smb_io_sam_info_ex"); 01463 depth++; 01464 01465 if(!prs_align(ps)) 01466 return False; 01467 01468 if(!smb_io_clnt_srv("", &sam->client, ps, depth)) 01469 return False; 01470 01471 if(!prs_uint16("logon_level ", ps, depth, &sam->logon_level)) 01472 return False; 01473 01474 if (sam->logon_level != 0) { 01475 if(!net_io_id_info_ctr("logon_info", &sam->ctr, ps, depth)) 01476 return False; 01477 } 01478 01479 return True; 01480 }
void init_net_user_info3 | ( | TALLOC_CTX * | ctx, | |
NET_USER_INFO_3 * | usr, | |||
uint32 | user_rid, | |||
uint32 | group_rid, | |||
const char * | user_name, | |||
const char * | full_name, | |||
const char * | home_dir, | |||
const char * | dir_drive, | |||
const char * | logon_script, | |||
const char * | profile_path, | |||
time_t | unix_logon_time, | |||
time_t | unix_logoff_time, | |||
time_t | unix_kickoff_time, | |||
time_t | unix_pass_last_set_time, | |||
time_t | unix_pass_can_change_time, | |||
time_t | unix_pass_must_change_time, | |||
uint16 | logon_count, | |||
uint16 | bad_pw_count, | |||
uint32 | num_groups, | |||
const DOM_GID * | gids, | |||
uint32 | user_flgs, | |||
uint32 | acct_flags, | |||
uchar | user_session_key[16], | |||
uchar | lm_session_key[8], | |||
const char * | logon_srv, | |||
const char * | logon_dom, | |||
const DOM_SID * | dom_sid | |||
) |
parse_net.c の 1491 行で定義されています。
参照先 net_user_info_3::acct_flags・net_user_info_3::bad_pw_count・net_user_info_3::buffer_dom_id・net_user_info_3::buffer_groups・net_user_info_3::buffer_other_sids・net_user_info_3::dom_sid・net_user_info_3::gids・net_user_info_3::group_rid・net_user_info_3::hdr_dir_drive・net_user_info_3::hdr_full_name・net_user_info_3::hdr_home_dir・net_user_info_3::hdr_logon_dom・net_user_info_3::hdr_logon_script・net_user_info_3::hdr_logon_srv・net_user_info_3::hdr_profile_path・net_user_info_3::hdr_user_name・init_dom_sid2()・init_dom_sid2s()・init_uni_hdr()・init_unistr2()・net_user_info_3::kickoff_time・net_user_info_3::lm_sess_key・net_user_info_3::logoff_time・net_user_info_3::logon_count・net_user_info_3::logon_time・net_user_info_3::num_groups・net_user_info_3::num_groups2・net_user_info_3::num_other_sids・net_user_info_3::other_sids・net_user_info_3::pass_can_change_time・net_user_info_3::pass_last_set_time・net_user_info_3::pass_must_change_time・net_user_info_3::ptr_user_info・net_user_info_3::uni_dir_drive・UNI_FLAGS_NONE・net_user_info_3::uni_full_name・net_user_info_3::uni_home_dir・net_user_info_3::uni_logon_dom・net_user_info_3::uni_logon_script・net_user_info_3::uni_logon_srv・net_user_info_3::uni_profile_path・net_user_info_3::uni_user_name・unix_to_nt_time()・net_user_info_3::unknown・net_user_info_3::user_flgs・net_user_info_3::user_rid・net_user_info_3::user_sess_key.
参照元 _net_sam_logon_internal().
01516 { 01517 /* only cope with one "other" sid, right now. */ 01518 /* need to count the number of space-delimited sids */ 01519 unsigned int i; 01520 int num_other_sids = 0; 01521 01522 NTTIME logon_time, logoff_time, kickoff_time, 01523 pass_last_set_time, pass_can_change_time, 01524 pass_must_change_time; 01525 01526 ZERO_STRUCTP(usr); 01527 01528 usr->ptr_user_info = 1; /* yes, we're bothering to put USER_INFO data here */ 01529 01530 /* Create NTTIME structs */ 01531 unix_to_nt_time (&logon_time, unix_logon_time); 01532 unix_to_nt_time (&logoff_time, unix_logoff_time); 01533 unix_to_nt_time (&kickoff_time, unix_kickoff_time); 01534 unix_to_nt_time (&pass_last_set_time, unix_pass_last_set_time); 01535 unix_to_nt_time (&pass_can_change_time, unix_pass_can_change_time); 01536 unix_to_nt_time (&pass_must_change_time, unix_pass_must_change_time); 01537 01538 usr->logon_time = logon_time; 01539 usr->logoff_time = logoff_time; 01540 usr->kickoff_time = kickoff_time; 01541 usr->pass_last_set_time = pass_last_set_time; 01542 usr->pass_can_change_time = pass_can_change_time; 01543 usr->pass_must_change_time = pass_must_change_time; 01544 01545 usr->logon_count = logon_count; 01546 usr->bad_pw_count = bad_pw_count; 01547 01548 usr->user_rid = user_rid; 01549 usr->group_rid = group_rid; 01550 usr->num_groups = num_groups; 01551 01552 usr->buffer_groups = 1; /* indicates fill in groups, below, even if there are none */ 01553 usr->user_flgs = user_flgs; 01554 usr->acct_flags = acct_flags; 01555 01556 if (user_session_key != NULL) 01557 memcpy(usr->user_sess_key, user_session_key, sizeof(usr->user_sess_key)); 01558 else 01559 memset((char *)usr->user_sess_key, '\0', sizeof(usr->user_sess_key)); 01560 01561 usr->buffer_dom_id = dom_sid ? 1 : 0; /* yes, we're bothering to put a domain SID in */ 01562 01563 memset((char *)usr->lm_sess_key, '\0', sizeof(usr->lm_sess_key)); 01564 01565 for (i=0; i<7; i++) { 01566 memset(&usr->unknown[i], '\0', sizeof(usr->unknown)); 01567 } 01568 01569 if (lm_session_key != NULL) { 01570 memcpy(usr->lm_sess_key, lm_session_key, sizeof(usr->lm_sess_key)); 01571 } 01572 01573 num_other_sids = init_dom_sid2s(ctx, NULL, &usr->other_sids); 01574 01575 usr->num_other_sids = num_other_sids; 01576 usr->buffer_other_sids = (num_other_sids != 0) ? 1 : 0; 01577 01578 init_unistr2(&usr->uni_user_name, user_name, UNI_FLAGS_NONE); 01579 init_uni_hdr(&usr->hdr_user_name, &usr->uni_user_name); 01580 init_unistr2(&usr->uni_full_name, full_name, UNI_FLAGS_NONE); 01581 init_uni_hdr(&usr->hdr_full_name, &usr->uni_full_name); 01582 init_unistr2(&usr->uni_logon_script, logon_script, UNI_FLAGS_NONE); 01583 init_uni_hdr(&usr->hdr_logon_script, &usr->uni_logon_script); 01584 init_unistr2(&usr->uni_profile_path, profile_path, UNI_FLAGS_NONE); 01585 init_uni_hdr(&usr->hdr_profile_path, &usr->uni_profile_path); 01586 init_unistr2(&usr->uni_home_dir, home_dir, UNI_FLAGS_NONE); 01587 init_uni_hdr(&usr->hdr_home_dir, &usr->uni_home_dir); 01588 init_unistr2(&usr->uni_dir_drive, dir_drive, UNI_FLAGS_NONE); 01589 init_uni_hdr(&usr->hdr_dir_drive, &usr->uni_dir_drive); 01590 01591 usr->num_groups2 = num_groups; 01592 01593 if (num_groups) { 01594 usr->gids = TALLOC_ZERO_ARRAY(ctx,DOM_GID,num_groups); 01595 if (usr->gids == NULL) 01596 return; 01597 } else { 01598 usr->gids = NULL; 01599 } 01600 01601 for (i = 0; i < num_groups; i++) 01602 usr->gids[i] = gids[i]; 01603 01604 init_unistr2(&usr->uni_logon_srv, logon_srv, UNI_FLAGS_NONE); 01605 init_uni_hdr(&usr->hdr_logon_srv, &usr->uni_logon_srv); 01606 init_unistr2(&usr->uni_logon_dom, logon_dom, UNI_FLAGS_NONE); 01607 init_uni_hdr(&usr->hdr_logon_dom, &usr->uni_logon_dom); 01608 01609 init_dom_sid2(&usr->dom_sid, dom_sid); 01610 /* "other" sids are set up above */ 01611 }
static void dump_acct_flags | ( | uint32 | acct_flags | ) | [static] |
parse_net.c の 1613 行で定義されています。
参照元 net_io_user_info3().
01613 { 01614 01615 int lvl = 10; 01616 DEBUG(lvl,("dump_acct_flags\n")); 01617 if (acct_flags & ACB_NORMAL) { 01618 DEBUGADD(lvl,("\taccount has ACB_NORMAL\n")); 01619 } 01620 if (acct_flags & ACB_PWNOEXP) { 01621 DEBUGADD(lvl,("\taccount has ACB_PWNOEXP\n")); 01622 } 01623 if (acct_flags & ACB_ENC_TXT_PWD_ALLOWED) { 01624 DEBUGADD(lvl,("\taccount has ACB_ENC_TXT_PWD_ALLOWED\n")); 01625 } 01626 if (acct_flags & ACB_NOT_DELEGATED) { 01627 DEBUGADD(lvl,("\taccount has ACB_NOT_DELEGATED\n")); 01628 } 01629 if (acct_flags & ACB_USE_DES_KEY_ONLY) { 01630 DEBUGADD(lvl,("\taccount has ACB_USE_DES_KEY_ONLY set, sig verify wont work\n")); 01631 } 01632 if (acct_flags & ACB_NO_AUTH_DATA_REQD) { 01633 DEBUGADD(lvl,("\taccount has ACB_NO_AUTH_DATA_REQD set\n")); 01634 } 01635 if (acct_flags & ACB_PWEXPIRED) { 01636 DEBUGADD(lvl,("\taccount has ACB_PWEXPIRED set\n")); 01637 } 01638 }
static void dump_user_flgs | ( | uint32 | user_flags | ) | [static] |
parse_net.c の 1640 行で定義されています。
参照元 net_io_user_info3().
01640 { 01641 01642 int lvl = 10; 01643 DEBUG(lvl,("dump_user_flgs\n")); 01644 if (user_flags & LOGON_EXTRA_SIDS) { 01645 DEBUGADD(lvl,("\taccount has LOGON_EXTRA_SIDS\n")); 01646 } 01647 if (user_flags & LOGON_RESOURCE_GROUPS) { 01648 DEBUGADD(lvl,("\taccount has LOGON_RESOURCE_GROUPS\n")); 01649 } 01650 if (user_flags & LOGON_NTLMV2_ENABLED) { 01651 DEBUGADD(lvl,("\taccount has LOGON_NTLMV2_ENABLED\n")); 01652 } 01653 if (user_flags & LOGON_CACHED_ACCOUNT) { 01654 DEBUGADD(lvl,("\taccount has LOGON_CACHED_ACCOUNT\n")); 01655 } 01656 if (user_flags & LOGON_PROFILE_PATH_RETURNED) { 01657 DEBUGADD(lvl,("\taccount has LOGON_PROFILE_PATH_RETURNED\n")); 01658 } 01659 if (user_flags & LOGON_SERVER_TRUST_ACCOUNT) { 01660 DEBUGADD(lvl,("\taccount has LOGON_SERVER_TRUST_ACCOUNT\n")); 01661 } 01662 01663 01664 }
BOOL net_io_user_info3 | ( | const char * | desc, | |
NET_USER_INFO_3 * | usr, | |||
prs_struct * | ps, | |||
int | depth, | |||
uint16 | validation_level, | |||
BOOL | kerb_validation_level | |||
) |
parse_net.c の 1674 行で定義されています。
参照先 dump_acct_flags()・dump_user_flgs()・prs_debug()・smb_io_time()・smb_io_unihdr()・smb_io_unistr2().
参照元 append_info3_as_ndr()・get_info3_from_ndr()・net_io_r_sam_logon()・net_io_r_sam_logon_ex()・netsamlogon_cache_get()・netsamlogon_cache_store().
01676 { 01677 unsigned int i; 01678 01679 if (usr == NULL) 01680 return False; 01681 01682 prs_debug(ps, depth, desc, "net_io_user_info3"); 01683 depth++; 01684 01685 if (UNMARSHALLING(ps)) 01686 ZERO_STRUCTP(usr); 01687 01688 if(!prs_align(ps)) 01689 return False; 01690 01691 if(!prs_uint32("ptr_user_info ", ps, depth, &usr->ptr_user_info)) 01692 return False; 01693 01694 if (usr->ptr_user_info == 0) 01695 return True; 01696 01697 if(!smb_io_time("logon time", &usr->logon_time, ps, depth)) /* logon time */ 01698 return False; 01699 if(!smb_io_time("logoff time", &usr->logoff_time, ps, depth)) /* logoff time */ 01700 return False; 01701 if(!smb_io_time("kickoff time", &usr->kickoff_time, ps, depth)) /* kickoff time */ 01702 return False; 01703 if(!smb_io_time("last set time", &usr->pass_last_set_time, ps, depth)) /* password last set time */ 01704 return False; 01705 if(!smb_io_time("can change time", &usr->pass_can_change_time , ps, depth)) /* password can change time */ 01706 return False; 01707 if(!smb_io_time("must change time", &usr->pass_must_change_time, ps, depth)) /* password must change time */ 01708 return False; 01709 01710 if(!smb_io_unihdr("hdr_user_name", &usr->hdr_user_name, ps, depth)) /* username unicode string header */ 01711 return False; 01712 if(!smb_io_unihdr("hdr_full_name", &usr->hdr_full_name, ps, depth)) /* user's full name unicode string header */ 01713 return False; 01714 if(!smb_io_unihdr("hdr_logon_script", &usr->hdr_logon_script, ps, depth)) /* logon script unicode string header */ 01715 return False; 01716 if(!smb_io_unihdr("hdr_profile_path", &usr->hdr_profile_path, ps, depth)) /* profile path unicode string header */ 01717 return False; 01718 if(!smb_io_unihdr("hdr_home_dir", &usr->hdr_home_dir, ps, depth)) /* home directory unicode string header */ 01719 return False; 01720 if(!smb_io_unihdr("hdr_dir_drive", &usr->hdr_dir_drive, ps, depth)) /* home directory drive unicode string header */ 01721 return False; 01722 01723 if(!prs_uint16("logon_count ", ps, depth, &usr->logon_count)) /* logon count */ 01724 return False; 01725 if(!prs_uint16("bad_pw_count ", ps, depth, &usr->bad_pw_count)) /* bad password count */ 01726 return False; 01727 01728 if(!prs_uint32("user_rid ", ps, depth, &usr->user_rid)) /* User RID */ 01729 return False; 01730 if(!prs_uint32("group_rid ", ps, depth, &usr->group_rid)) /* Group RID */ 01731 return False; 01732 if(!prs_uint32("num_groups ", ps, depth, &usr->num_groups)) /* num groups */ 01733 return False; 01734 if(!prs_uint32("buffer_groups ", ps, depth, &usr->buffer_groups)) /* undocumented buffer pointer to groups. */ 01735 return False; 01736 if(!prs_uint32("user_flgs ", ps, depth, &usr->user_flgs)) /* user flags */ 01737 return False; 01738 dump_user_flgs(usr->user_flgs); 01739 if(!prs_uint8s(False, "user_sess_key", ps, depth, usr->user_sess_key, 16)) /* user session key */ 01740 return False; 01741 01742 if(!smb_io_unihdr("hdr_logon_srv", &usr->hdr_logon_srv, ps, depth)) /* logon server unicode string header */ 01743 return False; 01744 if(!smb_io_unihdr("hdr_logon_dom", &usr->hdr_logon_dom, ps, depth)) /* logon domain unicode string header */ 01745 return False; 01746 01747 if(!prs_uint32("buffer_dom_id ", ps, depth, &usr->buffer_dom_id)) /* undocumented logon domain id pointer */ 01748 return False; 01749 01750 if(!prs_uint8s(False, "lm_sess_key", ps, depth, usr->lm_sess_key, 8)) /* lm session key */ 01751 return False; 01752 01753 if(!prs_uint32("acct_flags ", ps, depth, &usr->acct_flags)) /* Account flags */ 01754 return False; 01755 dump_acct_flags(usr->acct_flags); 01756 for (i = 0; i < 7; i++) 01757 { 01758 if (!prs_uint32("unkown", ps, depth, &usr->unknown[i])) /* unknown */ 01759 return False; 01760 } 01761 01762 if (validation_level == 3) { 01763 if(!prs_uint32("num_other_sids", ps, depth, &usr->num_other_sids)) /* 0 - num_sids */ 01764 return False; 01765 if(!prs_uint32("buffer_other_sids", ps, depth, &usr->buffer_other_sids)) /* NULL - undocumented pointer to SIDs. */ 01766 return False; 01767 } else { 01768 if (UNMARSHALLING(ps)) { 01769 usr->num_other_sids = 0; 01770 usr->buffer_other_sids = 0; 01771 } 01772 } 01773 01774 /* get kerb validation info (not really part of user_info_3) - Guenther */ 01775 01776 if (kerb_validation_level) { 01777 01778 if(!prs_uint32("ptr_res_group_dom_sid", ps, depth, &usr->ptr_res_group_dom_sid)) 01779 return False; 01780 if(!prs_uint32("res_group_count", ps, depth, &usr->res_group_count)) 01781 return False; 01782 if(!prs_uint32("ptr_res_groups", ps, depth, &usr->ptr_res_groups)) 01783 return False; 01784 } 01785 01786 if(!smb_io_unistr2("uni_user_name", &usr->uni_user_name, usr->hdr_user_name.buffer, ps, depth)) /* username unicode string */ 01787 return False; 01788 if(!smb_io_unistr2("uni_full_name", &usr->uni_full_name, usr->hdr_full_name.buffer, ps, depth)) /* user's full name unicode string */ 01789 return False; 01790 if(!smb_io_unistr2("uni_logon_script", &usr->uni_logon_script, usr->hdr_logon_script.buffer, ps, depth)) /* logon script unicode string */ 01791 return False; 01792 if(!smb_io_unistr2("uni_profile_path", &usr->uni_profile_path, usr->hdr_profile_path.buffer, ps, depth)) /* profile path unicode string */ 01793 return False; 01794 if(!smb_io_unistr2("uni_home_dir", &usr->uni_home_dir, usr->hdr_home_dir.buffer, ps, depth)) /* home directory unicode string */ 01795 return False; 01796 if(!smb_io_unistr2("uni_dir_drive", &usr->uni_dir_drive, usr->hdr_dir_drive.buffer, ps, depth)) /* home directory drive unicode string */ 01797 return False; 01798 01799 if(!prs_align(ps)) 01800 return False; 01801 01802 if(!prs_uint32("num_groups2 ", ps, depth, &usr->num_groups2)) /* num groups2 */ 01803 return False; 01804 01805 if (usr->num_groups != usr->num_groups2) { 01806 DEBUG(3,("net_io_user_info3: num_groups mismatch! (%d != %d)\n", 01807 usr->num_groups, usr->num_groups2)); 01808 return False; 01809 } 01810 01811 if (UNMARSHALLING(ps)) { 01812 if (usr->num_groups) { 01813 usr->gids = PRS_ALLOC_MEM(ps, DOM_GID, usr->num_groups); 01814 if (usr->gids == NULL) 01815 return False; 01816 } else { 01817 usr->gids = NULL; 01818 } 01819 } 01820 01821 for (i = 0; i < usr->num_groups; i++) { 01822 if(!smb_io_gid("", &usr->gids[i], ps, depth)) /* group info */ 01823 return False; 01824 } 01825 01826 if(!smb_io_unistr2("uni_logon_srv", &usr->uni_logon_srv, usr->hdr_logon_srv.buffer, ps, depth)) /* logon server unicode string */ 01827 return False; 01828 if(!smb_io_unistr2("uni_logon_dom", &usr->uni_logon_dom, usr->hdr_logon_dom.buffer, ps, depth)) /* logon domain unicode string */ 01829 return False; 01830 01831 if(!smb_io_dom_sid2("", &usr->dom_sid, ps, depth)) /* domain SID */ 01832 return False; 01833 01834 if (validation_level == 3 && usr->buffer_other_sids) { 01835 01836 uint32 num_other_sids = usr->num_other_sids; 01837 01838 if (!(usr->user_flgs & LOGON_EXTRA_SIDS)) { 01839 DEBUG(10,("net_io_user_info3: user_flgs attribute does not have LOGON_EXTRA_SIDS\n")); 01840 /* return False; */ 01841 } 01842 01843 if (!prs_uint32("num_other_sids", ps, depth, 01844 &num_other_sids)) 01845 return False; 01846 01847 if (num_other_sids != usr->num_other_sids) 01848 return False; 01849 01850 if (UNMARSHALLING(ps)) { 01851 if (usr->num_other_sids) { 01852 usr->other_sids = PRS_ALLOC_MEM(ps, DOM_SID2, usr->num_other_sids); 01853 usr->other_sids_attrib = 01854 PRS_ALLOC_MEM(ps, uint32, usr->num_other_sids); 01855 } else { 01856 usr->other_sids = NULL; 01857 usr->other_sids_attrib = NULL; 01858 } 01859 01860 if ((num_other_sids != 0) && 01861 ((usr->other_sids == NULL) || 01862 (usr->other_sids_attrib == NULL))) 01863 return False; 01864 } 01865 01866 /* First the pointers to the SIDS and attributes */ 01867 01868 depth++; 01869 01870 for (i=0; i<usr->num_other_sids; i++) { 01871 uint32 ptr = 1; 01872 01873 if (!prs_uint32("sid_ptr", ps, depth, &ptr)) 01874 return False; 01875 01876 if (UNMARSHALLING(ps) && (ptr == 0)) 01877 return False; 01878 01879 if (!prs_uint32("attribute", ps, depth, 01880 &usr->other_sids_attrib[i])) 01881 return False; 01882 } 01883 01884 for (i = 0; i < usr->num_other_sids; i++) { 01885 if(!smb_io_dom_sid2("", &usr->other_sids[i], ps, depth)) /* other domain SIDs */ 01886 return False; 01887 } 01888 01889 depth--; 01890 } 01891 01892 return True; 01893 }
BOOL net_io_q_sam_logon | ( | const char * | desc, | |
NET_Q_SAM_LOGON * | q_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 1899 行で定義されています。
参照先 prs_debug()・net_q_sam_logon_info::sam_id・smb_io_sam_info()・net_q_sam_logon_info::validation_level.
参照元 api_net_sam_logon()・rpccli_netlogon_sam_logon()・rpccli_netlogon_sam_network_logon().
01900 { 01901 if (q_l == NULL) 01902 return False; 01903 01904 prs_debug(ps, depth, desc, "net_io_q_sam_logon"); 01905 depth++; 01906 01907 if(!prs_align(ps)) 01908 return False; 01909 01910 if(!smb_io_sam_info("", &q_l->sam_id, ps, depth)) 01911 return False; 01912 01913 if(!prs_align_uint16(ps)) 01914 return False; 01915 01916 if(!prs_uint16("validation_level", ps, depth, &q_l->validation_level)) 01917 return False; 01918 01919 return True; 01920 }
BOOL net_io_r_sam_logon | ( | const char * | desc, | |
NET_R_SAM_LOGON * | r_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 1926 行で定義されています。
参照先 net_r_sam_logon_info::auth_resp・net_r_sam_logon_info::buffer_creds・net_io_user_info3()・prs_debug()・smb_io_cred()・net_r_sam_logon_info::srv_creds・net_r_sam_logon_info::status・net_r_sam_logon_info::switch_value・net_r_sam_logon_info::user.
参照元 api_net_sam_logon()・rpccli_netlogon_sam_logon()・rpccli_netlogon_sam_network_logon().
01927 { 01928 if (r_l == NULL) 01929 return False; 01930 01931 prs_debug(ps, depth, desc, "net_io_r_sam_logon"); 01932 depth++; 01933 01934 if(!prs_uint32("buffer_creds", ps, depth, &r_l->buffer_creds)) /* undocumented buffer pointer */ 01935 return False; 01936 if (&r_l->buffer_creds) { 01937 if(!smb_io_cred("", &r_l->srv_creds, ps, depth)) /* server credentials. server time stamp appears to be ignored. */ 01938 return False; 01939 } 01940 01941 if(!prs_uint16("switch_value", ps, depth, &r_l->switch_value)) 01942 return False; 01943 if(!prs_align(ps)) 01944 return False; 01945 01946 #if 1 /* W2k always needs this - even for bad passwd. JRA */ 01947 if(!net_io_user_info3("", r_l->user, ps, depth, r_l->switch_value, False)) 01948 return False; 01949 #else 01950 if (r_l->switch_value != 0) { 01951 if(!net_io_user_info3("", r_l->user, ps, depth, r_l->switch_value, False)) 01952 return False; 01953 } 01954 #endif 01955 01956 if(!prs_uint32("auth_resp ", ps, depth, &r_l->auth_resp)) /* 1 - Authoritative response; 0 - Non-Auth? */ 01957 return False; 01958 01959 if(!prs_ntstatus("status ", ps, depth, &r_l->status)) 01960 return False; 01961 01962 if(!prs_align(ps)) 01963 return False; 01964 01965 return True; 01966 }
BOOL net_io_q_sam_logon_ex | ( | const char * | desc, | |
NET_Q_SAM_LOGON_EX * | q_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 1972 行で定義されています。
参照先 net_q_sam_logon_info_ex::flags・prs_debug()・net_q_sam_logon_info_ex::sam_id・smb_io_sam_info_ex()・net_q_sam_logon_info_ex::validation_level.
01973 { 01974 if (q_l == NULL) 01975 return False; 01976 01977 prs_debug(ps, depth, desc, "net_io_q_sam_logon_ex"); 01978 depth++; 01979 01980 if(!prs_align(ps)) 01981 return False; 01982 01983 if(!smb_io_sam_info_ex("", &q_l->sam_id, ps, depth)) 01984 return False; 01985 01986 if(!prs_align_uint16(ps)) 01987 return False; 01988 01989 if(!prs_uint16("validation_level", ps, depth, &q_l->validation_level)) 01990 return False; 01991 01992 if(!prs_uint32("flags ", ps, depth, &q_l->flags)) 01993 return False; 01994 01995 return True; 01996 }
BOOL net_io_r_sam_logon_ex | ( | const char * | desc, | |
NET_R_SAM_LOGON_EX * | r_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 2002 行で定義されています。
参照先 net_r_sam_logon_info_ex::auth_resp・net_r_sam_logon_info_ex::flags・net_io_user_info3()・prs_debug()・net_r_sam_logon_info_ex::status・net_r_sam_logon_info_ex::switch_value・net_r_sam_logon_info_ex::user.
02003 { 02004 if (r_l == NULL) 02005 return False; 02006 02007 prs_debug(ps, depth, desc, "net_io_r_sam_logon_ex"); 02008 depth++; 02009 02010 if(!prs_uint16("switch_value", ps, depth, &r_l->switch_value)) 02011 return False; 02012 if(!prs_align(ps)) 02013 return False; 02014 02015 #if 1 /* W2k always needs this - even for bad passwd. JRA */ 02016 if(!net_io_user_info3("", r_l->user, ps, depth, r_l->switch_value, False)) 02017 return False; 02018 #else 02019 if (r_l->switch_value != 0) { 02020 if(!net_io_user_info3("", r_l->user, ps, depth, r_l->switch_value, False)) 02021 return False; 02022 } 02023 #endif 02024 02025 if(!prs_uint32("auth_resp ", ps, depth, &r_l->auth_resp)) /* 1 - Authoritative response; 0 - Non-Auth? */ 02026 return False; 02027 02028 if(!prs_uint32("flags ", ps, depth, &r_l->flags)) 02029 return False; 02030 02031 if(!prs_ntstatus("status ", ps, depth, &r_l->status)) 02032 return False; 02033 02034 if(!prs_align(ps)) 02035 return False; 02036 02037 return True; 02038 }
BOOL net_io_q_sam_logoff | ( | const char * | desc, | |
NET_Q_SAM_LOGOFF * | q_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 2045 行で定義されています。
参照先 prs_debug()・net_q_sam_logoff_info::sam_id・smb_io_sam_info().
参照元 api_net_sam_logoff().
02046 { 02047 if (q_l == NULL) 02048 return False; 02049 02050 prs_debug(ps, depth, desc, "net_io_q_sam_logoff"); 02051 depth++; 02052 02053 if(!prs_align(ps)) 02054 return False; 02055 02056 if(!smb_io_sam_info("", &q_l->sam_id, ps, depth)) /* domain SID */ 02057 return False; 02058 02059 return True; 02060 }
BOOL net_io_r_sam_logoff | ( | const char * | desc, | |
NET_R_SAM_LOGOFF * | r_l, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 2066 行で定義されています。
参照先 net_r_sam_logoff_info::buffer_creds・prs_debug()・smb_io_cred()・net_r_sam_logoff_info::srv_creds・net_r_sam_logoff_info::status.
参照元 api_net_sam_logoff().
02067 { 02068 if (r_l == NULL) 02069 return False; 02070 02071 prs_debug(ps, depth, desc, "net_io_r_sam_logoff"); 02072 depth++; 02073 02074 if(!prs_align(ps)) 02075 return False; 02076 02077 if(!prs_uint32("buffer_creds", ps, depth, &r_l->buffer_creds)) /* undocumented buffer pointer */ 02078 return False; 02079 if(!smb_io_cred("", &r_l->srv_creds, ps, depth)) /* server credentials. server time stamp appears to be ignored. */ 02080 return False; 02081 02082 if(!prs_ntstatus("status ", ps, depth, &r_l->status)) 02083 return False; 02084 02085 return True; 02086 }
BOOL init_net_q_sam_sync | ( | NET_Q_SAM_SYNC * | q_s, | |
const char * | srv_name, | |||
const char * | cli_name, | |||
DOM_CRED * | cli_creds, | |||
DOM_CRED * | ret_creds, | |||
uint32 | database_id, | |||
uint32 | next_rid | |||
) |
parse_net.c の 2091 行で定義されています。
参照先 net_q_sam_sync_info::cli_creds・net_q_sam_sync_info::database_id・init_unistr2()・net_q_sam_sync_info::max_size・net_q_sam_sync_info::restart_state・net_q_sam_sync_info::ret_creds・net_q_sam_sync_info::sync_context・net_q_sam_sync_info::uni_cli_name・net_q_sam_sync_info::uni_srv_name・UNI_STR_TERMINATE.
参照元 rpccli_netlogon_sam_sync().
02095 { 02096 DEBUG(5, ("init_q_sam_sync\n")); 02097 02098 init_unistr2(&q_s->uni_srv_name, srv_name, UNI_STR_TERMINATE); 02099 init_unistr2(&q_s->uni_cli_name, cli_name, UNI_STR_TERMINATE); 02100 02101 if (cli_creds) 02102 memcpy(&q_s->cli_creds, cli_creds, sizeof(q_s->cli_creds)); 02103 02104 if (cli_creds) 02105 memcpy(&q_s->ret_creds, ret_creds, sizeof(q_s->ret_creds)); 02106 else 02107 memset(&q_s->ret_creds, 0, sizeof(q_s->ret_creds)); 02108 02109 q_s->database_id = database_id; 02110 q_s->restart_state = 0; 02111 q_s->sync_context = next_rid; 02112 q_s->max_size = 0xffff; 02113 02114 return True; 02115 }
BOOL net_io_q_sam_sync | ( | const char * | desc, | |
NET_Q_SAM_SYNC * | q_s, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 2120 行で定義されています。
参照先 net_q_sam_sync_info::cli_creds・net_q_sam_sync_info::database_id・net_q_sam_sync_info::max_size・prs_debug()・net_q_sam_sync_info::restart_state・net_q_sam_sync_info::ret_creds・smb_io_cred()・smb_io_unistr2()・net_q_sam_sync_info::sync_context・net_q_sam_sync_info::uni_cli_name・net_q_sam_sync_info::uni_srv_name.
参照元 rpccli_netlogon_sam_sync().
02122 { 02123 prs_debug(ps, depth, desc, "net_io_q_sam_sync"); 02124 depth++; 02125 02126 if (!smb_io_unistr2("", &q_s->uni_srv_name, True, ps, depth)) 02127 return False; 02128 if (!smb_io_unistr2("", &q_s->uni_cli_name, True, ps, depth)) 02129 return False; 02130 02131 if (!smb_io_cred("", &q_s->cli_creds, ps, depth)) 02132 return False; 02133 if (!smb_io_cred("", &q_s->ret_creds, ps, depth)) 02134 return False; 02135 02136 if (!prs_uint32("database_id ", ps, depth, &q_s->database_id)) 02137 return False; 02138 if (!prs_uint32("restart_state", ps, depth, &q_s->restart_state)) 02139 return False; 02140 if (!prs_uint32("sync_context ", ps, depth, &q_s->sync_context)) 02141 return False; 02142 02143 if (!prs_uint32("max_size", ps, depth, &q_s->max_size)) 02144 return False; 02145 02146 return True; 02147 }
static BOOL net_io_sam_delta_hdr | ( | const char * | desc, | |
SAM_DELTA_HDR * | delta, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2152 行で定義されています。
参照先 prs_debug()・sam_delta_hdr_info::ptr_delta・sam_delta_hdr_info::target_rid・sam_delta_hdr_info::type・sam_delta_hdr_info::type2・sam_delta_hdr_info::type3.
参照元 net_io_r_sam_deltas()・net_io_r_sam_sync().
02154 { 02155 prs_debug(ps, depth, desc, "net_io_sam_delta_hdr"); 02156 depth++; 02157 02158 if (!prs_uint16("type", ps, depth, &delta->type)) 02159 return False; 02160 if (!prs_uint16("type2", ps, depth, &delta->type2)) 02161 return False; 02162 if (!prs_uint32("target_rid", ps, depth, &delta->target_rid)) 02163 return False; 02164 02165 if (!prs_uint32("type3", ps, depth, &delta->type3)) 02166 return False; 02167 02168 /* Not sure why we need this but it seems to be necessary to get 02169 sam deltas working. */ 02170 02171 if (delta->type != 0x16) { 02172 if (!prs_uint32("ptr_delta", ps, depth, &delta->ptr_delta)) 02173 return False; 02174 } 02175 02176 return True; 02177 }
static BOOL net_io_sam_delta_mod_count | ( | const char * | desc, | |
SAM_DELTA_MOD_COUNT * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2182 行で定義されています。
参照先 SAM_DELTA_MOD_COUNT::dom_mod_count・SAM_DELTA_MOD_COUNT::dom_mod_count_ptr・prs_debug()・prs_uint64()・SAM_DELTA_MOD_COUNT::seqnum.
02184 { 02185 prs_debug(ps, depth, desc, "net_io_sam_delta_stamp"); 02186 depth++; 02187 02188 if (!prs_uint32("seqnum", ps, depth, &info->seqnum)) 02189 return False; 02190 if (!prs_uint32("dom_mod_count_ptr", ps, depth, 02191 &info->dom_mod_count_ptr)) 02192 return False; 02193 02194 if (info->dom_mod_count_ptr) { 02195 if (!prs_uint64("dom_mod_count", ps, depth, 02196 &info->dom_mod_count)) 02197 return False; 02198 } 02199 02200 return True; 02201 }
static BOOL net_io_sam_domain_info | ( | const char * | desc, | |
SAM_DOMAIN_INFO * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2206 行で定義されています。
参照先 sam_domain_info_info::account_lockout・sam_domain_info_info::buf_oem_info・sam_domain_info_info::buf_sec_desc・sam_domain_info_info::buf_unknown2・sam_domain_info_info::buf_unknown3・sam_domain_info_info::buf_unknown4・hdr_account_lockout_string::buffer・UNIHDR::buffer・sam_domain_info_info::creation_time・sam_domain_info_info::dom_mod_count・sam_domain_info_info::force_logoff・sam_domain_info_info::hdr_account_lockout・sam_domain_info_info::hdr_dom_name・sam_domain_info_info::hdr_oem_info・sam_domain_info_info::hdr_sec_desc・sam_domain_info_info::hdr_unknown2・sam_domain_info_info::hdr_unknown3・sam_domain_info_info::hdr_unknown4・sam_domain_info_info::logon_chgpass・sam_domain_info_info::max_pwd_age・sam_domain_info_info::min_pwd_age・sam_domain_info_info::min_pwd_len・prs_debug()・prs_uint64()・sam_domain_info_info::pwd_history_len・sam_domain_info_info::security_information・smb_io_account_lockout_str()・smb_io_bufhdr4()・smb_io_lockout_string_hdr()・smb_io_rpc_blob()・smb_io_time()・smb_io_unihdr()・smb_io_unistr2()・sam_domain_info_info::uni_dom_name・sam_domain_info_info::unknown6・sam_domain_info_info::unknown7・sam_domain_info_info::unknown8.
02208 { 02209 prs_debug(ps, depth, desc, "net_io_sam_domain_info"); 02210 depth++; 02211 02212 if (!smb_io_unihdr("hdr_dom_name", &info->hdr_dom_name, ps, depth)) 02213 return False; 02214 if (!smb_io_unihdr("hdr_oem_info", &info->hdr_oem_info, ps, depth)) 02215 return False; 02216 02217 if (!prs_uint64("force_logoff", ps, depth, &info->force_logoff)) 02218 return False; 02219 if (!prs_uint16("min_pwd_len", ps, depth, &info->min_pwd_len)) 02220 return False; 02221 if (!prs_uint16("pwd_history_len", ps, depth, &info->pwd_history_len)) 02222 return False; 02223 if (!prs_uint64("max_pwd_age", ps, depth, &info->max_pwd_age)) 02224 return False; 02225 if (!prs_uint64("min_pwd_age", ps, depth, &info->min_pwd_age)) 02226 return False; 02227 if (!prs_uint64("dom_mod_count", ps, depth, &info->dom_mod_count)) 02228 return False; 02229 if (!smb_io_time("creation_time", &info->creation_time, ps, depth)) 02230 return False; 02231 if (!prs_uint32("security_information", ps, depth, &info->security_information)) 02232 return False; 02233 if (!smb_io_bufhdr4("hdr_sec_desc", &info->hdr_sec_desc, ps, depth)) 02234 return False; 02235 if (!smb_io_lockout_string_hdr("hdr_account_lockout_string", &info->hdr_account_lockout, ps, depth)) 02236 return False; 02237 if (!smb_io_unihdr("hdr_unknown2", &info->hdr_unknown2, ps, depth)) 02238 return False; 02239 if (!smb_io_unihdr("hdr_unknown3", &info->hdr_unknown3, ps, depth)) 02240 return False; 02241 if (!smb_io_unihdr("hdr_unknown4", &info->hdr_unknown4, ps, depth)) 02242 return False; 02243 if (!prs_uint32("logon_chgpass", ps, depth, &info->logon_chgpass)) 02244 return False; 02245 if (!prs_uint32("unknown6", ps, depth, &info->unknown6)) 02246 return False; 02247 if (!prs_uint32("unknown7", ps, depth, &info->unknown7)) 02248 return False; 02249 if (!prs_uint32("unknown8", ps, depth, &info->unknown8)) 02250 return False; 02251 02252 if (!smb_io_unistr2("uni_dom_name", &info->uni_dom_name, 02253 info->hdr_dom_name.buffer, ps, depth)) 02254 return False; 02255 if (!smb_io_unistr2("buf_oem_info", &info->buf_oem_info, 02256 info->hdr_oem_info.buffer, ps, depth)) 02257 return False; 02258 02259 if (!smb_io_rpc_blob("buf_sec_desc", &info->buf_sec_desc, ps, depth)) 02260 return False; 02261 02262 if (!smb_io_account_lockout_str("account_lockout", &info->account_lockout, 02263 info->hdr_account_lockout.buffer, ps, depth)) 02264 return False; 02265 02266 if (!smb_io_unistr2("buf_unknown2", &info->buf_unknown2, 02267 info->hdr_unknown2.buffer, ps, depth)) 02268 return False; 02269 if (!smb_io_unistr2("buf_unknown3", &info->buf_unknown3, 02270 info->hdr_unknown3.buffer, ps, depth)) 02271 return False; 02272 if (!smb_io_unistr2("buf_unknown4", &info->buf_unknown4, 02273 info->hdr_unknown4.buffer, ps, depth)) 02274 return False; 02275 02276 return True; 02277 }
static BOOL net_io_sam_group_info | ( | const char * | desc, | |
SAM_GROUP_INFO * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2282 行で定義されています。
参照先 sam_group_info_info::buf_sec_desc・UNIHDR::buffer・_prs_struct::buffer_size・_prs_struct::data_offset・sam_group_info_info::gid・sam_group_info_info::hdr_grp_desc・sam_group_info_info::hdr_grp_name・sam_group_info_info::hdr_sec_desc・prs_debug()・smb_io_bufhdr2()・smb_io_gid()・smb_io_rpc_blob()・smb_io_unihdr()・smb_io_unistr2()・sam_group_info_info::uni_grp_desc・sam_group_info_info::uni_grp_name.
02284 { 02285 prs_debug(ps, depth, desc, "net_io_sam_group_info"); 02286 depth++; 02287 02288 if (!smb_io_unihdr("hdr_grp_name", &info->hdr_grp_name, ps, depth)) 02289 return False; 02290 if (!smb_io_gid("gid", &info->gid, ps, depth)) 02291 return False; 02292 if (!smb_io_unihdr("hdr_grp_desc", &info->hdr_grp_desc, ps, depth)) 02293 return False; 02294 if (!smb_io_bufhdr2("hdr_sec_desc", &info->hdr_sec_desc, ps, depth)) 02295 return False; 02296 02297 if (ps->data_offset + 48 > ps->buffer_size) 02298 return False; 02299 ps->data_offset += 48; 02300 02301 if (!smb_io_unistr2("uni_grp_name", &info->uni_grp_name, 02302 info->hdr_grp_name.buffer, ps, depth)) 02303 return False; 02304 if (!smb_io_unistr2("uni_grp_desc", &info->uni_grp_desc, 02305 info->hdr_grp_desc.buffer, ps, depth)) 02306 return False; 02307 if (!smb_io_rpc_blob("buf_sec_desc", &info->buf_sec_desc, ps, depth)) 02308 return False; 02309 02310 return True; 02311 }
static BOOL net_io_sam_passwd_info | ( | const char * | desc, | |
SAM_PWD * | pwd, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2316 行で定義されています。
参照先 sam_passwd_info::buf_lm_pwd・sam_passwd_info::buf_nt_pwd・sam_passwd_info::hdr_empty_lm・sam_passwd_info::hdr_empty_nt・sam_passwd_info::hdr_lm_pwd・sam_passwd_info::hdr_nt_pwd・prs_debug()・smb_io_unihdr()・sam_passwd_info::unk_0.
参照元 net_io_sam_account_info().
02318 { 02319 prs_debug(ps, depth, desc, "net_io_sam_passwd_info"); 02320 depth++; 02321 02322 if (!prs_uint32("unk_0 ", ps, depth, &pwd->unk_0)) 02323 return False; 02324 02325 if (!smb_io_unihdr("hdr_lm_pwd", &pwd->hdr_lm_pwd, ps, depth)) 02326 return False; 02327 if (!prs_uint8s(False, "buf_lm_pwd", ps, depth, pwd->buf_lm_pwd, 16)) 02328 return False; 02329 02330 if (!smb_io_unihdr("hdr_nt_pwd", &pwd->hdr_nt_pwd, ps, depth)) 02331 return False; 02332 if (!prs_uint8s(False, "buf_nt_pwd", ps, depth, pwd->buf_nt_pwd, 16)) 02333 return False; 02334 02335 if (!smb_io_unihdr("", &pwd->hdr_empty_lm, ps, depth)) 02336 return False; 02337 if (!smb_io_unihdr("", &pwd->hdr_empty_nt, ps, depth)) 02338 return False; 02339 02340 return True; 02341 }
static BOOL net_io_sam_account_info | ( | const char * | desc, | |
SAM_ACCOUNT_INFO * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2346 行で定義されています。
参照先 sam_account_info_info::acb_info・sam_account_info_info::acct_expiry_time・sam_account_info_info::bad_pwd_count・sam_account_info_info::buf_logon_hrs・BUFHDR2::buffer・UNIHDR::buffer・sam_account_info_info::codepage・sam_account_info_info::country・sam_account_info_info::dw_reserved・sam_account_info_info::group_rid・sam_account_info_info::hdr_acct_desc・sam_account_info_info::hdr_acct_name・sam_account_info_info::hdr_comment・sam_account_info_info::hdr_dir_drive・sam_account_info_info::hdr_full_name・sam_account_info_info::hdr_home_dir・sam_account_info_info::hdr_logon_script・sam_account_info_info::hdr_parameters・sam_account_info_info::hdr_profile・sam_account_info_info::hdr_reserved・sam_account_info_info::hdr_sec_desc・sam_account_info_info::hdr_workstations・len・sam_account_info_info::lm_pwd・sam_account_info_info::lm_pwd_present・sam_account_info_info::logoff_time・sam_account_info_info::logon_count・sam_account_info_info::logon_divs・sam_account_info_info::logon_time・net_io_sam_passwd_info()・sam_account_info_info::nt_pwd・sam_account_info_info::nt_pwd_present・sam_account_info_info::pass・prs_debug()・sam_account_info_info::ptr_logon_hrs・sam_account_info_info::pwd_expired・sam_account_info_info::pwd_last_set_time・smb_io_bufhdr2()・smb_io_rpc_blob()・smb_io_time()・smb_io_unihdr()・smb_io_unistr2()・sam_account_info_info::uni_acct_desc・sam_account_info_info::uni_acct_name・sam_account_info_info::uni_comment・sam_account_info_info::uni_dir_drive・sam_account_info_info::uni_full_name・sam_account_info_info::uni_home_dir・sam_account_info_info::uni_logon_script・sam_account_info_info::uni_parameters・sam_account_info_info::uni_workstations・sam_account_info_info::unknown1・sam_account_info_info::unknown2・sam_account_info_info::user_rid.
02348 { 02349 BUFHDR2 hdr_priv_data; 02350 uint32 i; 02351 02352 prs_debug(ps, depth, desc, "net_io_sam_account_info"); 02353 depth++; 02354 02355 if (!smb_io_unihdr("hdr_acct_name", &info->hdr_acct_name, ps, depth)) 02356 return False; 02357 if (!smb_io_unihdr("hdr_full_name", &info->hdr_full_name, ps, depth)) 02358 return False; 02359 02360 if (!prs_uint32("user_rid ", ps, depth, &info->user_rid)) 02361 return False; 02362 if (!prs_uint32("group_rid", ps, depth, &info->group_rid)) 02363 return False; 02364 02365 if (!smb_io_unihdr("hdr_home_dir ", &info->hdr_home_dir, ps, depth)) 02366 return False; 02367 if (!smb_io_unihdr("hdr_dir_drive", &info->hdr_dir_drive, ps, depth)) 02368 return False; 02369 if (!smb_io_unihdr("hdr_logon_script", &info->hdr_logon_script, ps, 02370 depth)) 02371 return False; 02372 02373 if (!smb_io_unihdr("hdr_acct_desc", &info->hdr_acct_desc, ps, depth)) 02374 return False; 02375 if (!smb_io_unihdr("hdr_workstations", &info->hdr_workstations, ps, 02376 depth)) 02377 return False; 02378 02379 if (!smb_io_time("logon_time", &info->logon_time, ps, depth)) 02380 return False; 02381 if (!smb_io_time("logoff_time", &info->logoff_time, ps, depth)) 02382 return False; 02383 02384 if (!prs_uint32("logon_divs ", ps, depth, &info->logon_divs)) 02385 return False; 02386 if (!prs_uint32("ptr_logon_hrs", ps, depth, &info->ptr_logon_hrs)) 02387 return False; 02388 02389 if (!prs_uint16("bad_pwd_count", ps, depth, &info->bad_pwd_count)) 02390 return False; 02391 if (!prs_uint16("logon_count", ps, depth, &info->logon_count)) 02392 return False; 02393 if (!smb_io_time("pwd_last_set_time", &info->pwd_last_set_time, ps, 02394 depth)) 02395 return False; 02396 if (!smb_io_time("acct_expiry_time", &info->acct_expiry_time, ps, 02397 depth)) 02398 return False; 02399 02400 if (!prs_uint32("acb_info", ps, depth, &info->acb_info)) 02401 return False; 02402 if (!prs_uint8s(False, "nt_pwd", ps, depth, info->nt_pwd, 16)) 02403 return False; 02404 if (!prs_uint8s(False, "lm_pwd", ps, depth, info->lm_pwd, 16)) 02405 return False; 02406 if (!prs_uint8("lm_pwd_present", ps, depth, &info->lm_pwd_present)) 02407 return False; 02408 if (!prs_uint8("nt_pwd_present", ps, depth, &info->nt_pwd_present)) 02409 return False; 02410 if (!prs_uint8("pwd_expired", ps, depth, &info->pwd_expired)) 02411 return False; 02412 02413 if (!smb_io_unihdr("hdr_comment", &info->hdr_comment, ps, depth)) 02414 return False; 02415 if (!smb_io_unihdr("hdr_parameters", &info->hdr_parameters, ps, 02416 depth)) 02417 return False; 02418 if (!prs_uint16("country", ps, depth, &info->country)) 02419 return False; 02420 if (!prs_uint16("codepage", ps, depth, &info->codepage)) 02421 return False; 02422 02423 if (!smb_io_bufhdr2("hdr_priv_data", &hdr_priv_data, ps, depth)) 02424 return False; 02425 if (!smb_io_bufhdr2("hdr_sec_desc", &info->hdr_sec_desc, ps, depth)) 02426 return False; 02427 if (!smb_io_unihdr("hdr_profile", &info->hdr_profile, ps, depth)) 02428 return False; 02429 02430 for (i = 0; i < 3; i++) 02431 { 02432 if (!smb_io_unihdr("hdr_reserved", &info->hdr_reserved[i], 02433 ps, depth)) 02434 return False; 02435 } 02436 02437 for (i = 0; i < 4; i++) 02438 { 02439 if (!prs_uint32("dw_reserved", ps, depth, 02440 &info->dw_reserved[i])) 02441 return False; 02442 } 02443 02444 if (!smb_io_unistr2("uni_acct_name", &info->uni_acct_name, 02445 info->hdr_acct_name.buffer, ps, depth)) 02446 return False; 02447 prs_align(ps); 02448 if (!smb_io_unistr2("uni_full_name", &info->uni_full_name, 02449 info->hdr_full_name.buffer, ps, depth)) 02450 return False; 02451 prs_align(ps); 02452 if (!smb_io_unistr2("uni_home_dir ", &info->uni_home_dir, 02453 info->hdr_home_dir.buffer, ps, depth)) 02454 return False; 02455 prs_align(ps); 02456 if (!smb_io_unistr2("uni_dir_drive", &info->uni_dir_drive, 02457 info->hdr_dir_drive.buffer, ps, depth)) 02458 return False; 02459 prs_align(ps); 02460 if (!smb_io_unistr2("uni_logon_script", &info->uni_logon_script, 02461 info->hdr_logon_script.buffer, ps, depth)) 02462 return False; 02463 prs_align(ps); 02464 if (!smb_io_unistr2("uni_acct_desc", &info->uni_acct_desc, 02465 info->hdr_acct_desc.buffer, ps, depth)) 02466 return False; 02467 prs_align(ps); 02468 if (!smb_io_unistr2("uni_workstations", &info->uni_workstations, 02469 info->hdr_workstations.buffer, ps, depth)) 02470 return False; 02471 prs_align(ps); 02472 02473 if (!prs_uint32("unknown1", ps, depth, &info->unknown1)) 02474 return False; 02475 if (!prs_uint32("unknown2", ps, depth, &info->unknown2)) 02476 return False; 02477 02478 if (!smb_io_rpc_blob("buf_logon_hrs", &info->buf_logon_hrs, ps, depth)) 02479 return False; 02480 prs_align(ps); 02481 if (!smb_io_unistr2("uni_comment", &info->uni_comment, 02482 info->hdr_comment.buffer, ps, depth)) 02483 return False; 02484 prs_align(ps); 02485 if (!smb_io_unistr2("uni_parameters", &info->uni_parameters, 02486 info->hdr_parameters.buffer, ps, depth)) 02487 return False; 02488 prs_align(ps); 02489 if (hdr_priv_data.buffer != 0) 02490 { 02491 int old_offset = 0; 02492 uint32 len = 0x44; 02493 if (!prs_uint32("pwd_len", ps, depth, &len)) 02494 return False; 02495 old_offset = ps->data_offset; 02496 if (len > 0) 02497 { 02498 if (ps->io) 02499 { 02500 /* reading */ 02501 if (!prs_hash1(ps, ps->data_offset, len)) 02502 return False; 02503 } 02504 if (!net_io_sam_passwd_info("pass", &info->pass, 02505 ps, depth)) 02506 return False; 02507 02508 if (!ps->io) 02509 { 02510 /* writing */ 02511 if (!prs_hash1(ps, old_offset, len)) 02512 return False; 02513 } 02514 } 02515 if (old_offset + len > ps->buffer_size) 02516 return False; 02517 ps->data_offset = old_offset + len; 02518 } 02519 if (!smb_io_rpc_blob("buf_sec_desc", &info->buf_sec_desc, ps, depth)) 02520 return False; 02521 prs_align(ps); 02522 if (!smb_io_unistr2("uni_profile", &info->uni_profile, 02523 info->hdr_profile.buffer, ps, depth)) 02524 return False; 02525 02526 prs_align(ps); 02527 02528 return True; 02529 }
static BOOL net_io_sam_group_mem_info | ( | const char * | desc, | |
SAM_GROUP_MEM_INFO * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2534 行で定義されています。
参照先 _prs_struct::buffer_size・_prs_struct::data_offset・_prs_struct::mem_ctx・sam_group_mem_info_info::num_members・sam_group_mem_info_info::num_members2・sam_group_mem_info_info::num_members3・prs_debug()・sam_group_mem_info_info::ptr_attribs・sam_group_mem_info_info::ptr_rids・sam_group_mem_info_info::rids.
02536 { 02537 uint32 i; 02538 fstring tmp; 02539 02540 prs_debug(ps, depth, desc, "net_io_sam_group_mem_info"); 02541 depth++; 02542 02543 prs_align(ps); 02544 if (!prs_uint32("ptr_rids ", ps, depth, &info->ptr_rids)) 02545 return False; 02546 if (!prs_uint32("ptr_attribs", ps, depth, &info->ptr_attribs)) 02547 return False; 02548 if (!prs_uint32("num_members", ps, depth, &info->num_members)) 02549 return False; 02550 02551 if (ps->data_offset + 16 > ps->buffer_size) 02552 return False; 02553 ps->data_offset += 16; 02554 02555 if (info->ptr_rids != 0) 02556 { 02557 if (!prs_uint32("num_members2", ps, depth, 02558 &info->num_members2)) 02559 return False; 02560 02561 if (info->num_members2 != info->num_members) 02562 { 02563 /* RPC fault */ 02564 return False; 02565 } 02566 02567 if (UNMARSHALLING(ps)) { 02568 if (info->num_members2) { 02569 info->rids = TALLOC_ARRAY(ps->mem_ctx, uint32, info->num_members2); 02570 02571 if (info->rids == NULL) { 02572 DEBUG(0, ("out of memory allocating %d rids\n", 02573 info->num_members2)); 02574 return False; 02575 } 02576 } else { 02577 info->rids = NULL; 02578 } 02579 } 02580 02581 for (i = 0; i < info->num_members2; i++) 02582 { 02583 slprintf(tmp, sizeof(tmp) - 1, "rids[%02d]", i); 02584 if (!prs_uint32(tmp, ps, depth, &info->rids[i])) 02585 return False; 02586 } 02587 } 02588 02589 if (info->ptr_attribs != 0) 02590 { 02591 if (!prs_uint32("num_members3", ps, depth, 02592 &info->num_members3)) 02593 return False; 02594 if (info->num_members3 != info->num_members) 02595 { 02596 /* RPC fault */ 02597 return False; 02598 } 02599 02600 if (UNMARSHALLING(ps)) { 02601 if (info->num_members3) { 02602 info->attribs = TALLOC_ARRAY(ps->mem_ctx, uint32, info->num_members3); 02603 02604 if (info->attribs == NULL) { 02605 DEBUG(0, ("out of memory allocating %d attribs\n", 02606 info->num_members3)); 02607 return False; 02608 } 02609 } else { 02610 info->attribs = NULL; 02611 } 02612 } 02613 02614 for (i = 0; i < info->num_members3; i++) 02615 { 02616 slprintf(tmp, sizeof(tmp) - 1, "attribs[%02d]", i); 02617 if (!prs_uint32(tmp, ps, depth, &info->attribs[i])) 02618 return False; 02619 } 02620 } 02621 02622 return True; 02623 }
static BOOL net_io_sam_alias_info | ( | const char * | desc, | |
SAM_ALIAS_INFO * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2628 行で定義されています。
参照先 sam_alias_info_info::als_rid・sam_alias_info_info::buf_sec_desc・UNIHDR::buffer・_prs_struct::buffer_size・_prs_struct::data_offset・sam_alias_info_info::hdr_als_desc・sam_alias_info_info::hdr_als_name・sam_alias_info_info::hdr_sec_desc・prs_debug()・smb_io_bufhdr2()・smb_io_rpc_blob()・smb_io_unihdr()・smb_io_unistr2()・sam_alias_info_info::uni_als_desc・sam_alias_info_info::uni_als_name.
02630 { 02631 prs_debug(ps, depth, desc, "net_io_sam_alias_info"); 02632 depth++; 02633 02634 if (!smb_io_unihdr("hdr_als_name", &info->hdr_als_name, ps, depth)) 02635 return False; 02636 if (!prs_uint32("als_rid", ps, depth, &info->als_rid)) 02637 return False; 02638 if (!smb_io_bufhdr2("hdr_sec_desc", &info->hdr_sec_desc, ps, depth)) 02639 return False; 02640 if (!smb_io_unihdr("hdr_als_desc", &info->hdr_als_desc, ps, depth)) 02641 return False; 02642 02643 if (ps->data_offset + 40 > ps->buffer_size) 02644 return False; 02645 ps->data_offset += 40; 02646 02647 if (!smb_io_unistr2("uni_als_name", &info->uni_als_name, 02648 info->hdr_als_name.buffer, ps, depth)) 02649 return False; 02650 if (!smb_io_rpc_blob("buf_sec_desc", &info->buf_sec_desc, ps, depth)) 02651 return False; 02652 02653 if (!smb_io_unistr2("uni_als_desc", &info->uni_als_desc, 02654 info->hdr_als_desc.buffer, ps, depth)) 02655 return False; 02656 02657 return True; 02658 }
static BOOL net_io_sam_alias_mem_info | ( | const char * | desc, | |
SAM_ALIAS_MEM_INFO * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2663 行で定義されています。
参照先 _prs_struct::buffer_size・_prs_struct::data_offset・_prs_struct::mem_ctx・sam_alias_mem_info_info::num_members・sam_alias_mem_info_info::num_sids・prs_debug()・sam_alias_mem_info_info::ptr_members・sam_alias_mem_info_info::ptr_sids・sam_alias_mem_info_info::sids.
02665 { 02666 uint32 i; 02667 fstring tmp; 02668 02669 prs_debug(ps, depth, desc, "net_io_sam_alias_mem_info"); 02670 depth++; 02671 02672 prs_align(ps); 02673 if (!prs_uint32("num_members", ps, depth, &info->num_members)) 02674 return False; 02675 if (!prs_uint32("ptr_members", ps, depth, &info->ptr_members)) 02676 return False; 02677 02678 if (ps->data_offset + 16 > ps->buffer_size) 02679 return False; 02680 ps->data_offset += 16; 02681 02682 if (info->ptr_members != 0) 02683 { 02684 if (!prs_uint32("num_sids", ps, depth, &info->num_sids)) 02685 return False; 02686 if (info->num_sids != info->num_members) 02687 { 02688 /* RPC fault */ 02689 return False; 02690 } 02691 02692 if (UNMARSHALLING(ps)) { 02693 if (info->num_sids) { 02694 info->ptr_sids = TALLOC_ARRAY(ps->mem_ctx, uint32, info->num_sids); 02695 02696 if (info->ptr_sids == NULL) { 02697 DEBUG(0, ("out of memory allocating %d ptr_sids\n", 02698 info->num_sids)); 02699 return False; 02700 } 02701 } else { 02702 info->ptr_sids = NULL; 02703 } 02704 } 02705 02706 for (i = 0; i < info->num_sids; i++) 02707 { 02708 slprintf(tmp, sizeof(tmp) - 1, "ptr_sids[%02d]", i); 02709 if (!prs_uint32(tmp, ps, depth, &info->ptr_sids[i])) 02710 return False; 02711 } 02712 02713 if (UNMARSHALLING(ps)) { 02714 if (info->num_sids) { 02715 info->sids = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, info->num_sids); 02716 02717 if (info->sids == NULL) { 02718 DEBUG(0, ("error allocating %d sids\n", 02719 info->num_sids)); 02720 return False; 02721 } 02722 } else { 02723 info->sids = NULL; 02724 } 02725 } 02726 02727 for (i = 0; i < info->num_sids; i++) 02728 { 02729 if (info->ptr_sids[i] != 0) 02730 { 02731 slprintf(tmp, sizeof(tmp) - 1, "sids[%02d]", 02732 i); 02733 if (!smb_io_dom_sid2(tmp, &info->sids[i], 02734 ps, depth)) 02735 return False; 02736 } 02737 } 02738 } 02739 02740 return True; 02741 }
static BOOL net_io_sam_policy_info | ( | const char * | desc, | |
SAM_DELTA_POLICY * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2746 行で定義されています。
参照先 SAM_DELTA_POLICY::audit_retention_period・SAM_DELTA_POLICY::auditing_mode・SAM_DELTA_POLICY::buf_sec_desc・SAM_DELTA_POLICY::create_time・SAM_DELTA_POLICY::domain_name・SAM_DELTA_POLICY::domain_sid・SAM_DELTA_POLICY::event_audit_option・SAM_DELTA_POLICY::hdr_dom_name・SAM_DELTA_POLICY::hdr_sec_desc・SAM_DELTA_POLICY::max_log_size・SAM_DELTA_POLICY::max_workset_size・SAM_DELTA_POLICY::min_workset_size・SAM_DELTA_POLICY::modify_time・SAM_DELTA_POLICY::non_paged_pool_limit・SAM_DELTA_POLICY::num_event_audit_options・SAM_DELTA_POLICY::num_events・SAM_DELTA_POLICY::page_file_limit・SAM_DELTA_POLICY::paged_pool_limit・prs_debug()・prs_uint64()・SAM_DELTA_POLICY::ptr_events・SAM_DELTA_POLICY::sid_ptr・smb_io_bufhdr2()・smb_io_dom_sid2()・smb_io_rpc_blob()・smb_io_time()・smb_io_unihdr()・smb_io_unistr2()・SAM_DELTA_POLICY::time_limit.
02748 { 02749 unsigned int i; 02750 prs_debug(ps, depth, desc, "net_io_sam_policy_info"); 02751 depth++; 02752 02753 if(!prs_align(ps)) 02754 return False; 02755 02756 if (!prs_uint32("max_log_size", ps, depth, &info->max_log_size)) 02757 return False; 02758 if (!prs_uint64("audit_retention_period", ps, depth, 02759 &info->audit_retention_period)) 02760 return False; 02761 if (!prs_uint32("auditing_mode", ps, depth, &info->auditing_mode)) 02762 return False; 02763 if (!prs_uint32("num_events", ps, depth, &info->num_events)) 02764 return False; 02765 if (!prs_uint32("ptr_events", ps, depth, &info->ptr_events)) 02766 return False; 02767 02768 if (!smb_io_unihdr("hdr_dom_name", &info->hdr_dom_name, ps, depth)) 02769 return False; 02770 02771 if (!prs_uint32("sid_ptr", ps, depth, &info->sid_ptr)) 02772 return False; 02773 02774 if (!prs_uint32("paged_pool_limit", ps, depth, &info->paged_pool_limit)) 02775 return False; 02776 if (!prs_uint32("non_paged_pool_limit", ps, depth, 02777 &info->non_paged_pool_limit)) 02778 return False; 02779 if (!prs_uint32("min_workset_size", ps, depth, &info->min_workset_size)) 02780 return False; 02781 if (!prs_uint32("max_workset_size", ps, depth, &info->max_workset_size)) 02782 return False; 02783 if (!prs_uint32("page_file_limit", ps, depth, &info->page_file_limit)) 02784 return False; 02785 if (!prs_uint64("time_limit", ps, depth, &info->time_limit)) 02786 return False; 02787 if (!smb_io_time("modify_time", &info->modify_time, ps, depth)) 02788 return False; 02789 if (!smb_io_time("create_time", &info->create_time, ps, depth)) 02790 return False; 02791 if (!smb_io_bufhdr2("hdr_sec_desc", &info->hdr_sec_desc, ps, depth)) 02792 return False; 02793 02794 for (i=0; i<4; i++) { 02795 UNIHDR dummy; 02796 if (!smb_io_unihdr("dummy", &dummy, ps, depth)) 02797 return False; 02798 } 02799 02800 for (i=0; i<4; i++) { 02801 uint32 reserved; 02802 if (!prs_uint32("reserved", ps, depth, &reserved)) 02803 return False; 02804 } 02805 02806 if (!prs_uint32("num_event_audit_options", ps, depth, 02807 &info->num_event_audit_options)) 02808 return False; 02809 02810 for (i=0; i<info->num_event_audit_options; i++) 02811 if (!prs_uint32("event_audit_option", ps, depth, 02812 &info->event_audit_option)) 02813 return False; 02814 02815 if (!smb_io_unistr2("domain_name", &info->domain_name, True, ps, depth)) 02816 return False; 02817 02818 if(!smb_io_dom_sid2("domain_sid", &info->domain_sid, ps, depth)) 02819 return False; 02820 02821 if (!smb_io_rpc_blob("buf_sec_desc", &info->buf_sec_desc, ps, depth)) 02822 02823 return False; 02824 02825 return True; 02826 }
static BOOL net_io_sam_trustdoms_info | ( | const char * | desc, | |
SAM_DELTA_TRUSTDOMS * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2835 行で定義されています。
参照先 SAM_DELTA_TRUSTDOMS::buf_size・SAM_DELTA_TRUSTDOMS::buf_size2・SAM_DELTA_TRUSTDOMS::domain・SAM_DELTA_TRUSTDOMS::hdr_domain・prs_debug()・SAM_DELTA_TRUSTDOMS::ptr・SAM_DELTA_TRUSTDOMS::sec_desc・sec_io_desc()・SAM_DELTA_TRUSTDOMS::sid・smb_io_dom_sid2()・smb_io_unihdr()・smb_io_unistr2()・SAM_DELTA_TRUSTDOMS::unknown0・SAM_DELTA_TRUSTDOMS::unknown1・SAM_DELTA_TRUSTDOMS::unknown2・SAM_DELTA_TRUSTDOMS::unknown3.
02837 { 02838 int i; 02839 02840 prs_debug(ps, depth, desc, "net_io_sam_trustdoms_info"); 02841 depth++; 02842 02843 if(!prs_align(ps)) 02844 return False; 02845 02846 if(!prs_uint32("buf_size", ps, depth, &info->buf_size)) 02847 return False; 02848 02849 if(!sec_io_desc("sec_desc", &info->sec_desc, ps, depth)) 02850 return False; 02851 02852 if(!smb_io_dom_sid2("sid", &info->sid, ps, depth)) 02853 return False; 02854 02855 if(!smb_io_unihdr("hdr_domain", &info->hdr_domain, ps, depth)) 02856 return False; 02857 02858 if(!prs_uint32("unknown0", ps, depth, &info->unknown0)) 02859 return False; 02860 if(!prs_uint32("unknown1", ps, depth, &info->unknown1)) 02861 return False; 02862 if(!prs_uint32("unknown2", ps, depth, &info->unknown2)) 02863 return False; 02864 02865 if(!prs_uint32("buf_size2", ps, depth, &info->buf_size2)) 02866 return False; 02867 if(!prs_uint32("ptr", ps, depth, &info->ptr)) 02868 return False; 02869 02870 for (i=0; i<12; i++) 02871 if(!prs_uint32("unknown3", ps, depth, &info->unknown3)) 02872 return False; 02873 02874 if (!smb_io_unistr2("domain", &info->domain, True, ps, depth)) 02875 return False; 02876 02877 return True; 02878 }
static BOOL net_io_sam_secret_info | ( | const char * | desc, | |
SAM_DELTA_SECRET * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2889 行で定義されています。
参照先 SAM_DELTA_SECRET::buf_size・SAM_DELTA_SECRET::buf_size2・SAM_DELTA_SECRET::buf_size3・SAM_DELTA_SECRET::chal・SAM_DELTA_SECRET::chal_len・SAM_DELTA_SECRET::chal_len2・SAM_DELTA_SECRET::count1・SAM_DELTA_SECRET::count2・SAM_DELTA_SECRET::count3・SAM_DELTA_SECRET::count4・SAM_DELTA_SECRET::key・SAM_DELTA_SECRET::key_len・SAM_DELTA_SECRET::key_len2・prs_debug()・SAM_DELTA_SECRET::ptr・SAM_DELTA_SECRET::ptr2・SAM_DELTA_SECRET::ptr3・SAM_DELTA_SECRET::reserved1・SAM_DELTA_SECRET::reserved2・SAM_DELTA_SECRET::sec_desc・SAM_DELTA_SECRET::sec_desc2・sec_io_desc()・SAM_DELTA_SECRET::secret・smb_io_time()・smb_io_unistr2()・SAM_DELTA_SECRET::time1・SAM_DELTA_SECRET::time2・SAM_DELTA_SECRET::unknow1・SAM_DELTA_SECRET::unknow2.
02891 { 02892 int i; 02893 02894 prs_debug(ps, depth, desc, "net_io_sam_secret_info"); 02895 depth++; 02896 02897 if(!prs_align(ps)) 02898 return False; 02899 02900 if(!prs_uint32("buf_size", ps, depth, &info->buf_size)) 02901 return False; 02902 02903 if(!sec_io_desc("sec_desc", &info->sec_desc, ps, depth)) 02904 return False; 02905 02906 if (!smb_io_unistr2("secret", &info->secret, True, ps, depth)) 02907 return False; 02908 02909 if(!prs_align(ps)) 02910 return False; 02911 02912 if(!prs_uint32("count1", ps, depth, &info->count1)) 02913 return False; 02914 if(!prs_uint32("count2", ps, depth, &info->count2)) 02915 return False; 02916 if(!prs_uint32("ptr", ps, depth, &info->ptr)) 02917 return False; 02918 02919 02920 if(!smb_io_time("time1", &info->time1, ps, depth)) /* logon time */ 02921 return False; 02922 if(!prs_uint32("count3", ps, depth, &info->count3)) 02923 return False; 02924 if(!prs_uint32("count4", ps, depth, &info->count4)) 02925 return False; 02926 if(!prs_uint32("ptr2", ps, depth, &info->ptr2)) 02927 return False; 02928 if(!smb_io_time("time2", &info->time2, ps, depth)) /* logon time */ 02929 return False; 02930 if(!prs_uint32("unknow1", ps, depth, &info->unknow1)) 02931 return False; 02932 02933 02934 if(!prs_uint32("buf_size2", ps, depth, &info->buf_size2)) 02935 return False; 02936 if(!prs_uint32("ptr3", ps, depth, &info->ptr3)) 02937 return False; 02938 for(i=0; i<12; i++) 02939 if(!prs_uint32("unknow2", ps, depth, &info->unknow2)) 02940 return False; 02941 02942 if(!prs_uint32("chal_len", ps, depth, &info->chal_len)) 02943 return False; 02944 if(!prs_uint32("reserved1", ps, depth, &info->reserved1)) 02945 return False; 02946 if(!prs_uint32("chal_len2", ps, depth, &info->chal_len2)) 02947 return False; 02948 02949 if(!prs_uint8s (False, "chal", ps, depth, info->chal, info->chal_len2)) 02950 return False; 02951 02952 if(!prs_uint32("key_len", ps, depth, &info->key_len)) 02953 return False; 02954 if(!prs_uint32("reserved2", ps, depth, &info->reserved2)) 02955 return False; 02956 if(!prs_uint32("key_len2", ps, depth, &info->key_len2)) 02957 return False; 02958 02959 if(!prs_uint8s (False, "key", ps, depth, info->key, info->key_len2)) 02960 return False; 02961 02962 02963 if(!prs_uint32("buf_size3", ps, depth, &info->buf_size3)) 02964 return False; 02965 02966 if(!sec_io_desc("sec_desc2", &info->sec_desc2, ps, depth)) 02967 return False; 02968 02969 02970 return True; 02971 }
static BOOL net_io_sam_privs_info | ( | const char * | desc, | |
SAM_DELTA_PRIVS * | info, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 2978 行で定義されています。
参照先 SAM_DELTA_PRIVS::attribute_count・SAM_DELTA_PRIVS::attributes・SAM_DELTA_PRIVS::hdr_sec_desc・SAM_DELTA_PRIVS::max_workset_size・SAM_DELTA_PRIVS::min_workset_size・SAM_DELTA_PRIVS::non_paged_pool_limit・SAM_DELTA_PRIVS::page_file_limit・SAM_DELTA_PRIVS::paged_pool_limit・SAM_DELTA_PRIVS::priv_attr_ptr・SAM_DELTA_PRIVS::priv_control・SAM_DELTA_PRIVS::priv_count・SAM_DELTA_PRIVS::priv_name_ptr・prs_debug()・prs_uint64()・SAM_DELTA_PRIVS::sid・smb_io_bufhdr2()・smb_io_dom_sid2()・smb_io_unihdr()・SAM_DELTA_PRIVS::system_flags・SAM_DELTA_PRIVS::time_limit.
02980 { 02981 unsigned int i; 02982 02983 prs_debug(ps, depth, desc, "net_io_sam_privs_info"); 02984 depth++; 02985 02986 if(!prs_align(ps)) 02987 return False; 02988 02989 if(!smb_io_dom_sid2("sid", &info->sid, ps, depth)) 02990 return False; 02991 02992 if(!prs_uint32("priv_count", ps, depth, &info->priv_count)) 02993 return False; 02994 if(!prs_uint32("priv_control", ps, depth, &info->priv_control)) 02995 return False; 02996 02997 if(!prs_uint32("priv_attr_ptr", ps, depth, &info->priv_attr_ptr)) 02998 return False; 02999 if(!prs_uint32("priv_name_ptr", ps, depth, &info->priv_name_ptr)) 03000 return False; 03001 03002 if (!prs_uint32("paged_pool_limit", ps, depth, &info->paged_pool_limit)) 03003 return False; 03004 if (!prs_uint32("non_paged_pool_limit", ps, depth, 03005 &info->non_paged_pool_limit)) 03006 return False; 03007 if (!prs_uint32("min_workset_size", ps, depth, &info->min_workset_size)) 03008 return False; 03009 if (!prs_uint32("max_workset_size", ps, depth, &info->max_workset_size)) 03010 return False; 03011 if (!prs_uint32("page_file_limit", ps, depth, &info->page_file_limit)) 03012 return False; 03013 if (!prs_uint64("time_limit", ps, depth, &info->time_limit)) 03014 return False; 03015 if (!prs_uint32("system_flags", ps, depth, &info->system_flags)) 03016 return False; 03017 if (!smb_io_bufhdr2("hdr_sec_desc", &info->hdr_sec_desc, ps, depth)) 03018 return False; 03019 03020 for (i=0; i<4; i++) { 03021 UNIHDR dummy; 03022 if (!smb_io_unihdr("dummy", &dummy, ps, depth)) 03023 return False; 03024 } 03025 03026 for (i=0; i<4; i++) { 03027 uint32 reserved; 03028 if (!prs_uint32("reserved", ps, depth, &reserved)) 03029 return False; 03030 } 03031 03032 if(!prs_uint32("attribute_count", ps, depth, &info->attribute_count)) 03033 return False; 03034 03035 if (UNMARSHALLING(ps)) { 03036 if (info->attribute_count) { 03037 info->attributes = TALLOC_ARRAY(ps->mem_ctx, uint32, info->attribute_count); 03038 if (!info->attributes) { 03039 return False; 03040 } 03041 } else { 03042 info->attributes = NULL; 03043 } 03044 } 03045 03046 for (i=0; i<info->attribute_count; i++) 03047 if(!prs_uint32("attributes", ps, depth, &info->attributes[i])) 03048 return False; 03049 03050 if(!prs_uint32("privlist_count", ps, depth, &info->privlist_count)) 03051 return False; 03052 03053 if (UNMARSHALLING(ps)) { 03054 if (info->privlist_count) { 03055 info->hdr_privslist = TALLOC_ARRAY(ps->mem_ctx, UNIHDR, info->privlist_count); 03056 info->uni_privslist = TALLOC_ARRAY(ps->mem_ctx, UNISTR2, info->privlist_count); 03057 if (!info->hdr_privslist) { 03058 return False; 03059 } 03060 if (!info->uni_privslist) { 03061 return False; 03062 } 03063 } else { 03064 info->hdr_privslist = NULL; 03065 info->uni_privslist = NULL; 03066 } 03067 } 03068 03069 for (i=0; i<info->privlist_count; i++) 03070 if(!smb_io_unihdr("hdr_privslist", &info->hdr_privslist[i], ps, depth)) 03071 return False; 03072 03073 for (i=0; i<info->privlist_count; i++) 03074 if (!smb_io_unistr2("uni_privslist", &info->uni_privslist[i], True, ps, depth)) 03075 return False; 03076 03077 if (!smb_io_rpc_blob("buf_sec_desc", &info->buf_sec_desc, ps, depth)) 03078 return False; 03079 03080 return True; 03081 }
static BOOL net_io_sam_delta_ctr | ( | const char * | desc, | |
SAM_DELTA_CTR * | delta, | |||
uint16 | type, | |||
prs_struct * | ps, | |||
int | depth | |||
) | [static] |
parse_net.c の 3086 行で定義されています。
参照先 sam_delta_ctr_info::account_info・sam_delta_ctr_info::alias_info・sam_delta_ctr_info::als_mem_info・sam_delta_ctr_info::domain_info・sam_delta_ctr_info::group_info・sam_delta_ctr_info::grp_mem_info・sam_delta_ctr_info::mod_count・net_io_sam_account_info()・net_io_sam_alias_info()・net_io_sam_alias_mem_info()・net_io_sam_delta_mod_count()・net_io_sam_domain_info()・net_io_sam_group_info()・net_io_sam_group_mem_info()・net_io_sam_policy_info()・net_io_sam_privs_info()・sam_delta_ctr_info::policy_info・sam_delta_ctr_info::privs_info・prs_debug().
参照元 net_io_r_sam_deltas()・net_io_r_sam_sync().
03089 { 03090 prs_debug(ps, depth, desc, "net_io_sam_delta_ctr"); 03091 depth++; 03092 03093 switch (type) { 03094 /* Seen in sam deltas */ 03095 case SAM_DELTA_MODIFIED_COUNT: 03096 if (!net_io_sam_delta_mod_count("", &delta->mod_count, ps, depth)) 03097 return False; 03098 break; 03099 03100 case SAM_DELTA_DOMAIN_INFO: 03101 if (!net_io_sam_domain_info("", &delta->domain_info, ps, depth)) 03102 return False; 03103 break; 03104 03105 case SAM_DELTA_GROUP_INFO: 03106 if (!net_io_sam_group_info("", &delta->group_info, ps, depth)) 03107 return False; 03108 break; 03109 03110 case SAM_DELTA_ACCOUNT_INFO: 03111 if (!net_io_sam_account_info("", &delta->account_info, ps, depth)) 03112 return False; 03113 break; 03114 03115 case SAM_DELTA_GROUP_MEM: 03116 if (!net_io_sam_group_mem_info("", &delta->grp_mem_info, ps, depth)) 03117 return False; 03118 break; 03119 03120 case SAM_DELTA_ALIAS_INFO: 03121 if (!net_io_sam_alias_info("", &delta->alias_info, ps, depth)) 03122 return False; 03123 break; 03124 03125 case SAM_DELTA_POLICY_INFO: 03126 if (!net_io_sam_policy_info("", &delta->policy_info, ps, depth)) 03127 return False; 03128 break; 03129 03130 case SAM_DELTA_ALIAS_MEM: 03131 if (!net_io_sam_alias_mem_info("", &delta->als_mem_info, ps, depth)) 03132 return False; 03133 break; 03134 03135 case SAM_DELTA_PRIVS_INFO: 03136 if (!net_io_sam_privs_info("", &delta->privs_info, ps, depth)) 03137 return False; 03138 break; 03139 03140 /* These guys are implemented but broken */ 03141 03142 case SAM_DELTA_TRUST_DOMS: 03143 case SAM_DELTA_SECRET_INFO: 03144 break; 03145 03146 /* These guys are not implemented yet */ 03147 03148 case SAM_DELTA_RENAME_GROUP: 03149 case SAM_DELTA_RENAME_USER: 03150 case SAM_DELTA_RENAME_ALIAS: 03151 case SAM_DELTA_DELETE_GROUP: 03152 case SAM_DELTA_DELETE_USER: 03153 default: 03154 DEBUG(0, ("Replication error: Unknown delta type 0x%x\n", type)); 03155 break; 03156 } 03157 03158 return True; 03159 }
BOOL net_io_r_sam_sync | ( | const char * | desc, | |
NET_R_SAM_SYNC * | r_s, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 3164 行で定義されています。
参照先 net_r_sam_sync_info::deltas・net_r_sam_sync_info::hdr_deltas・_prs_struct::mem_ctx・net_io_sam_delta_ctr()・net_io_sam_delta_hdr()・net_r_sam_sync_info::num_deltas・net_r_sam_sync_info::num_deltas2・prs_debug()・net_r_sam_sync_info::ptr_deltas・net_r_sam_sync_info::ptr_deltas2・smb_io_cred()・net_r_sam_sync_info::srv_creds・net_r_sam_sync_info::sync_context・sam_delta_hdr_info::type3.
参照元 rpccli_netlogon_sam_sync().
03166 { 03167 uint32 i; 03168 03169 prs_debug(ps, depth, desc, "net_io_r_sam_sync"); 03170 depth++; 03171 03172 if (!smb_io_cred("srv_creds", &r_s->srv_creds, ps, depth)) 03173 return False; 03174 if (!prs_uint32("sync_context", ps, depth, &r_s->sync_context)) 03175 return False; 03176 03177 if (!prs_uint32("ptr_deltas", ps, depth, &r_s->ptr_deltas)) 03178 return False; 03179 if (r_s->ptr_deltas != 0) 03180 { 03181 if (!prs_uint32("num_deltas ", ps, depth, &r_s->num_deltas)) 03182 return False; 03183 if (!prs_uint32("ptr_deltas2", ps, depth, &r_s->ptr_deltas2)) 03184 return False; 03185 if (r_s->ptr_deltas2 != 0) 03186 { 03187 if (!prs_uint32("num_deltas2", ps, depth, 03188 &r_s->num_deltas2)) 03189 return False; 03190 03191 if (r_s->num_deltas2 != r_s->num_deltas) 03192 { 03193 /* RPC fault */ 03194 return False; 03195 } 03196 03197 if (UNMARSHALLING(ps)) { 03198 if (r_s->num_deltas2) { 03199 r_s->hdr_deltas = TALLOC_ARRAY(ps->mem_ctx, SAM_DELTA_HDR, r_s->num_deltas2); 03200 if (r_s->hdr_deltas == NULL) { 03201 DEBUG(0, ("error tallocating memory " 03202 "for %d delta headers\n", 03203 r_s->num_deltas2)); 03204 return False; 03205 } 03206 } else { 03207 r_s->hdr_deltas = NULL; 03208 } 03209 } 03210 03211 for (i = 0; i < r_s->num_deltas2; i++) 03212 { 03213 if (!net_io_sam_delta_hdr("", 03214 &r_s->hdr_deltas[i], 03215 ps, depth)) 03216 return False; 03217 } 03218 03219 if (UNMARSHALLING(ps)) { 03220 if (r_s->num_deltas2) { 03221 r_s->deltas = TALLOC_ARRAY(ps->mem_ctx, SAM_DELTA_CTR, r_s->num_deltas2); 03222 if (r_s->deltas == NULL) { 03223 DEBUG(0, ("error tallocating memory " 03224 "for %d deltas\n", 03225 r_s->num_deltas2)); 03226 return False; 03227 } 03228 } else { 03229 r_s->deltas = NULL; 03230 } 03231 } 03232 03233 for (i = 0; i < r_s->num_deltas2; i++) 03234 { 03235 if (!net_io_sam_delta_ctr( 03236 "", &r_s->deltas[i], 03237 r_s->hdr_deltas[i].type3, 03238 ps, depth)) { 03239 DEBUG(0, ("hmm, failed on i=%d\n", i)); 03240 return False; 03241 } 03242 } 03243 } 03244 } 03245 03246 prs_align(ps); 03247 if (!prs_ntstatus("status", ps, depth, &(r_s->status))) 03248 return False; 03249 03250 return True; 03251 }
BOOL init_net_q_sam_deltas | ( | NET_Q_SAM_DELTAS * | q_s, | |
const char * | srv_name, | |||
const char * | cli_name, | |||
DOM_CRED * | cli_creds, | |||
uint32 | database_id, | |||
uint64 | dom_mod_count | |||
) |
parse_net.c の 3256 行で定義されています。
参照先 net_q_sam_deltas_info::cli_creds・net_q_sam_deltas_info::database_id・net_q_sam_deltas_info::dom_mod_count・init_unistr2()・net_q_sam_deltas_info::max_size・net_q_sam_deltas_info::ret_creds・net_q_sam_deltas_info::uni_cli_name・net_q_sam_deltas_info::uni_srv_name・UNI_STR_TERMINATE.
参照元 rpccli_netlogon_sam_deltas().
03259 { 03260 DEBUG(5, ("init_net_q_sam_deltas\n")); 03261 03262 init_unistr2(&q_s->uni_srv_name, srv_name, UNI_STR_TERMINATE); 03263 init_unistr2(&q_s->uni_cli_name, cli_name, UNI_STR_TERMINATE); 03264 03265 memcpy(&q_s->cli_creds, cli_creds, sizeof(q_s->cli_creds)); 03266 memset(&q_s->ret_creds, 0, sizeof(q_s->ret_creds)); 03267 03268 q_s->database_id = database_id; 03269 q_s->dom_mod_count = dom_mod_count; 03270 q_s->max_size = 0xffff; 03271 03272 return True; 03273 }
BOOL net_io_q_sam_deltas | ( | const char * | desc, | |
NET_Q_SAM_DELTAS * | q_s, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 3278 行で定義されています。
参照先 net_q_sam_deltas_info::cli_creds・net_q_sam_deltas_info::database_id・net_q_sam_deltas_info::dom_mod_count・net_q_sam_deltas_info::max_size・prs_debug()・prs_uint64()・net_q_sam_deltas_info::ret_creds・smb_io_cred()・smb_io_unistr2()・net_q_sam_deltas_info::uni_cli_name・net_q_sam_deltas_info::uni_srv_name.
参照元 rpccli_netlogon_sam_deltas().
03280 { 03281 prs_debug(ps, depth, desc, "net_io_q_sam_deltas"); 03282 depth++; 03283 03284 if (!smb_io_unistr2("", &q_s->uni_srv_name, True, ps, depth)) 03285 return False; 03286 if (!smb_io_unistr2("", &q_s->uni_cli_name, True, ps, depth)) 03287 return False; 03288 03289 if (!smb_io_cred("", &q_s->cli_creds, ps, depth)) 03290 return False; 03291 if (!smb_io_cred("", &q_s->ret_creds, ps, depth)) 03292 return False; 03293 03294 if (!prs_uint32("database_id ", ps, depth, &q_s->database_id)) 03295 return False; 03296 if (!prs_uint64("dom_mod_count", ps, depth, &q_s->dom_mod_count)) 03297 return False; 03298 if (!prs_uint32("max_size", ps, depth, &q_s->max_size)) 03299 return False; 03300 03301 return True; 03302 }
BOOL net_io_r_sam_deltas | ( | const char * | desc, | |
NET_R_SAM_DELTAS * | r_s, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 3307 行で定義されています。
参照先 net_r_sam_deltas_info::deltas・net_r_sam_deltas_info::dom_mod_count・net_r_sam_deltas_info::hdr_deltas・_prs_struct::mem_ctx・net_io_sam_delta_ctr()・net_io_sam_delta_hdr()・net_r_sam_deltas_info::num_deltas・net_r_sam_deltas_info::num_deltas2・prs_debug()・prs_uint64()・net_r_sam_deltas_info::ptr_deltas・smb_io_cred()・net_r_sam_deltas_info::srv_creds・sam_delta_hdr_info::type2.
参照元 rpccli_netlogon_sam_deltas().
03309 { 03310 unsigned int i; 03311 03312 prs_debug(ps, depth, desc, "net_io_r_sam_deltas"); 03313 depth++; 03314 03315 if (!smb_io_cred("srv_creds", &r_s->srv_creds, ps, depth)) 03316 return False; 03317 if (!prs_uint64("dom_mod_count", ps, depth, &r_s->dom_mod_count)) 03318 return False; 03319 03320 if (!prs_uint32("ptr_deltas", ps, depth, &r_s->ptr_deltas)) 03321 return False; 03322 if (!prs_uint32("num_deltas", ps, depth, &r_s->num_deltas)) 03323 return False; 03324 if (!prs_uint32("ptr_deltas2", ps, depth, &r_s->num_deltas2)) 03325 return False; 03326 03327 if (r_s->num_deltas2 != 0) 03328 { 03329 if (!prs_uint32("num_deltas2 ", ps, depth, &r_s->num_deltas2)) 03330 return False; 03331 03332 if (r_s->ptr_deltas != 0) 03333 { 03334 if (UNMARSHALLING(ps)) { 03335 if (r_s->num_deltas) { 03336 r_s->hdr_deltas = TALLOC_ARRAY(ps->mem_ctx, SAM_DELTA_HDR, r_s->num_deltas); 03337 if (r_s->hdr_deltas == NULL) { 03338 DEBUG(0, ("error tallocating memory " 03339 "for %d delta headers\n", 03340 r_s->num_deltas)); 03341 return False; 03342 } 03343 } else { 03344 r_s->hdr_deltas = NULL; 03345 } 03346 } 03347 03348 for (i = 0; i < r_s->num_deltas; i++) 03349 { 03350 net_io_sam_delta_hdr("", &r_s->hdr_deltas[i], 03351 ps, depth); 03352 } 03353 03354 if (UNMARSHALLING(ps)) { 03355 if (r_s->num_deltas) { 03356 r_s->deltas = TALLOC_ARRAY(ps->mem_ctx, SAM_DELTA_CTR, r_s->num_deltas); 03357 if (r_s->deltas == NULL) { 03358 DEBUG(0, ("error tallocating memory " 03359 "for %d deltas\n", 03360 r_s->num_deltas)); 03361 return False; 03362 } 03363 } else { 03364 r_s->deltas = NULL; 03365 } 03366 } 03367 03368 for (i = 0; i < r_s->num_deltas; i++) 03369 { 03370 if (!net_io_sam_delta_ctr( 03371 "", 03372 &r_s->deltas[i], 03373 r_s->hdr_deltas[i].type2, 03374 ps, depth)) 03375 03376 return False; 03377 } 03378 } 03379 } 03380 03381 prs_align(ps); 03382 if (!prs_ntstatus("status", ps, depth, &r_s->status)) 03383 return False; 03384 03385 return True; 03386 }
void init_net_q_dsr_getdcname | ( | NET_Q_DSR_GETDCNAME * | r_t, | |
const char * | server_unc, | |||
const char * | domain_name, | |||
struct GUID * | domain_guid, | |||
struct GUID * | site_guid, | |||
uint32_t | flags | |||
) |
parse_net.c の 3392 行で定義されています。
参照先 net_q_dsr_getdcname::domain_guid・net_q_dsr_getdcname::flags・init_unistr2()・net_q_dsr_getdcname::ptr_domain_guid・net_q_dsr_getdcname::ptr_domain_name・net_q_dsr_getdcname::ptr_server_unc・net_q_dsr_getdcname::ptr_site_guid・net_q_dsr_getdcname::site_guid・net_q_dsr_getdcname::uni_domain_name・net_q_dsr_getdcname::uni_server_unc・UNI_STR_TERMINATE.
参照元 rpccli_netlogon_dsr_getdcname().
03397 { 03398 DEBUG(5, ("init_net_q_dsr_getdcname\n")); 03399 03400 r_t->ptr_server_unc = (server_unc != NULL); 03401 init_unistr2(&r_t->uni_server_unc, server_unc, UNI_STR_TERMINATE); 03402 03403 r_t->ptr_domain_name = (domain_name != NULL); 03404 init_unistr2(&r_t->uni_domain_name, domain_name, UNI_STR_TERMINATE); 03405 03406 r_t->ptr_domain_guid = (domain_guid != NULL); 03407 r_t->domain_guid = domain_guid; 03408 03409 r_t->ptr_site_guid = (site_guid != NULL); 03410 r_t->site_guid = site_guid; 03411 03412 r_t->flags = flags; 03413 }
void init_net_q_dsr_getdcnameex | ( | NET_Q_DSR_GETDCNAMEEX * | r_t, | |
const char * | server_unc, | |||
const char * | domain_name, | |||
struct GUID * | domain_guid, | |||
const char * | site_name, | |||
uint32_t | flags | |||
) |
parse_net.c の 3419 行で定義されています。
参照先 net_q_dsr_getdcnameex::domain_guid・net_q_dsr_getdcnameex::flags・init_unistr2()・net_q_dsr_getdcnameex::ptr_domain_guid・net_q_dsr_getdcnameex::ptr_domain_name・net_q_dsr_getdcnameex::ptr_server_unc・net_q_dsr_getdcnameex::ptr_site_name・net_q_dsr_getdcnameex::uni_domain_name・net_q_dsr_getdcnameex::uni_server_unc・net_q_dsr_getdcnameex::uni_site_name・UNI_STR_TERMINATE.
参照元 rpccli_netlogon_dsr_getdcnameex().
03424 { 03425 DEBUG(5, ("init_net_q_dsr_getdcnameex\n")); 03426 03427 r_t->ptr_server_unc = (server_unc != NULL); 03428 init_unistr2(&r_t->uni_server_unc, server_unc, UNI_STR_TERMINATE); 03429 03430 r_t->ptr_domain_name = (domain_name != NULL); 03431 init_unistr2(&r_t->uni_domain_name, domain_name, UNI_STR_TERMINATE); 03432 03433 r_t->ptr_domain_guid = (domain_guid != NULL); 03434 r_t->domain_guid = domain_guid; 03435 03436 r_t->ptr_site_name = (site_name != NULL); 03437 init_unistr2(&r_t->uni_site_name, site_name, UNI_STR_TERMINATE); 03438 03439 r_t->flags = flags; 03440 }
void init_net_q_dsr_getdcnameex2 | ( | NET_Q_DSR_GETDCNAMEEX2 * | r_t, | |
const char * | server_unc, | |||
const char * | domain_name, | |||
const char * | client_account, | |||
uint32 | mask, | |||
struct GUID * | domain_guid, | |||
const char * | site_name, | |||
uint32_t | flags | |||
) |
parse_net.c の 3446 行で定義されています。
参照先 net_q_dsr_getdcnameex2::domain_guid・net_q_dsr_getdcnameex2::flags・init_unistr2()・net_q_dsr_getdcnameex2::mask・net_q_dsr_getdcnameex2::ptr_client_account・net_q_dsr_getdcnameex2::ptr_domain_guid・net_q_dsr_getdcnameex2::ptr_domain_name・net_q_dsr_getdcnameex2::ptr_server_unc・net_q_dsr_getdcnameex2::ptr_site_name・net_q_dsr_getdcnameex2::uni_client_account・net_q_dsr_getdcnameex2::uni_domain_name・net_q_dsr_getdcnameex2::uni_server_unc・net_q_dsr_getdcnameex2::uni_site_name・UNI_STR_TERMINATE.
参照元 rpccli_netlogon_dsr_getdcnameex2().
03453 { 03454 DEBUG(5, ("init_net_q_dsr_getdcnameex2\n")); 03455 03456 r_t->ptr_server_unc = (server_unc != NULL); 03457 init_unistr2(&r_t->uni_server_unc, server_unc, UNI_STR_TERMINATE); 03458 03459 r_t->ptr_client_account = (client_account != NULL); 03460 init_unistr2(&r_t->uni_client_account, client_account, UNI_STR_TERMINATE); 03461 03462 r_t->mask = mask; 03463 03464 r_t->ptr_domain_name = (domain_name != NULL); 03465 init_unistr2(&r_t->uni_domain_name, domain_name, UNI_STR_TERMINATE); 03466 03467 r_t->ptr_domain_guid = (domain_guid != NULL); 03468 r_t->domain_guid = domain_guid; 03469 03470 r_t->ptr_site_name = (site_name != NULL); 03471 init_unistr2(&r_t->uni_site_name, site_name, UNI_STR_TERMINATE); 03472 03473 r_t->flags = flags; 03474 }
BOOL net_io_q_dsr_getdcname | ( | const char * | desc, | |
NET_Q_DSR_GETDCNAME * | r_t, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 3480 行で定義されています。
参照先 net_q_dsr_getdcname::domain_guid・net_q_dsr_getdcname::flags・prs_debug()・net_q_dsr_getdcname::ptr_domain_guid・net_q_dsr_getdcname::ptr_domain_name・net_q_dsr_getdcname::ptr_server_unc・net_q_dsr_getdcname::ptr_site_guid・net_q_dsr_getdcname::site_guid・smb_io_unistr2()・smb_io_uuid()・net_q_dsr_getdcname::uni_domain_name・net_q_dsr_getdcname::uni_server_unc.
参照元 rpccli_netlogon_dsr_getdcname().
03482 { 03483 if (r_t == NULL) 03484 return False; 03485 03486 prs_debug(ps, depth, desc, "net_io_q_dsr_getdcname"); 03487 depth++; 03488 03489 if (!prs_uint32("ptr_server_unc", ps, depth, &r_t->ptr_server_unc)) 03490 return False; 03491 03492 if (!smb_io_unistr2("server_unc", &r_t->uni_server_unc, 03493 r_t->ptr_server_unc, ps, depth)) 03494 return False; 03495 03496 if (!prs_align(ps)) 03497 return False; 03498 03499 if (!prs_uint32("ptr_domain_name", ps, depth, &r_t->ptr_domain_name)) 03500 return False; 03501 03502 if (!smb_io_unistr2("domain_name", &r_t->uni_domain_name, 03503 r_t->ptr_domain_name, ps, depth)) 03504 return False; 03505 03506 if (!prs_align(ps)) 03507 return False; 03508 03509 if (!prs_uint32("ptr_domain_guid", ps, depth, &r_t->ptr_domain_guid)) 03510 return False; 03511 03512 if (UNMARSHALLING(ps) && (r_t->ptr_domain_guid)) { 03513 r_t->domain_guid = PRS_ALLOC_MEM(ps, struct GUID, 1); 03514 if (r_t->domain_guid == NULL) 03515 return False; 03516 } 03517 03518 if ((r_t->ptr_domain_guid) && 03519 (!smb_io_uuid("domain_guid", r_t->domain_guid, ps, depth))) 03520 return False; 03521 03522 if (!prs_align(ps)) 03523 return False; 03524 03525 if (!prs_uint32("ptr_site_guid", ps, depth, &r_t->ptr_site_guid)) 03526 return False; 03527 03528 if (UNMARSHALLING(ps) && (r_t->ptr_site_guid)) { 03529 r_t->site_guid = PRS_ALLOC_MEM(ps, struct GUID, 1); 03530 if (r_t->site_guid == NULL) 03531 return False; 03532 } 03533 03534 if ((r_t->ptr_site_guid) && 03535 (!smb_io_uuid("site_guid", r_t->site_guid, ps, depth))) 03536 return False; 03537 03538 if (!prs_align(ps)) 03539 return False; 03540 03541 if (!prs_uint32("flags", ps, depth, &r_t->flags)) 03542 return False; 03543 03544 return True; 03545 }
BOOL net_io_q_dsr_getdcnameex | ( | const char * | desc, | |
NET_Q_DSR_GETDCNAMEEX * | r_t, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 3551 行で定義されています。
参照先 net_q_dsr_getdcnameex::domain_guid・net_q_dsr_getdcnameex::flags・prs_debug()・net_q_dsr_getdcnameex::ptr_domain_guid・net_q_dsr_getdcnameex::ptr_domain_name・net_q_dsr_getdcnameex::ptr_server_unc・net_q_dsr_getdcnameex::ptr_site_name・smb_io_unistr2()・smb_io_uuid()・net_q_dsr_getdcnameex::uni_domain_name・net_q_dsr_getdcnameex::uni_server_unc・net_q_dsr_getdcnameex::uni_site_name.
参照元 rpccli_netlogon_dsr_getdcnameex().
03553 { 03554 if (r_t == NULL) 03555 return False; 03556 03557 prs_debug(ps, depth, desc, "net_io_q_dsr_getdcnameex"); 03558 depth++; 03559 03560 if (!prs_uint32("ptr_server_unc", ps, depth, &r_t->ptr_server_unc)) 03561 return False; 03562 03563 if (!smb_io_unistr2("server_unc", &r_t->uni_server_unc, 03564 r_t->ptr_server_unc, ps, depth)) 03565 return False; 03566 03567 if (!prs_align(ps)) 03568 return False; 03569 03570 if (!prs_uint32("ptr_domain_name", ps, depth, &r_t->ptr_domain_name)) 03571 return False; 03572 03573 if (!smb_io_unistr2("domain_name", &r_t->uni_domain_name, 03574 r_t->ptr_domain_name, ps, depth)) 03575 return False; 03576 03577 if (!prs_align(ps)) 03578 return False; 03579 03580 if (!prs_uint32("ptr_domain_guid", ps, depth, &r_t->ptr_domain_guid)) 03581 return False; 03582 03583 if (UNMARSHALLING(ps) && (r_t->ptr_domain_guid)) { 03584 r_t->domain_guid = PRS_ALLOC_MEM(ps, struct GUID, 1); 03585 if (r_t->domain_guid == NULL) 03586 return False; 03587 } 03588 03589 if ((r_t->ptr_domain_guid) && 03590 (!smb_io_uuid("domain_guid", r_t->domain_guid, ps, depth))) 03591 return False; 03592 03593 if (!prs_align(ps)) 03594 return False; 03595 03596 if (!prs_uint32("ptr_site_name", ps, depth, &r_t->ptr_site_name)) 03597 return False; 03598 03599 if (!smb_io_unistr2("site_name", &r_t->uni_site_name, 03600 r_t->ptr_site_name, ps, depth)) 03601 return False; 03602 03603 if (!prs_align(ps)) 03604 return False; 03605 03606 if (!prs_uint32("flags", ps, depth, &r_t->flags)) 03607 return False; 03608 03609 return True; 03610 }
BOOL net_io_q_dsr_getdcnameex2 | ( | const char * | desc, | |
NET_Q_DSR_GETDCNAMEEX2 * | r_t, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 3616 行で定義されています。
参照先 net_q_dsr_getdcnameex2::domain_guid・net_q_dsr_getdcnameex2::flags・net_q_dsr_getdcnameex2::mask・prs_debug()・net_q_dsr_getdcnameex2::ptr_client_account・net_q_dsr_getdcnameex2::ptr_domain_guid・net_q_dsr_getdcnameex2::ptr_domain_name・net_q_dsr_getdcnameex2::ptr_server_unc・net_q_dsr_getdcnameex2::ptr_site_name・smb_io_unistr2()・smb_io_uuid()・net_q_dsr_getdcnameex2::uni_client_account・net_q_dsr_getdcnameex2::uni_domain_name・net_q_dsr_getdcnameex2::uni_server_unc・net_q_dsr_getdcnameex2::uni_site_name.
参照元 rpccli_netlogon_dsr_getdcnameex2().
03618 { 03619 if (r_t == NULL) 03620 return False; 03621 03622 prs_debug(ps, depth, desc, "net_io_q_dsr_getdcnameex2"); 03623 depth++; 03624 03625 if (!prs_uint32("ptr_server_unc", ps, depth, &r_t->ptr_server_unc)) 03626 return False; 03627 03628 if (!smb_io_unistr2("server_unc", &r_t->uni_server_unc, 03629 r_t->ptr_server_unc, ps, depth)) 03630 return False; 03631 03632 if (!prs_align(ps)) 03633 return False; 03634 03635 if (!prs_uint32("ptr_client_account", ps, depth, &r_t->ptr_client_account)) 03636 return False; 03637 03638 if (!smb_io_unistr2("client_account", &r_t->uni_client_account, 03639 r_t->ptr_client_account, ps, depth)) 03640 return False; 03641 03642 if (!prs_align(ps)) 03643 return False; 03644 03645 if (!prs_uint32("mask", ps, depth, &r_t->mask)) 03646 return False; 03647 03648 if (!prs_align(ps)) 03649 return False; 03650 03651 if (!prs_uint32("ptr_domain_name", ps, depth, &r_t->ptr_domain_name)) 03652 return False; 03653 03654 if (!smb_io_unistr2("domain_name", &r_t->uni_domain_name, 03655 r_t->ptr_domain_name, ps, depth)) 03656 return False; 03657 03658 if (!prs_align(ps)) 03659 return False; 03660 03661 if (!prs_uint32("ptr_domain_guid", ps, depth, &r_t->ptr_domain_guid)) 03662 return False; 03663 03664 if (UNMARSHALLING(ps) && (r_t->ptr_domain_guid)) { 03665 r_t->domain_guid = PRS_ALLOC_MEM(ps, struct GUID, 1); 03666 if (r_t->domain_guid == NULL) 03667 return False; 03668 } 03669 03670 if ((r_t->ptr_domain_guid) && 03671 (!smb_io_uuid("domain_guid", r_t->domain_guid, ps, depth))) 03672 return False; 03673 03674 if (!prs_align(ps)) 03675 return False; 03676 03677 if (!prs_uint32("ptr_site_name", ps, depth, &r_t->ptr_site_name)) 03678 return False; 03679 03680 if (!smb_io_unistr2("site_name", &r_t->uni_site_name, 03681 r_t->ptr_site_name, ps, depth)) 03682 return False; 03683 03684 if (!prs_align(ps)) 03685 return False; 03686 03687 if (!prs_uint32("flags", ps, depth, &r_t->flags)) 03688 return False; 03689 03690 return True; 03691 }
void init_net_r_dsr_getdcname | ( | NET_R_DSR_GETDCNAME * | r_t, | |
const char * | dc_unc, | |||
const char * | dc_address, | |||
int32 | dc_address_type, | |||
struct GUID | domain_guid, | |||
const char * | domain_name, | |||
const char * | forest_name, | |||
uint32 | dc_flags, | |||
const char * | dc_site_name, | |||
const char * | client_site_name | |||
) |
parse_net.c の 3698 行で定義されています。
参照先 net_r_dsr_getdcname::dc_address_type・net_r_dsr_getdcname::dc_flags・net_r_dsr_getdcname::domain_guid・init_unistr2()・net_r_dsr_getdcname::ptr_client_site_name・net_r_dsr_getdcname::ptr_dc_address・net_r_dsr_getdcname::ptr_dc_site_name・net_r_dsr_getdcname::ptr_dc_unc・net_r_dsr_getdcname::ptr_domain_name・net_r_dsr_getdcname::ptr_forest_name・net_r_dsr_getdcname::uni_client_site_name・net_r_dsr_getdcname::uni_dc_address・net_r_dsr_getdcname::uni_dc_site_name・net_r_dsr_getdcname::uni_dc_unc・net_r_dsr_getdcname::uni_domain_name・net_r_dsr_getdcname::uni_forest_name・UNI_STR_TERMINATE.
03704 { 03705 DEBUG(5, ("init_net_q_dsr_getdcname\n")); 03706 03707 r_t->ptr_dc_unc = (dc_unc != NULL); 03708 init_unistr2(&r_t->uni_dc_unc, dc_unc, UNI_STR_TERMINATE); 03709 03710 r_t->ptr_dc_address = (dc_address != NULL); 03711 init_unistr2(&r_t->uni_dc_address, dc_address, UNI_STR_TERMINATE); 03712 03713 r_t->dc_address_type = dc_address_type; 03714 r_t->domain_guid = domain_guid; 03715 03716 r_t->ptr_domain_name = (domain_name != NULL); 03717 init_unistr2(&r_t->uni_domain_name, domain_name, UNI_STR_TERMINATE); 03718 03719 r_t->ptr_forest_name = (forest_name != NULL); 03720 init_unistr2(&r_t->uni_forest_name, forest_name, UNI_STR_TERMINATE); 03721 03722 r_t->dc_flags = dc_flags; 03723 03724 r_t->ptr_dc_site_name = (dc_site_name != NULL); 03725 init_unistr2(&r_t->uni_dc_site_name, dc_site_name, UNI_STR_TERMINATE); 03726 03727 r_t->ptr_client_site_name = (client_site_name != NULL); 03728 init_unistr2(&r_t->uni_client_site_name, client_site_name, 03729 UNI_STR_TERMINATE); 03730 }
BOOL net_io_r_dsr_getdcname | ( | const char * | desc, | |
NET_R_DSR_GETDCNAME * | r_t, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 3736 行で定義されています。
参照先 net_r_dsr_getdcname::dc_address_type・net_r_dsr_getdcname::dc_flags・net_r_dsr_getdcname::domain_guid・prs_debug()・net_r_dsr_getdcname::ptr_client_site_name・net_r_dsr_getdcname::ptr_dc_address・net_r_dsr_getdcname::ptr_dc_site_name・net_r_dsr_getdcname::ptr_dc_unc・net_r_dsr_getdcname::ptr_domain_name・net_r_dsr_getdcname::ptr_forest_name・net_r_dsr_getdcname::result・smb_io_unistr2()・smb_io_uuid()・net_r_dsr_getdcname::uni_client_site_name・net_r_dsr_getdcname::uni_dc_address・net_r_dsr_getdcname::uni_dc_site_name・net_r_dsr_getdcname::uni_dc_unc・net_r_dsr_getdcname::uni_domain_name・net_r_dsr_getdcname::uni_forest_name.
参照元 rpccli_netlogon_dsr_getdcname()・rpccli_netlogon_dsr_getdcnameex()・rpccli_netlogon_dsr_getdcnameex2().
03738 { 03739 uint32 info_ptr = 1; 03740 03741 if (r_t == NULL) 03742 return False; 03743 03744 prs_debug(ps, depth, desc, "net_io_r_dsr_getdcname"); 03745 depth++; 03746 03747 /* The reply contains *just* an info struct, this is the ptr to it */ 03748 if (!prs_uint32("info_ptr", ps, depth, &info_ptr)) 03749 return False; 03750 03751 if (info_ptr == 0) 03752 return False; 03753 03754 if (!prs_uint32("ptr_dc_unc", ps, depth, &r_t->ptr_dc_unc)) 03755 return False; 03756 03757 if (!prs_uint32("ptr_dc_address", ps, depth, &r_t->ptr_dc_address)) 03758 return False; 03759 03760 if (!prs_int32("dc_address_type", ps, depth, &r_t->dc_address_type)) 03761 return False; 03762 03763 if (!smb_io_uuid("domain_guid", &r_t->domain_guid, ps, depth)) 03764 return False; 03765 03766 if (!prs_uint32("ptr_domain_name", ps, depth, &r_t->ptr_domain_name)) 03767 return False; 03768 03769 if (!prs_uint32("ptr_forest_name", ps, depth, &r_t->ptr_forest_name)) 03770 return False; 03771 03772 if (!prs_uint32("dc_flags", ps, depth, &r_t->dc_flags)) 03773 return False; 03774 03775 if (!prs_uint32("ptr_dc_site_name", ps, depth, &r_t->ptr_dc_site_name)) 03776 return False; 03777 03778 if (!prs_uint32("ptr_client_site_name", ps, depth, 03779 &r_t->ptr_client_site_name)) 03780 return False; 03781 03782 if (!prs_align(ps)) 03783 return False; 03784 03785 if (!smb_io_unistr2("dc_unc", &r_t->uni_dc_unc, 03786 r_t->ptr_dc_unc, ps, depth)) 03787 return False; 03788 03789 if (!prs_align(ps)) 03790 return False; 03791 03792 if (!smb_io_unistr2("dc_address", &r_t->uni_dc_address, 03793 r_t->ptr_dc_address, ps, depth)) 03794 return False; 03795 03796 if (!prs_align(ps)) 03797 return False; 03798 03799 if (!smb_io_unistr2("domain_name", &r_t->uni_domain_name, 03800 r_t->ptr_domain_name, ps, depth)) 03801 return False; 03802 03803 if (!prs_align(ps)) 03804 return False; 03805 03806 if (!smb_io_unistr2("forest_name", &r_t->uni_forest_name, 03807 r_t->ptr_forest_name, ps, depth)) 03808 return False; 03809 03810 if (!prs_align(ps)) 03811 return False; 03812 03813 if (!smb_io_unistr2("dc_site_name", &r_t->uni_dc_site_name, 03814 r_t->ptr_dc_site_name, ps, depth)) 03815 return False; 03816 03817 if (!prs_align(ps)) 03818 return False; 03819 03820 if (!smb_io_unistr2("client_site_name", &r_t->uni_client_site_name, 03821 r_t->ptr_client_site_name, ps, depth)) 03822 return False; 03823 03824 if (!prs_align(ps)) 03825 return False; 03826 03827 if (!prs_werror("result", ps, depth, &r_t->result)) 03828 return False; 03829 03830 return True; 03831 }
void init_net_q_dsr_getsitename | ( | NET_Q_DSR_GETSITENAME * | r_t, | |
const char * | computer_name | |||
) |
parse_net.c の 3837 行で定義されています。
参照先 init_unistr2()・net_q_dsr_getsitename::ptr_computer_name・net_q_dsr_getsitename::uni_computer_name・UNI_STR_TERMINATE.
参照元 rpccli_netlogon_dsr_getsitename().
03838 { 03839 DEBUG(5, ("init_net_q_dsr_getsitename\n")); 03840 03841 r_t->ptr_computer_name = (computer_name != NULL); 03842 init_unistr2(&r_t->uni_computer_name, computer_name, UNI_STR_TERMINATE); 03843 }
BOOL net_io_q_dsr_getsitename | ( | const char * | desc, | |
NET_Q_DSR_GETSITENAME * | r_t, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 3849 行で定義されています。
参照先 prs_debug()・net_q_dsr_getsitename::ptr_computer_name・smb_io_unistr2()・net_q_dsr_getsitename::uni_computer_name.
参照元 rpccli_netlogon_dsr_getsitename().
03851 { 03852 if (r_t == NULL) 03853 return False; 03854 03855 prs_debug(ps, depth, desc, "net_io_q_dsr_getsitename"); 03856 depth++; 03857 03858 if (!prs_uint32("ptr_computer_name", ps, depth, &r_t->ptr_computer_name)) 03859 return False; 03860 03861 if (!smb_io_unistr2("computer_name", &r_t->uni_computer_name, 03862 r_t->ptr_computer_name, ps, depth)) 03863 return False; 03864 03865 if (!prs_align(ps)) 03866 return False; 03867 03868 return True; 03869 }
BOOL net_io_r_dsr_getsitename | ( | const char * | desc, | |
NET_R_DSR_GETSITENAME * | r_t, | |||
prs_struct * | ps, | |||
int | depth | |||
) |
parse_net.c の 3875 行で定義されています。
参照先 prs_debug()・net_r_dsr_getsitename::ptr_site_name・net_r_dsr_getsitename::result・smb_io_unistr2()・net_r_dsr_getsitename::uni_site_name.
参照元 rpccli_netlogon_dsr_getsitename().
03877 { 03878 if (r_t == NULL) 03879 return False; 03880 03881 prs_debug(ps, depth, desc, "net_io_r_dsr_getsitename"); 03882 depth++; 03883 03884 if (!prs_uint32("ptr_site_name", ps, depth, &r_t->ptr_site_name)) 03885 return False; 03886 03887 if (!prs_align(ps)) 03888 return False; 03889 03890 if (!smb_io_unistr2("site_name", &r_t->uni_site_name, 03891 r_t->ptr_site_name, ps, depth)) 03892 return False; 03893 03894 if (!prs_align(ps)) 03895 return False; 03896 03897 if (!prs_werror("result", ps, depth, &r_t->result)) 03898 return False; 03899 03900 return True; 03901 }