1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * fs/cifs/smb2proto.h 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (c) International Business Machines Corp., 2002, 2011 5*4882a593Smuzhiyun * Etersoft, 2012 6*4882a593Smuzhiyun * Author(s): Steve French (sfrench@us.ibm.com) 7*4882a593Smuzhiyun * Pavel Shilovsky (pshilovsky@samba.org) 2012 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This library is free software; you can redistribute it and/or modify 10*4882a593Smuzhiyun * it under the terms of the GNU Lesser General Public License as published 11*4882a593Smuzhiyun * by the Free Software Foundation; either version 2.1 of the License, or 12*4882a593Smuzhiyun * (at your option) any later version. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun * This library is distributed in the hope that it will be useful, 15*4882a593Smuzhiyun * but WITHOUT ANY WARRANTY; without even the implied warranty of 16*4882a593Smuzhiyun * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 17*4882a593Smuzhiyun * the GNU Lesser General Public License for more details. 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun * You should have received a copy of the GNU Lesser General Public License 20*4882a593Smuzhiyun * along with this library; if not, write to the Free Software 21*4882a593Smuzhiyun * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22*4882a593Smuzhiyun */ 23*4882a593Smuzhiyun #ifndef _SMB2PROTO_H 24*4882a593Smuzhiyun #define _SMB2PROTO_H 25*4882a593Smuzhiyun #include <linux/nls.h> 26*4882a593Smuzhiyun #include <linux/key-type.h> 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun struct statfs; 29*4882a593Smuzhiyun struct smb_rqst; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun /* 32*4882a593Smuzhiyun ***************************************************************** 33*4882a593Smuzhiyun * All Prototypes 34*4882a593Smuzhiyun ***************************************************************** 35*4882a593Smuzhiyun */ 36*4882a593Smuzhiyun extern int map_smb2_to_linux_error(char *buf, bool log_err); 37*4882a593Smuzhiyun extern int smb2_check_message(char *buf, unsigned int length, 38*4882a593Smuzhiyun struct TCP_Server_Info *server); 39*4882a593Smuzhiyun extern unsigned int smb2_calc_size(void *buf, struct TCP_Server_Info *server); 40*4882a593Smuzhiyun extern char *smb2_get_data_area_len(int *off, int *len, 41*4882a593Smuzhiyun struct smb2_sync_hdr *shdr); 42*4882a593Smuzhiyun extern __le16 *cifs_convert_path_to_utf16(const char *from, 43*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb); 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun extern int smb2_verify_signature(struct smb_rqst *, struct TCP_Server_Info *); 46*4882a593Smuzhiyun extern int smb2_check_receive(struct mid_q_entry *mid, 47*4882a593Smuzhiyun struct TCP_Server_Info *server, bool log_error); 48*4882a593Smuzhiyun extern struct mid_q_entry *smb2_setup_request(struct cifs_ses *ses, 49*4882a593Smuzhiyun struct TCP_Server_Info *, 50*4882a593Smuzhiyun struct smb_rqst *rqst); 51*4882a593Smuzhiyun extern struct mid_q_entry *smb2_setup_async_request( 52*4882a593Smuzhiyun struct TCP_Server_Info *server, struct smb_rqst *rqst); 53*4882a593Smuzhiyun extern struct cifs_ses *smb2_find_smb_ses(struct TCP_Server_Info *server, 54*4882a593Smuzhiyun __u64 ses_id); 55*4882a593Smuzhiyun extern struct cifs_tcon *smb2_find_smb_tcon(struct TCP_Server_Info *server, 56*4882a593Smuzhiyun __u64 ses_id, __u32 tid); 57*4882a593Smuzhiyun extern int smb2_calc_signature(struct smb_rqst *rqst, 58*4882a593Smuzhiyun struct TCP_Server_Info *server, 59*4882a593Smuzhiyun bool allocate_crypto); 60*4882a593Smuzhiyun extern int smb3_calc_signature(struct smb_rqst *rqst, 61*4882a593Smuzhiyun struct TCP_Server_Info *server, 62*4882a593Smuzhiyun bool allocate_crypto); 63*4882a593Smuzhiyun extern void smb2_echo_request(struct work_struct *work); 64*4882a593Smuzhiyun extern __le32 smb2_get_lease_state(struct cifsInodeInfo *cinode); 65*4882a593Smuzhiyun extern bool smb2_is_valid_oplock_break(char *buffer, 66*4882a593Smuzhiyun struct TCP_Server_Info *srv); 67*4882a593Smuzhiyun extern struct cifs_ses *smb2_find_smb_ses(struct TCP_Server_Info *server, 68*4882a593Smuzhiyun __u64 ses_id); 69*4882a593Smuzhiyun extern int smb3_handle_read_data(struct TCP_Server_Info *server, 70*4882a593Smuzhiyun struct mid_q_entry *mid); 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun extern int open_shroot(unsigned int xid, struct cifs_tcon *tcon, 73*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb, 74*4882a593Smuzhiyun struct cached_fid **cfid); 75*4882a593Smuzhiyun extern void close_shroot(struct cached_fid *cfid); 76*4882a593Smuzhiyun extern void close_shroot_lease(struct cached_fid *cfid); 77*4882a593Smuzhiyun extern void close_shroot_lease_locked(struct cached_fid *cfid); 78*4882a593Smuzhiyun extern void move_smb2_info_to_cifs(FILE_ALL_INFO *dst, 79*4882a593Smuzhiyun struct smb2_file_all_info *src); 80*4882a593Smuzhiyun extern int smb2_query_reparse_tag(const unsigned int xid, struct cifs_tcon *tcon, 81*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb, const char *path, 82*4882a593Smuzhiyun __u32 *reparse_tag); 83*4882a593Smuzhiyun extern int smb2_query_path_info(const unsigned int xid, struct cifs_tcon *tcon, 84*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb, 85*4882a593Smuzhiyun const char *full_path, FILE_ALL_INFO *data, 86*4882a593Smuzhiyun bool *adjust_tz, bool *symlink); 87*4882a593Smuzhiyun extern int smb2_set_path_size(const unsigned int xid, struct cifs_tcon *tcon, 88*4882a593Smuzhiyun const char *full_path, __u64 size, 89*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb, bool set_alloc); 90*4882a593Smuzhiyun extern int smb2_set_file_info(struct inode *inode, const char *full_path, 91*4882a593Smuzhiyun FILE_BASIC_INFO *buf, const unsigned int xid); 92*4882a593Smuzhiyun extern int smb311_posix_mkdir(const unsigned int xid, struct inode *inode, 93*4882a593Smuzhiyun umode_t mode, struct cifs_tcon *tcon, 94*4882a593Smuzhiyun const char *full_path, 95*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb); 96*4882a593Smuzhiyun extern int smb2_mkdir(const unsigned int xid, struct inode *inode, 97*4882a593Smuzhiyun umode_t mode, struct cifs_tcon *tcon, 98*4882a593Smuzhiyun const char *name, struct cifs_sb_info *cifs_sb); 99*4882a593Smuzhiyun extern void smb2_mkdir_setinfo(struct inode *inode, const char *full_path, 100*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb, 101*4882a593Smuzhiyun struct cifs_tcon *tcon, const unsigned int xid); 102*4882a593Smuzhiyun extern int smb2_rmdir(const unsigned int xid, struct cifs_tcon *tcon, 103*4882a593Smuzhiyun const char *name, struct cifs_sb_info *cifs_sb); 104*4882a593Smuzhiyun extern int smb2_unlink(const unsigned int xid, struct cifs_tcon *tcon, 105*4882a593Smuzhiyun const char *name, struct cifs_sb_info *cifs_sb); 106*4882a593Smuzhiyun extern int smb2_rename_path(const unsigned int xid, struct cifs_tcon *tcon, 107*4882a593Smuzhiyun const char *from_name, const char *to_name, 108*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb); 109*4882a593Smuzhiyun extern int smb2_create_hardlink(const unsigned int xid, struct cifs_tcon *tcon, 110*4882a593Smuzhiyun const char *from_name, const char *to_name, 111*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb); 112*4882a593Smuzhiyun extern int smb3_create_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, 113*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb, const unsigned char *path, 114*4882a593Smuzhiyun char *pbuf, unsigned int *pbytes_written); 115*4882a593Smuzhiyun extern int smb3_query_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, 116*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb, 117*4882a593Smuzhiyun const unsigned char *path, char *pbuf, 118*4882a593Smuzhiyun unsigned int *pbytes_read); 119*4882a593Smuzhiyun extern int smb2_open_file(const unsigned int xid, 120*4882a593Smuzhiyun struct cifs_open_parms *oparms, 121*4882a593Smuzhiyun __u32 *oplock, FILE_ALL_INFO *buf); 122*4882a593Smuzhiyun extern int smb2_unlock_range(struct cifsFileInfo *cfile, 123*4882a593Smuzhiyun struct file_lock *flock, const unsigned int xid); 124*4882a593Smuzhiyun extern int smb2_push_mandatory_locks(struct cifsFileInfo *cfile); 125*4882a593Smuzhiyun extern void smb2_reconnect_server(struct work_struct *work); 126*4882a593Smuzhiyun extern int smb3_crypto_aead_allocate(struct TCP_Server_Info *server); 127*4882a593Smuzhiyun extern unsigned long smb_rqst_len(struct TCP_Server_Info *server, 128*4882a593Smuzhiyun struct smb_rqst *rqst); 129*4882a593Smuzhiyun extern void smb2_set_next_command(struct cifs_tcon *tcon, 130*4882a593Smuzhiyun struct smb_rqst *rqst); 131*4882a593Smuzhiyun extern void smb2_set_related(struct smb_rqst *rqst); 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun /* 134*4882a593Smuzhiyun * SMB2 Worker functions - most of protocol specific implementation details 135*4882a593Smuzhiyun * are contained within these calls. 136*4882a593Smuzhiyun */ 137*4882a593Smuzhiyun extern int SMB2_negotiate(const unsigned int xid, struct cifs_ses *ses); 138*4882a593Smuzhiyun extern int SMB2_sess_setup(const unsigned int xid, struct cifs_ses *ses, 139*4882a593Smuzhiyun const struct nls_table *nls_cp); 140*4882a593Smuzhiyun extern int SMB2_logoff(const unsigned int xid, struct cifs_ses *ses); 141*4882a593Smuzhiyun extern int SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, 142*4882a593Smuzhiyun const char *tree, struct cifs_tcon *tcon, 143*4882a593Smuzhiyun const struct nls_table *); 144*4882a593Smuzhiyun extern int SMB2_tdis(const unsigned int xid, struct cifs_tcon *tcon); 145*4882a593Smuzhiyun extern int SMB2_open(const unsigned int xid, struct cifs_open_parms *oparms, 146*4882a593Smuzhiyun __le16 *path, __u8 *oplock, 147*4882a593Smuzhiyun struct smb2_file_all_info *buf, 148*4882a593Smuzhiyun struct create_posix_rsp *posix, 149*4882a593Smuzhiyun struct kvec *err_iov, int *resp_buftype); 150*4882a593Smuzhiyun extern int SMB2_open_init(struct cifs_tcon *tcon, 151*4882a593Smuzhiyun struct TCP_Server_Info *server, 152*4882a593Smuzhiyun struct smb_rqst *rqst, 153*4882a593Smuzhiyun __u8 *oplock, struct cifs_open_parms *oparms, 154*4882a593Smuzhiyun __le16 *path); 155*4882a593Smuzhiyun extern void SMB2_open_free(struct smb_rqst *rqst); 156*4882a593Smuzhiyun extern int SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, 157*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, u32 opcode, 158*4882a593Smuzhiyun char *in_data, u32 indatalen, u32 maxoutlen, 159*4882a593Smuzhiyun char **out_data, u32 *plen /* returned data len */); 160*4882a593Smuzhiyun extern int SMB2_ioctl_init(struct cifs_tcon *tcon, 161*4882a593Smuzhiyun struct TCP_Server_Info *server, 162*4882a593Smuzhiyun struct smb_rqst *rqst, 163*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, u32 opcode, 164*4882a593Smuzhiyun char *in_data, u32 indatalen, 165*4882a593Smuzhiyun __u32 max_response_size); 166*4882a593Smuzhiyun extern void SMB2_ioctl_free(struct smb_rqst *rqst); 167*4882a593Smuzhiyun extern int SMB2_change_notify(const unsigned int xid, struct cifs_tcon *tcon, 168*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, bool watch_tree, 169*4882a593Smuzhiyun u32 completion_filter); 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun extern int __SMB2_close(const unsigned int xid, struct cifs_tcon *tcon, 172*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, 173*4882a593Smuzhiyun struct smb2_file_network_open_info *pbuf); 174*4882a593Smuzhiyun extern int SMB2_close(const unsigned int xid, struct cifs_tcon *tcon, 175*4882a593Smuzhiyun u64 persistent_file_id, u64 volatile_file_id); 176*4882a593Smuzhiyun extern int SMB2_close_init(struct cifs_tcon *tcon, 177*4882a593Smuzhiyun struct TCP_Server_Info *server, 178*4882a593Smuzhiyun struct smb_rqst *rqst, 179*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, 180*4882a593Smuzhiyun bool query_attrs); 181*4882a593Smuzhiyun extern void SMB2_close_free(struct smb_rqst *rqst); 182*4882a593Smuzhiyun extern int SMB2_flush(const unsigned int xid, struct cifs_tcon *tcon, 183*4882a593Smuzhiyun u64 persistent_file_id, u64 volatile_file_id); 184*4882a593Smuzhiyun extern int SMB2_flush_init(const unsigned int xid, struct smb_rqst *rqst, 185*4882a593Smuzhiyun struct cifs_tcon *tcon, 186*4882a593Smuzhiyun struct TCP_Server_Info *server, 187*4882a593Smuzhiyun u64 persistent_file_id, u64 volatile_file_id); 188*4882a593Smuzhiyun extern void SMB2_flush_free(struct smb_rqst *rqst); 189*4882a593Smuzhiyun extern int SMB311_posix_query_info(const unsigned int xid, struct cifs_tcon *tcon, 190*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, struct smb311_posix_qinfo *data, u32 *plen); 191*4882a593Smuzhiyun extern int SMB2_query_info(const unsigned int xid, struct cifs_tcon *tcon, 192*4882a593Smuzhiyun u64 persistent_file_id, u64 volatile_file_id, 193*4882a593Smuzhiyun struct smb2_file_all_info *data); 194*4882a593Smuzhiyun extern int SMB2_query_info_init(struct cifs_tcon *tcon, 195*4882a593Smuzhiyun struct TCP_Server_Info *server, 196*4882a593Smuzhiyun struct smb_rqst *rqst, 197*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, 198*4882a593Smuzhiyun u8 info_class, u8 info_type, 199*4882a593Smuzhiyun u32 additional_info, size_t output_len, 200*4882a593Smuzhiyun size_t input_len, void *input); 201*4882a593Smuzhiyun extern void SMB2_query_info_free(struct smb_rqst *rqst); 202*4882a593Smuzhiyun extern int SMB2_query_acl(const unsigned int xid, struct cifs_tcon *tcon, 203*4882a593Smuzhiyun u64 persistent_file_id, u64 volatile_file_id, 204*4882a593Smuzhiyun void **data, unsigned int *plen); 205*4882a593Smuzhiyun extern int SMB2_get_srv_num(const unsigned int xid, struct cifs_tcon *tcon, 206*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, 207*4882a593Smuzhiyun __le64 *uniqueid); 208*4882a593Smuzhiyun extern int smb2_async_readv(struct cifs_readdata *rdata); 209*4882a593Smuzhiyun extern int SMB2_read(const unsigned int xid, struct cifs_io_parms *io_parms, 210*4882a593Smuzhiyun unsigned int *nbytes, char **buf, int *buf_type); 211*4882a593Smuzhiyun extern int smb2_async_writev(struct cifs_writedata *wdata, 212*4882a593Smuzhiyun void (*release)(struct kref *kref)); 213*4882a593Smuzhiyun extern int SMB2_write(const unsigned int xid, struct cifs_io_parms *io_parms, 214*4882a593Smuzhiyun unsigned int *nbytes, struct kvec *iov, int n_vec); 215*4882a593Smuzhiyun extern int SMB2_echo(struct TCP_Server_Info *server); 216*4882a593Smuzhiyun extern int SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon, 217*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, int index, 218*4882a593Smuzhiyun struct cifs_search_info *srch_inf); 219*4882a593Smuzhiyun extern int SMB2_query_directory_init(unsigned int xid, struct cifs_tcon *tcon, 220*4882a593Smuzhiyun struct TCP_Server_Info *server, 221*4882a593Smuzhiyun struct smb_rqst *rqst, 222*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, 223*4882a593Smuzhiyun int index, int info_level); 224*4882a593Smuzhiyun extern void SMB2_query_directory_free(struct smb_rqst *rqst); 225*4882a593Smuzhiyun extern int SMB2_set_eof(const unsigned int xid, struct cifs_tcon *tcon, 226*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, u32 pid, 227*4882a593Smuzhiyun __le64 *eof); 228*4882a593Smuzhiyun extern int SMB2_set_info_init(struct cifs_tcon *tcon, 229*4882a593Smuzhiyun struct TCP_Server_Info *server, 230*4882a593Smuzhiyun struct smb_rqst *rqst, 231*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, u32 pid, 232*4882a593Smuzhiyun u8 info_class, u8 info_type, u32 additional_info, 233*4882a593Smuzhiyun void **data, unsigned int *size); 234*4882a593Smuzhiyun extern void SMB2_set_info_free(struct smb_rqst *rqst); 235*4882a593Smuzhiyun extern int SMB2_set_acl(const unsigned int xid, struct cifs_tcon *tcon, 236*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, 237*4882a593Smuzhiyun struct cifs_ntsd *pnntsd, int pacllen, int aclflag); 238*4882a593Smuzhiyun extern int SMB2_set_ea(const unsigned int xid, struct cifs_tcon *tcon, 239*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid, 240*4882a593Smuzhiyun struct smb2_file_full_ea_info *buf, int len); 241*4882a593Smuzhiyun extern int SMB2_set_compression(const unsigned int xid, struct cifs_tcon *tcon, 242*4882a593Smuzhiyun u64 persistent_fid, u64 volatile_fid); 243*4882a593Smuzhiyun extern int SMB2_oplock_break(const unsigned int xid, struct cifs_tcon *tcon, 244*4882a593Smuzhiyun const u64 persistent_fid, const u64 volatile_fid, 245*4882a593Smuzhiyun const __u8 oplock_level); 246*4882a593Smuzhiyun extern int smb2_handle_cancelled_close(struct cifs_tcon *tcon, 247*4882a593Smuzhiyun __u64 persistent_fid, 248*4882a593Smuzhiyun __u64 volatile_fid); 249*4882a593Smuzhiyun extern int smb2_handle_cancelled_mid(struct mid_q_entry *mid, struct TCP_Server_Info *server); 250*4882a593Smuzhiyun void smb2_cancelled_close_fid(struct work_struct *work); 251*4882a593Smuzhiyun extern int SMB2_QFS_info(const unsigned int xid, struct cifs_tcon *tcon, 252*4882a593Smuzhiyun u64 persistent_file_id, u64 volatile_file_id, 253*4882a593Smuzhiyun struct kstatfs *FSData); 254*4882a593Smuzhiyun extern int SMB311_posix_qfs_info(const unsigned int xid, struct cifs_tcon *tcon, 255*4882a593Smuzhiyun u64 persistent_file_id, u64 volatile_file_id, 256*4882a593Smuzhiyun struct kstatfs *FSData); 257*4882a593Smuzhiyun extern int SMB2_QFS_attr(const unsigned int xid, struct cifs_tcon *tcon, 258*4882a593Smuzhiyun u64 persistent_file_id, u64 volatile_file_id, int lvl); 259*4882a593Smuzhiyun extern int SMB2_lock(const unsigned int xid, struct cifs_tcon *tcon, 260*4882a593Smuzhiyun const __u64 persist_fid, const __u64 volatile_fid, 261*4882a593Smuzhiyun const __u32 pid, const __u64 length, const __u64 offset, 262*4882a593Smuzhiyun const __u32 lockFlags, const bool wait); 263*4882a593Smuzhiyun extern int smb2_lockv(const unsigned int xid, struct cifs_tcon *tcon, 264*4882a593Smuzhiyun const __u64 persist_fid, const __u64 volatile_fid, 265*4882a593Smuzhiyun const __u32 pid, const __u32 num_lock, 266*4882a593Smuzhiyun struct smb2_lock_element *buf); 267*4882a593Smuzhiyun extern int SMB2_lease_break(const unsigned int xid, struct cifs_tcon *tcon, 268*4882a593Smuzhiyun __u8 *lease_key, const __le32 lease_state); 269*4882a593Smuzhiyun extern int smb3_validate_negotiate(const unsigned int, struct cifs_tcon *); 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun extern enum securityEnum smb2_select_sectype(struct TCP_Server_Info *, 272*4882a593Smuzhiyun enum securityEnum); 273*4882a593Smuzhiyun extern void smb2_parse_contexts(struct TCP_Server_Info *server, 274*4882a593Smuzhiyun struct smb2_create_rsp *rsp, 275*4882a593Smuzhiyun unsigned int *epoch, char *lease_key, 276*4882a593Smuzhiyun __u8 *oplock, struct smb2_file_all_info *buf, 277*4882a593Smuzhiyun struct create_posix_rsp *posix); 278*4882a593Smuzhiyun extern int smb3_encryption_required(const struct cifs_tcon *tcon); 279*4882a593Smuzhiyun extern int smb2_validate_iov(unsigned int offset, unsigned int buffer_length, 280*4882a593Smuzhiyun struct kvec *iov, unsigned int min_buf_size); 281*4882a593Smuzhiyun extern int smb2_validate_and_copy_iov(unsigned int offset, 282*4882a593Smuzhiyun unsigned int buffer_length, 283*4882a593Smuzhiyun struct kvec *iov, 284*4882a593Smuzhiyun unsigned int minbufsize, char *data); 285*4882a593Smuzhiyun extern void smb2_copy_fs_info_to_kstatfs( 286*4882a593Smuzhiyun struct smb2_fs_full_size_info *pfs_inf, 287*4882a593Smuzhiyun struct kstatfs *kst); 288*4882a593Smuzhiyun extern int smb311_crypto_shash_allocate(struct TCP_Server_Info *server); 289*4882a593Smuzhiyun extern int smb311_update_preauth_hash(struct cifs_ses *ses, 290*4882a593Smuzhiyun struct kvec *iov, int nvec); 291*4882a593Smuzhiyun extern int smb2_query_info_compound(const unsigned int xid, 292*4882a593Smuzhiyun struct cifs_tcon *tcon, 293*4882a593Smuzhiyun __le16 *utf16_path, u32 desired_access, 294*4882a593Smuzhiyun u32 class, u32 type, u32 output_len, 295*4882a593Smuzhiyun struct kvec *rsp, int *buftype, 296*4882a593Smuzhiyun struct cifs_sb_info *cifs_sb); 297*4882a593Smuzhiyun /* query path info from the server using SMB311 POSIX extensions*/ 298*4882a593Smuzhiyun extern int smb311_posix_query_path_info(const unsigned int xid, struct cifs_tcon *tcon, 299*4882a593Smuzhiyun struct cifs_sb_info *sb, const char *path, struct smb311_posix_qinfo *qinf, 300*4882a593Smuzhiyun bool *adjust_tx, bool *symlink); 301*4882a593Smuzhiyun int posix_info_parse(const void *beg, const void *end, 302*4882a593Smuzhiyun struct smb2_posix_info_parsed *out); 303*4882a593Smuzhiyun int posix_info_sid_size(const void *beg, const void *end); 304*4882a593Smuzhiyun #endif /* _SMB2PROTO_H */ 305