Print this page
Build provider 3rd arg from smb_request_t
hacking...


  55  * SearchAttributes indicates the attributes that the target file(s) must
  56  * have. If SearchAttributes is zero then only normal files are renamed.
  57  * If the system file or hidden attributes are specified then the rename
  58  * is inclusive - both the specified type(s) of files and normal files are
  59  * renamed.
  60  */
  61 smb_sdrc_t
  62 smb_pre_rename(smb_request_t *sr)
  63 {
  64         smb_fqi_t *src_fqi = &sr->arg.dirop.fqi;
  65         smb_fqi_t *dst_fqi = &sr->arg.dirop.dst_fqi;
  66         int rc;
  67 
  68         if ((rc = smbsr_decode_vwv(sr, "w", &src_fqi->fq_sattr)) == 0) {
  69                 rc = smbsr_decode_data(sr, "%SS", sr, &src_fqi->fq_path.pn_path,
  70                     &dst_fqi->fq_path.pn_path);
  71 
  72                 dst_fqi->fq_sattr = 0;
  73         }
  74 
  75         DTRACE_SMB_2(op__Rename__start, smb_request_t *, sr,
  76             struct dirop *, &sr->arg.dirop);
  77 
  78         return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR);
  79 }
  80 
  81 void
  82 smb_post_rename(smb_request_t *sr)
  83 {
  84         DTRACE_SMB_1(op__Rename__done, smb_request_t *, sr);
  85 }
  86 
  87 smb_sdrc_t
  88 smb_com_rename(smb_request_t *sr)
  89 {
  90         smb_fqi_t       *src_fqi = &sr->arg.dirop.fqi;
  91         smb_fqi_t       *dst_fqi = &sr->arg.dirop.dst_fqi;
  92         smb_pathname_t  *src_pn = &src_fqi->fq_path;
  93         smb_pathname_t  *dst_pn = &dst_fqi->fq_path;
  94         uint32_t        status;
  95 
  96         if (!STYPE_ISDSK(sr->tid_tree->t_res_type)) {


 129  * is inclusive - both the specified type(s) of files and normal files are
 130  * renamed.
 131  */
 132 smb_sdrc_t
 133 smb_pre_nt_rename(smb_request_t *sr)
 134 {
 135         smb_fqi_t *src_fqi = &sr->arg.dirop.fqi;
 136         smb_fqi_t *dst_fqi = &sr->arg.dirop.dst_fqi;
 137         uint32_t clusters;
 138         int rc;
 139 
 140         rc = smbsr_decode_vwv(sr, "wwl", &src_fqi->fq_sattr,
 141             &sr->arg.dirop.info_level, &clusters);
 142         if (rc == 0) {
 143                 rc = smbsr_decode_data(sr, "%SS", sr,
 144                     &src_fqi->fq_path.pn_path, &dst_fqi->fq_path.pn_path);
 145 
 146                 dst_fqi->fq_sattr = 0;
 147         }
 148 
 149         DTRACE_SMB_2(op__NtRename__start, smb_request_t *, sr,
 150             struct dirop *, &sr->arg.dirop);
 151 
 152         return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR);
 153 }
 154 
 155 void
 156 smb_post_nt_rename(smb_request_t *sr)
 157 {
 158         DTRACE_SMB_1(op__NtRename__done, smb_request_t *, sr);
 159 }
 160 
 161 smb_sdrc_t
 162 smb_com_nt_rename(smb_request_t *sr)
 163 {
 164         smb_fqi_t       *src_fqi = &sr->arg.dirop.fqi;
 165         smb_fqi_t       *dst_fqi = &sr->arg.dirop.dst_fqi;
 166         smb_pathname_t  *src_pn = &src_fqi->fq_path;
 167         smb_pathname_t  *dst_pn = &dst_fqi->fq_path;
 168         uint32_t        status;
 169 
 170         if (!STYPE_ISDSK(sr->tid_tree->t_res_type)) {




  55  * SearchAttributes indicates the attributes that the target file(s) must
  56  * have. If SearchAttributes is zero then only normal files are renamed.
  57  * If the system file or hidden attributes are specified then the rename
  58  * is inclusive - both the specified type(s) of files and normal files are
  59  * renamed.
  60  */
  61 smb_sdrc_t
  62 smb_pre_rename(smb_request_t *sr)
  63 {
  64         smb_fqi_t *src_fqi = &sr->arg.dirop.fqi;
  65         smb_fqi_t *dst_fqi = &sr->arg.dirop.dst_fqi;
  66         int rc;
  67 
  68         if ((rc = smbsr_decode_vwv(sr, "w", &src_fqi->fq_sattr)) == 0) {
  69                 rc = smbsr_decode_data(sr, "%SS", sr, &src_fqi->fq_path.pn_path,
  70                     &dst_fqi->fq_path.pn_path);
  71 
  72                 dst_fqi->fq_sattr = 0;
  73         }
  74 
  75         DTRACE_SMB_1(op__Rename__start, smb_request_t *, sr); /* arg.dirop */

  76 
  77         return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR);
  78 }
  79 
  80 void
  81 smb_post_rename(smb_request_t *sr)
  82 {
  83         DTRACE_SMB_1(op__Rename__done, smb_request_t *, sr);
  84 }
  85 
  86 smb_sdrc_t
  87 smb_com_rename(smb_request_t *sr)
  88 {
  89         smb_fqi_t       *src_fqi = &sr->arg.dirop.fqi;
  90         smb_fqi_t       *dst_fqi = &sr->arg.dirop.dst_fqi;
  91         smb_pathname_t  *src_pn = &src_fqi->fq_path;
  92         smb_pathname_t  *dst_pn = &dst_fqi->fq_path;
  93         uint32_t        status;
  94 
  95         if (!STYPE_ISDSK(sr->tid_tree->t_res_type)) {


 128  * is inclusive - both the specified type(s) of files and normal files are
 129  * renamed.
 130  */
 131 smb_sdrc_t
 132 smb_pre_nt_rename(smb_request_t *sr)
 133 {
 134         smb_fqi_t *src_fqi = &sr->arg.dirop.fqi;
 135         smb_fqi_t *dst_fqi = &sr->arg.dirop.dst_fqi;
 136         uint32_t clusters;
 137         int rc;
 138 
 139         rc = smbsr_decode_vwv(sr, "wwl", &src_fqi->fq_sattr,
 140             &sr->arg.dirop.info_level, &clusters);
 141         if (rc == 0) {
 142                 rc = smbsr_decode_data(sr, "%SS", sr,
 143                     &src_fqi->fq_path.pn_path, &dst_fqi->fq_path.pn_path);
 144 
 145                 dst_fqi->fq_sattr = 0;
 146         }
 147 
 148         DTRACE_SMB_1(op__NtRename__start, smb_request_t *, sr); /* arg.dirop */

 149 
 150         return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR);
 151 }
 152 
 153 void
 154 smb_post_nt_rename(smb_request_t *sr)
 155 {
 156         DTRACE_SMB_1(op__NtRename__done, smb_request_t *, sr);
 157 }
 158 
 159 smb_sdrc_t
 160 smb_com_nt_rename(smb_request_t *sr)
 161 {
 162         smb_fqi_t       *src_fqi = &sr->arg.dirop.fqi;
 163         smb_fqi_t       *dst_fqi = &sr->arg.dirop.dst_fqi;
 164         smb_pathname_t  *src_pn = &src_fqi->fq_path;
 165         smb_pathname_t  *dst_pn = &dst_fqi->fq_path;
 166         uint32_t        status;
 167 
 168         if (!STYPE_ISDSK(sr->tid_tree->t_res_type)) {