struct smbXcli_session;
struct cli_state;
struct file_info;
+struct symlink_reparse_struct;
+
+struct cli_smb2_create_flags {
+ bool batch_oplock:1;
+ bool exclusive_oplock:1;
+};
struct tevent_req *cli_smb2_create_fnum_send(
TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct cli_state *cli,
const char *fname,
- uint32_t create_flags,
+ struct cli_smb2_create_flags create_flags,
uint32_t impersonation_level,
uint32_t desired_access,
uint32_t file_attributes,
uint16_t *pfnum,
struct smb_create_returns *cr,
TALLOC_CTX *mem_ctx,
- struct smb2_create_blobs *out_cblobs);
+ struct smb2_create_blobs *out_cblobs,
+ struct symlink_reparse_struct **symlink);
NTSTATUS cli_smb2_create_fnum(
struct cli_state *cli,
const char *fname,
- uint32_t create_flags,
+ struct cli_smb2_create_flags create_flags,
uint32_t impersonation_level,
uint32_t desired_access,
uint32_t file_attributes,
TALLOC_CTX *mem_ctx,
struct smb2_create_blobs *out_cblobs);
+bool cli_smb2_fnum_is_posix(struct cli_state *cli, uint16_t fnum);
+
struct tevent_req *cli_smb2_close_fnum_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct cli_state *cli,
- uint16_t fnum);
+ uint16_t fnum,
+ uint16_t flags);
NTSTATUS cli_smb2_close_fnum_recv(struct tevent_req *req);
NTSTATUS cli_smb2_close_fnum(struct cli_state *cli, uint16_t fnum);
struct tevent_req *cli_smb2_delete_on_close_send(TALLOC_CTX *mem_ctx,
bool flag);
NTSTATUS cli_smb2_delete_on_close_recv(struct tevent_req *req);
NTSTATUS cli_smb2_delete_on_close(struct cli_state *cli, uint16_t fnum, bool flag);
-NTSTATUS cli_smb2_mkdir(struct cli_state *cli, const char *dirname);
+struct tevent_req *cli_smb2_mkdir_send(
+ TALLOC_CTX *mem_ctx,
+ struct tevent_context *ev,
+ struct cli_state *cli,
+ const char *name);
+NTSTATUS cli_smb2_mkdir_recv(struct tevent_req *req);
struct tevent_req *cli_smb2_rmdir_send(
TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
const char *dname,
const struct smb2_create_blobs *in_cblobs);
NTSTATUS cli_smb2_rmdir_recv(struct tevent_req *req);
-NTSTATUS cli_smb2_rmdir(
- struct cli_state *cli,
- const char *dname,
- const struct smb2_create_blobs *in_cblobs);
struct tevent_req *cli_smb2_unlink_send(
TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
const char *fname,
const struct smb2_create_blobs *in_cblobs);
NTSTATUS cli_smb2_unlink_recv(struct tevent_req *req);
-NTSTATUS cli_smb2_list(struct cli_state *cli,
- const char *pathname,
- uint16_t attribute,
- NTSTATUS (*fn)(const char *,
- struct file_info *,
- const char *,
- void *),
- void *state);
+struct tevent_req *cli_smb2_list_send(
+ TALLOC_CTX *mem_ctx,
+ struct tevent_context *ev,
+ struct cli_state *cli,
+ const char *pathname,
+ unsigned int info_level);
+NTSTATUS cli_smb2_list_recv(
+ struct tevent_req *req,
+ TALLOC_CTX *mem_ctx,
+ struct file_info **pfinfo);
NTSTATUS cli_smb2_qpathinfo_basic(struct cli_state *cli,
const char *name,
SMB_STRUCT_STAT *sbuf,
uint32_t *attributes);
-NTSTATUS cli_smb2_qpathinfo_alt_name(struct cli_state *cli,
- const char *name,
- fstring alt_name);
-NTSTATUS cli_smb2_chkpath(struct cli_state *cli,
- const char *name);
+struct tevent_req *cli_smb2_qpathinfo_send(TALLOC_CTX *mem_ctx,
+ struct tevent_context *ev,
+ struct cli_state *cli,
+ const char *fname,
+ uint16_t level,
+ uint32_t min_rdata,
+ uint32_t max_rdata);
+NTSTATUS cli_smb2_qpathinfo_recv(struct tevent_req *req,
+ TALLOC_CTX *mem_ctx,
+ uint8_t **rdata,
+ uint32_t *num_rdata);
struct tevent_req *cli_smb2_query_info_fnum_send(
TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
uint32_t in_flags,
TALLOC_CTX *mem_ctx,
DATA_BLOB *outbuf);
-NTSTATUS cli_smb2_qfileinfo_basic(struct cli_state *cli,
- uint16_t fnum,
- uint16_t *mode,
- off_t *size,
- struct timespec *create_time,
- struct timespec *access_time,
- struct timespec *write_time,
- struct timespec *change_time,
- SMB_INO_T *ino);
-NTSTATUS cli_smb2_getattrE(struct cli_state *cli,
- uint16_t fnum,
- uint16_t *attr,
- off_t *size,
- time_t *change_time,
- time_t *access_time,
- time_t *write_time);
-NTSTATUS cli_smb2_getatr(struct cli_state *cli,
- const char *name,
- uint16_t *attr,
- off_t *size,
- time_t *write_time);
-NTSTATUS cli_smb2_qpathinfo2(struct cli_state *cli,
- const char *fname,
- struct timespec *create_time,
- struct timespec *access_time,
- struct timespec *write_time,
- struct timespec *change_time,
- off_t *size,
- uint16_t *mode,
- SMB_INO_T *ino);
-NTSTATUS cli_smb2_qpathinfo_streams(struct cli_state *cli,
- const char *name,
- TALLOC_CTX *mem_ctx,
- unsigned int *pnum_streams,
- struct stream_struct **pstreams);
NTSTATUS cli_smb2_setpathinfo(struct cli_state *cli,
const char *name,
uint8_t in_info_type,
const DATA_BLOB *p_in_data);
NTSTATUS cli_smb2_setatr(struct cli_state *cli,
const char *fname,
- uint16_t attr,
+ uint32_t attr,
time_t mtime);
NTSTATUS cli_smb2_setattrE(struct cli_state *cli,
uint16_t fnum,
char **_volume_name,
uint32_t *pserial_number,
time_t *pdate);
-NTSTATUS cli_smb2_query_security_descriptor(struct cli_state *cli,
- uint16_t fnum,
- uint32_t sec_info,
- TALLOC_CTX *mem_ctx,
- struct security_descriptor **ppsd);
-NTSTATUS cli_smb2_set_security_descriptor(struct cli_state *cli,
- uint16_t fnum,
- uint32_t sec_info,
- const struct security_descriptor *sd);
struct tevent_req *cli_smb2_query_mxac_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct cli_state *cli,
NTSTATUS cli_smb2_query_mxac(struct cli_state *cli,
const char *fname,
uint32_t *mxac);
-NTSTATUS cli_smb2_rename(struct cli_state *cli,
- const char *fname_src,
- const char *fname_dst,
- bool replace);
+struct tevent_req *cli_smb2_rename_send(
+ TALLOC_CTX *mem_ctx,
+ struct tevent_context *ev,
+ struct cli_state *cli,
+ const char *fname_src,
+ const char *fname_dst,
+ bool replace);
+NTSTATUS cli_smb2_rename_recv(struct tevent_req *req);
NTSTATUS cli_smb2_set_ea_fnum(struct cli_state *cli,
uint16_t fnum,
const char *ea_name,
bool recursive, TALLOC_CTX *mem_ctx,
struct notify_change **pchanges,
uint32_t *pnum_changes);
-struct tevent_req *cli_smb2_set_reparse_point_fnum_send(
- TALLOC_CTX *mem_ctx,
- struct tevent_context *ev,
- struct cli_state *cli,
- uint16_t fnum,
- DATA_BLOB in_buf);
-NTSTATUS cli_smb2_set_reparse_point_fnum_recv(struct tevent_req *req);
-struct tevent_req *cli_smb2_get_reparse_point_fnum_send(
- TALLOC_CTX *mem_ctx,
- struct tevent_context *ev,
- struct cli_state *cli,
- uint16_t fnum);
-NTSTATUS cli_smb2_get_reparse_point_fnum_recv(struct tevent_req *req,
- TALLOC_CTX *mem_ctx,
- DATA_BLOB *output);
+struct tevent_req *cli_smb2_fsctl_send(
+ TALLOC_CTX *mem_ctx,
+ struct tevent_context *ev,
+ struct cli_state *cli,
+ uint16_t fnum,
+ uint32_t ctl_code,
+ const DATA_BLOB *in,
+ uint32_t max_out);
+NTSTATUS cli_smb2_fsctl_recv(
+ struct tevent_req *req, TALLOC_CTX *mem_ctx, DATA_BLOB *out);
#endif /* __SMB2CLI_FNUM_H__ */