2011-03-15 05:08:48 +03:00
/*
* fs / cifs / smb2proto . h
*
* Copyright ( c ) International Business Machines Corp . , 2002 , 2011
* Etersoft , 2012
* Author ( s ) : Steve French ( sfrench @ us . ibm . com )
* Pavel Shilovsky ( pshilovsky @ samba . org ) 2012
*
* This library is free software ; you can redistribute it and / or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation ; either version 2.1 of the License , or
* ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See
* the GNU Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
# ifndef _SMB2PROTO_H
# define _SMB2PROTO_H
# include <linux/nls.h>
# include <linux/key-type.h>
struct statfs ;
2012-09-19 03:20:34 +04:00
struct smb_rqst ;
2011-03-15 05:08:48 +03:00
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* All Prototypes
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
extern int map_smb2_to_linux_error ( char * buf , bool log_err ) ;
2011-06-08 15:51:07 +04:00
extern int smb2_check_message ( char * buf , unsigned int length ) ;
2012-09-19 03:20:33 +04:00
extern unsigned int smb2_calc_size ( void * buf ) ;
2011-12-27 16:12:43 +04:00
extern char * smb2_get_data_area_len ( int * off , int * len , struct smb2_hdr * hdr ) ;
2011-12-26 22:58:46 +04:00
extern __le16 * cifs_convert_path_to_utf16 ( const char * from ,
struct cifs_sb_info * cifs_sb ) ;
2011-03-15 05:08:48 +03:00
2012-09-19 03:20:34 +04:00
extern int smb2_verify_signature ( struct smb_rqst * , struct TCP_Server_Info * ) ;
2011-12-26 22:53:34 +04:00
extern int smb2_check_receive ( struct mid_q_entry * mid ,
struct TCP_Server_Info * server , bool log_error ) ;
2012-09-19 03:20:35 +04:00
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 ) ;
2012-07-11 14:45:28 +04:00
extern void smb2_echo_request ( struct work_struct * work ) ;
2012-09-19 03:20:33 +04:00
extern bool smb2_is_valid_oplock_break ( char * buffer ,
struct TCP_Server_Info * srv ) ;
2011-12-26 22:53:34 +04:00
2012-09-19 03:20:26 +04:00
extern void move_smb2_info_to_cifs ( FILE_ALL_INFO * dst ,
struct smb2_file_all_info * src ) ;
2011-12-29 17:06:33 +04:00
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 ) ;
2012-09-19 03:20:32 +04:00
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 ) ;
2012-09-19 03:20:32 +04:00
extern int smb2_set_file_info ( struct inode * inode , const char * full_path ,
FILE_BASIC_INFO * buf , const unsigned int xid ) ;
2011-07-19 12:56:37 +04:00
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 ,
struct cifs_sb_info * cifs_sb ,
struct cifs_tcon * tcon , const unsigned int xid ) ;
2012-07-10 16:14:38 +04:00
extern int smb2_rmdir ( const unsigned int xid , struct cifs_tcon * tcon ,
const char * name , struct cifs_sb_info * cifs_sb ) ;
2012-09-19 03:20:25 +04:00
extern int smb2_unlink ( const unsigned int xid , struct cifs_tcon * tcon ,
const char * name , struct cifs_sb_info * cifs_sb ) ;
2012-09-19 03:20:31 +04:00
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 ) ;
2012-09-19 03:20:31 +04:00
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 ) ;
2011-07-19 12:56:37 +04:00
2012-09-19 03:20:26 +04:00
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 ) ;
2012-09-19 03:20:33 +04:00
extern void smb2_set_oplock_level ( struct cifsInodeInfo * cinode , __u32 oplock ) ;
2012-09-19 17:22:43 +04:00
extern int smb2_unlock_range ( struct cifsFileInfo * cfile ,
struct file_lock * flock , const unsigned int xid ) ;
2012-09-19 03:20:26 +04:00
2011-12-27 16:12:43 +04:00
/*
* SMB2 Worker functions - most of protocol specific implementation details
* are contained within these calls .
*/
extern int SMB2_negotiate ( const unsigned int xid , struct cifs_ses * ses ) ;
2011-12-27 16:22:00 +04:00
extern int SMB2_sess_setup ( const unsigned int xid , struct cifs_ses * ses ,
const struct nls_table * nls_cp ) ;
extern int SMB2_logoff ( const unsigned int xid , struct cifs_ses * ses ) ;
2011-12-27 16:04:00 +04:00
extern int SMB2_tcon ( const unsigned int xid , struct cifs_ses * ses ,
const char * tree , struct cifs_tcon * tcon ,
const struct nls_table * ) ;
extern int SMB2_tdis ( const unsigned int xid , struct cifs_tcon * tcon ) ;
2011-12-26 22:58:46 +04:00
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 ,
2012-09-19 03:20:26 +04:00
__u32 file_attributes , __u32 create_options ,
2012-09-19 03:20:33 +04:00
__u8 * oplock , struct smb2_file_all_info * buf ) ;
2011-12-26 22:58:46 +04:00
extern int SMB2_close ( const unsigned int xid , struct cifs_tcon * tcon ,
u64 persistent_file_id , u64 volatile_file_id ) ;
2012-09-19 03:20:28 +04:00
extern int SMB2_flush ( const unsigned int xid , struct cifs_tcon * tcon ,
u64 persistent_file_id , u64 volatile_file_id ) ;
2011-12-29 17:06:33 +04:00
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 ) ;
2012-09-19 03:20:26 +04:00
extern int SMB2_get_srv_num ( const unsigned int xid , struct cifs_tcon * tcon ,
u64 persistent_fid , u64 volatile_fid ,
__le64 * uniqueid ) ;
2012-09-19 03:20:29 +04:00
extern int smb2_async_readv ( struct cifs_readdata * rdata ) ;
2012-09-19 03:20:30 +04:00
extern int SMB2_read ( const unsigned int xid , struct cifs_io_parms * io_parms ,
unsigned int * nbytes , char * * buf , int * buf_type ) ;
2012-09-19 03:20:29 +04:00
extern int smb2_async_writev ( struct cifs_writedata * wdata ) ;
2012-09-19 03:20:30 +04:00
extern int SMB2_write ( const unsigned int xid , struct cifs_io_parms * io_parms ,
unsigned int * nbytes , struct kvec * iov , int n_vec ) ;
2012-07-12 18:30:44 +04:00
extern int SMB2_echo ( struct TCP_Server_Info * server ) ;
2012-09-19 03:20:33 +04:00
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 ) ;
2012-09-19 03:20:31 +04:00
extern int SMB2_rename ( const unsigned int xid , struct cifs_tcon * tcon ,
u64 persistent_fid , u64 volatile_fid ,
__le16 * target_file ) ;
2012-09-19 03:20:31 +04:00
extern int SMB2_set_hardlink ( const unsigned int xid , struct cifs_tcon * tcon ,
u64 persistent_fid , u64 volatile_fid ,
__le16 * target_file ) ;
2012-09-19 03:20:32 +04:00
extern int SMB2_set_eof ( const unsigned int xid , struct cifs_tcon * tcon ,
u64 persistent_fid , u64 volatile_fid , u32 pid ,
__le64 * eof ) ;
2012-09-19 03:20:32 +04:00
extern int SMB2_set_info ( const unsigned int xid , struct cifs_tcon * tcon ,
u64 persistent_fid , u64 volatile_fid ,
FILE_BASIC_INFO * buf ) ;
2012-09-19 03:20:33 +04:00
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 ) ;
2012-09-19 03:20:34 +04:00
extern int SMB2_QFS_info ( const unsigned int xid , struct cifs_tcon * tcon ,
u64 persistent_file_id , u64 volatile_file_id ,
struct kstatfs * FSData ) ;
2012-09-19 17:22:43 +04:00
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 ) ;
2011-12-27 16:12:43 +04:00
2011-03-15 05:08:48 +03:00
# endif /* _SMB2PROTO_H */