Lines Matching refs:sr

55 smb_pre_create_directory(smb_request_t *sr)  in smb_pre_create_directory()  argument
59 rc = smbsr_decode_data(sr, "%S", sr, in smb_pre_create_directory()
60 &sr->arg.dirop.fqi.fq_path.pn_path); in smb_pre_create_directory()
62 DTRACE_SMB_START(op__CreateDirectory, smb_request_t *, sr); in smb_pre_create_directory()
68 smb_post_create_directory(smb_request_t *sr) in smb_post_create_directory() argument
70 DTRACE_SMB_DONE(op__CreateDirectory, smb_request_t *, sr); in smb_post_create_directory()
74 smb_com_create_directory(smb_request_t *sr) in smb_com_create_directory() argument
77 smb_pathname_t *pn = &sr->arg.dirop.fqi.fq_path; in smb_com_create_directory()
79 if (!STYPE_ISDSK(sr->tid_tree->t_res_type)) { in smb_com_create_directory()
80 smbsr_error(sr, NT_STATUS_ACCESS_DENIED, in smb_com_create_directory()
85 smb_pathname_init(sr, pn, pn->pn_path); in smb_com_create_directory()
86 if (!smb_pathname_validate(sr, pn) || in smb_com_create_directory()
87 !smb_validate_dirname(sr, pn)) { in smb_com_create_directory()
91 if ((rc = smb_common_create_directory(sr)) != 0) { in smb_com_create_directory()
92 smbsr_errno(sr, rc); in smb_com_create_directory()
96 rc = smbsr_encode_empty_result(sr); in smb_com_create_directory()
110 smb_common_create_directory(smb_request_t *sr) in smb_common_create_directory() argument
117 fqi = &sr->arg.dirop.fqi; in smb_common_create_directory()
118 tnode = sr->tid_tree->t_snode; in smb_common_create_directory()
120 rc = smb_pathname_reduce(sr, sr->user_cr, fqi->fq_path.pn_path, in smb_common_create_directory()
131 rc = smb_fsop_lookup(sr, sr->user_cr, SMB_FOLLOW_LINKS, in smb_common_create_directory()
143 rc = smb_fsop_access(sr, sr->user_cr, fqi->fq_dnode, in smb_common_create_directory()
161 rc = smb_fsop_mkdir(sr, sr->user_cr, fqi->fq_dnode, fqi->fq_last_comp, in smb_common_create_directory()
168 sr->arg.open.create_options = FILE_DIRECTORY_FILE; in smb_common_create_directory()
201 smb_pre_delete_directory(smb_request_t *sr) in smb_pre_delete_directory() argument
205 rc = smbsr_decode_data(sr, "%S", sr, in smb_pre_delete_directory()
206 &sr->arg.dirop.fqi.fq_path.pn_path); in smb_pre_delete_directory()
208 DTRACE_SMB_START(op__DeleteDirectory, smb_request_t *, sr); in smb_pre_delete_directory()
214 smb_post_delete_directory(smb_request_t *sr) in smb_post_delete_directory() argument
216 DTRACE_SMB_DONE(op__DeleteDirectory, smb_request_t *, sr); in smb_post_delete_directory()
220 smb_com_delete_directory(smb_request_t *sr) in smb_com_delete_directory() argument
227 if (!STYPE_ISDSK(sr->tid_tree->t_res_type)) { in smb_com_delete_directory()
228 smbsr_error(sr, NT_STATUS_ACCESS_DENIED, in smb_com_delete_directory()
233 fqi = &sr->arg.dirop.fqi; in smb_com_delete_directory()
234 tnode = sr->tid_tree->t_snode; in smb_com_delete_directory()
236 smb_pathname_init(sr, &fqi->fq_path, fqi->fq_path.pn_path); in smb_com_delete_directory()
237 if (!smb_pathname_validate(sr, &fqi->fq_path) || in smb_com_delete_directory()
238 !smb_validate_dirname(sr, &fqi->fq_path)) { in smb_com_delete_directory()
242 rc = smb_pathname_reduce(sr, sr->user_cr, fqi->fq_path.pn_path, in smb_com_delete_directory()
246 smbsr_errno(sr, rc); in smb_com_delete_directory()
250 rc = smb_fsop_lookup(sr, sr->user_cr, SMB_FOLLOW_LINKS, in smb_com_delete_directory()
253 smbsr_errno(sr, rc); in smb_com_delete_directory()
263 smbsr_error(sr, NT_STATUS_ACCESS_DENIED, in smb_com_delete_directory()
271 smbsr_error(sr, NT_STATUS_NOT_A_DIRECTORY, in smb_com_delete_directory()
283 rc = smb_node_getattr(sr, fqi->fq_fnode, zone_kcred(), NULL, in smb_com_delete_directory()
286 smbsr_errno(sr, rc); in smb_com_delete_directory()
293 (smb_fsop_access(sr, sr->user_cr, fqi->fq_fnode, DELETE) in smb_com_delete_directory()
295 smbsr_error(sr, NT_STATUS_CANNOT_DELETE, in smb_com_delete_directory()
302 if (SMB_TREE_SUPPORTS_CATIA(sr)) in smb_com_delete_directory()
305 rc = smb_fsop_rmdir(sr, sr->user_cr, fqi->fq_dnode, in smb_com_delete_directory()
313 smbsr_error(sr, NT_STATUS_DIRECTORY_NOT_EMPTY, in smb_com_delete_directory()
316 smbsr_errno(sr, rc); in smb_com_delete_directory()
320 rc = smbsr_encode_empty_result(sr); in smb_com_delete_directory()
351 smb_pre_check_directory(smb_request_t *sr) in smb_pre_check_directory() argument
355 rc = smbsr_decode_data(sr, "%S", sr, in smb_pre_check_directory()
356 &sr->arg.dirop.fqi.fq_path.pn_path); in smb_pre_check_directory()
358 DTRACE_SMB_START(op__CheckDirectory, smb_request_t *, sr); in smb_pre_check_directory()
364 smb_post_check_directory(smb_request_t *sr) in smb_post_check_directory() argument
366 DTRACE_SMB_DONE(op__CheckDirectory, smb_request_t *, sr); in smb_post_check_directory()
370 smb_com_check_directory(smb_request_t *sr) in smb_com_check_directory() argument
379 if (STYPE_ISIPC(sr->tid_tree->t_res_type)) { in smb_com_check_directory()
380 smbsr_error(sr, NT_STATUS_ACCESS_DENIED, ERRDOS, in smb_com_check_directory()
385 fqi = &sr->arg.dirop.fqi; in smb_com_check_directory()
389 rc = smbsr_encode_empty_result(sr); in smb_com_check_directory()
393 smb_pathname_init(sr, pn, pn->pn_path); in smb_com_check_directory()
394 if (!smb_pathname_validate(sr, pn) || in smb_com_check_directory()
395 !smb_validate_dirname(sr, pn)) { in smb_com_check_directory()
400 tnode = sr->tid_tree->t_snode; in smb_com_check_directory()
402 rc = smb_pathname_reduce(sr, sr->user_cr, path, tnode, tnode, in smb_com_check_directory()
405 smbsr_errno(sr, rc); in smb_com_check_directory()
409 rc = smb_fsop_lookup(sr, sr->user_cr, SMB_FOLLOW_LINKS, in smb_com_check_directory()
413 smbsr_errno(sr, rc); in smb_com_check_directory()
419 smbsr_error(sr, NT_STATUS_NOT_A_DIRECTORY, in smb_com_check_directory()
425 if ((sr->smb_flg2 & SMB_FLAGS2_DFS) && smb_node_is_dfslink(node)) { in smb_com_check_directory()
426 smbsr_error(sr, NT_STATUS_PATH_NOT_COVERED, ERRSRV, ERRbadpath); in smb_com_check_directory()
431 rc = smb_fsop_access(sr, sr->user_cr, node, FILE_TRAVERSE); in smb_com_check_directory()
436 smbsr_error(sr, NT_STATUS_ACCESS_DENIED, in smb_com_check_directory()
441 rc = smbsr_encode_empty_result(sr); in smb_com_check_directory()