diff options
Diffstat (limited to 'fs/cifs/smb2proto.h')
| -rw-r--r-- | fs/cifs/smb2proto.h | 91 | 
1 files changed, 84 insertions, 7 deletions
diff --git a/fs/cifs/smb2proto.h b/fs/cifs/smb2proto.h index bfaa7b148af..2aa3535e38c 100644 --- a/fs/cifs/smb2proto.h +++ b/fs/cifs/smb2proto.h @@ -26,6 +26,7 @@  #include <linux/key-type.h>  struct statfs; +struct smb_rqst;  /*   ***************************************************************** @@ -34,24 +35,39 @@ struct statfs;   */  extern int map_smb2_to_linux_error(char *buf, bool log_err);  extern int smb2_check_message(char *buf, unsigned int length); -extern unsigned int smb2_calc_size(struct smb2_hdr *hdr); +extern unsigned int smb2_calc_size(void *buf);  extern char *smb2_get_data_area_len(int *off, int *len, struct smb2_hdr *hdr);  extern __le16 *cifs_convert_path_to_utf16(const char *from,  					  struct cifs_sb_info *cifs_sb); +extern int smb2_verify_signature(struct smb_rqst *, struct TCP_Server_Info *);  extern int smb2_check_receive(struct mid_q_entry *mid,  			      struct TCP_Server_Info *server, bool log_error); -extern int smb2_setup_request(struct cifs_ses *ses, struct kvec *iov, -			      unsigned int nvec, struct mid_q_entry **ret_mid); -extern int smb2_setup_async_request(struct TCP_Server_Info *server, -				    struct kvec *iov, unsigned int nvec, -				    struct mid_q_entry **ret_mid); +extern struct mid_q_entry *smb2_setup_request(struct cifs_ses *ses, +			      struct smb_rqst *rqst); +extern struct mid_q_entry *smb2_setup_async_request( +			struct TCP_Server_Info *server, struct smb_rqst *rqst); +extern int smb2_calc_signature(struct smb_rqst *rqst, +				struct TCP_Server_Info *server); +extern int smb3_calc_signature(struct smb_rqst *rqst, +				struct TCP_Server_Info *server);  extern void smb2_echo_request(struct work_struct *work); +extern __le32 smb2_get_lease_state(struct cifsInodeInfo *cinode); +extern __u8 smb2_map_lease_to_oplock(__le32 lease_state); +extern bool smb2_is_valid_oplock_break(char *buffer, +				       struct TCP_Server_Info *srv); +extern void move_smb2_info_to_cifs(FILE_ALL_INFO *dst, +				   struct smb2_file_all_info *src);  extern int smb2_query_path_info(const unsigned int xid, struct cifs_tcon *tcon,  				struct cifs_sb_info *cifs_sb,  				const char *full_path, FILE_ALL_INFO *data,  				bool *adjust_tz); +extern int smb2_set_path_size(const unsigned int xid, struct cifs_tcon *tcon, +			      const char *full_path, __u64 size, +			      struct cifs_sb_info *cifs_sb, bool set_alloc); +extern int smb2_set_file_info(struct inode *inode, const char *full_path, +			      FILE_BASIC_INFO *buf, const unsigned int xid);  extern int smb2_mkdir(const unsigned int xid, struct cifs_tcon *tcon,  		      const char *name, struct cifs_sb_info *cifs_sb);  extern void smb2_mkdir_setinfo(struct inode *inode, const char *full_path, @@ -59,6 +75,24 @@ extern void smb2_mkdir_setinfo(struct inode *inode, const char *full_path,  			       struct cifs_tcon *tcon, const unsigned int xid);  extern int smb2_rmdir(const unsigned int xid, struct cifs_tcon *tcon,  		      const char *name, struct cifs_sb_info *cifs_sb); +extern int smb2_unlink(const unsigned int xid, struct cifs_tcon *tcon, +		       const char *name, struct cifs_sb_info *cifs_sb); +extern int smb2_rename_path(const unsigned int xid, struct cifs_tcon *tcon, +			    const char *from_name, const char *to_name, +			    struct cifs_sb_info *cifs_sb); +extern int smb2_create_hardlink(const unsigned int xid, struct cifs_tcon *tcon, +				const char *from_name, const char *to_name, +				struct cifs_sb_info *cifs_sb); + +extern int smb2_open_file(const unsigned int xid, struct cifs_tcon *tcon, +			  const char *full_path, int disposition, +			  int desired_access, int create_options, +			  struct cifs_fid *fid, __u32 *oplock, +			  FILE_ALL_INFO *buf, struct cifs_sb_info *cifs_sb); +extern void smb2_set_oplock_level(struct cifsInodeInfo *cinode, __u32 oplock); +extern int smb2_unlock_range(struct cifsFileInfo *cfile, +			     struct file_lock *flock, const unsigned int xid); +extern int smb2_push_mandatory_locks(struct cifsFileInfo *cfile);  /*   * SMB2 Worker functions - most of protocol specific implementation details @@ -75,12 +109,55 @@ extern int SMB2_tdis(const unsigned int xid, struct cifs_tcon *tcon);  extern int SMB2_open(const unsigned int xid, struct cifs_tcon *tcon,  		     __le16 *path, u64 *persistent_fid, u64 *volatile_fid,  		     __u32 desired_access, __u32 create_disposition, -		     __u32 file_attributes, __u32 create_options); +		     __u32 file_attributes, __u32 create_options, +		     __u8 *oplock, struct smb2_file_all_info *buf);  extern int SMB2_close(const unsigned int xid, struct cifs_tcon *tcon,  		      u64 persistent_file_id, u64 volatile_file_id); +extern int SMB2_flush(const unsigned int xid, struct cifs_tcon *tcon, +		      u64 persistent_file_id, u64 volatile_file_id);  extern int SMB2_query_info(const unsigned int xid, struct cifs_tcon *tcon,  			   u64 persistent_file_id, u64 volatile_file_id,  			   struct smb2_file_all_info *data); +extern int SMB2_get_srv_num(const unsigned int xid, struct cifs_tcon *tcon, +			    u64 persistent_fid, u64 volatile_fid, +			    __le64 *uniqueid); +extern int smb2_async_readv(struct cifs_readdata *rdata); +extern int SMB2_read(const unsigned int xid, struct cifs_io_parms *io_parms, +		     unsigned int *nbytes, char **buf, int *buf_type); +extern int smb2_async_writev(struct cifs_writedata *wdata); +extern int SMB2_write(const unsigned int xid, struct cifs_io_parms *io_parms, +		      unsigned int *nbytes, struct kvec *iov, int n_vec);  extern int SMB2_echo(struct TCP_Server_Info *server); +extern int SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon, +				u64 persistent_fid, u64 volatile_fid, int index, +				struct cifs_search_info *srch_inf); +extern int SMB2_rename(const unsigned int xid, struct cifs_tcon *tcon, +		       u64 persistent_fid, u64 volatile_fid, +		       __le16 *target_file); +extern int SMB2_set_hardlink(const unsigned int xid, struct cifs_tcon *tcon, +			     u64 persistent_fid, u64 volatile_fid, +			     __le16 *target_file); +extern int SMB2_set_eof(const unsigned int xid, struct cifs_tcon *tcon, +			u64 persistent_fid, u64 volatile_fid, u32 pid, +			__le64 *eof); +extern int SMB2_set_info(const unsigned int xid, struct cifs_tcon *tcon, +			 u64 persistent_fid, u64 volatile_fid, +			 FILE_BASIC_INFO *buf); +extern int SMB2_oplock_break(const unsigned int xid, struct cifs_tcon *tcon, +			     const u64 persistent_fid, const u64 volatile_fid, +			     const __u8 oplock_level); +extern int SMB2_QFS_info(const unsigned int xid, struct cifs_tcon *tcon, +			 u64 persistent_file_id, u64 volatile_file_id, +			 struct kstatfs *FSData); +extern int SMB2_lock(const unsigned int xid, struct cifs_tcon *tcon, +		     const __u64 persist_fid, const __u64 volatile_fid, +		     const __u32 pid, const __u64 length, const __u64 offset, +		     const __u32 lockFlags, const bool wait); +extern int smb2_lockv(const unsigned int xid, struct cifs_tcon *tcon, +		      const __u64 persist_fid, const __u64 volatile_fid, +		      const __u32 pid, const __u32 num_lock, +		      struct smb2_lock_element *buf); +extern int SMB2_lease_break(const unsigned int xid, struct cifs_tcon *tcon, +			    __u8 *lease_key, const __le32 lease_state);  #endif			/* _SMB2PROTO_H */  |