2005-04-17 02:20:36 +04:00
/*
* fs / cifs / cifsproto . h
*
* Copyright ( c ) International Business Machines Corp . , 2002 , 2005
* Author ( s ) : Steve French ( sfrench @ us . ibm . com )
*
* 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 _CIFSPROTO_H
# define _CIFSPROTO_H
# include <linux/nls.h>
struct statfs ;
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* All Prototypes
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
extern struct smb_hdr * cifs_buf_get ( void ) ;
extern void cifs_buf_release ( void * ) ;
extern struct smb_hdr * cifs_small_buf_get ( void ) ;
extern void cifs_small_buf_release ( void * ) ;
extern int smb_send ( struct socket * , struct smb_hdr * ,
unsigned int /* length */ , struct sockaddr * ) ;
extern unsigned int _GetXid ( void ) ;
extern void _FreeXid ( unsigned int ) ;
# define GetXid() (int)_GetXid(); cFYI(1,("CIFS VFS: in %s as Xid: %d with uid: %d",__FUNCTION__, xid,current->fsuid));
# define FreeXid(curr_xid) {_FreeXid(curr_xid); cFYI(1,("CIFS VFS: leaving %s (xid = %d) rc = %d",__FUNCTION__,curr_xid,(int)rc));}
2005-08-30 22:32:14 +04:00
extern char * build_path_from_dentry ( struct dentry * ) ;
2005-04-17 02:20:36 +04:00
extern char * build_wildcard_path_from_dentry ( struct dentry * direntry ) ;
extern void renew_parental_timestamps ( struct dentry * direntry ) ;
extern int SendReceive ( const unsigned int /* xid */ , struct cifsSesInfo * ,
struct smb_hdr * /* input */ ,
struct smb_hdr * /* out */ ,
int * /* bytes returned */ , const int long_op ) ;
2005-06-13 22:24:43 +04:00
extern int SendReceive2 ( const unsigned int /* xid */ , struct cifsSesInfo * ,
struct smb_hdr * /* input */ , int hdr_len ,
const char * /* SMB data to send */ , int data_len ,
int * /* bytes returned */ , const int long_op ) ;
2005-04-17 02:20:36 +04:00
extern int checkSMBhdr ( struct smb_hdr * smb , __u16 mid ) ;
extern int checkSMB ( struct smb_hdr * smb , __u16 mid , int length ) ;
extern int is_valid_oplock_break ( struct smb_hdr * smb ) ;
extern int is_size_safe_to_change ( struct cifsInodeInfo * ) ;
extern unsigned int smbCalcSize ( struct smb_hdr * ptr ) ;
2005-09-23 03:32:06 +04:00
extern unsigned int smbCalcSize_LE ( struct smb_hdr * ptr ) ;
2005-04-17 02:20:36 +04:00
extern int decode_negTokenInit ( unsigned char * security_blob , int length ,
enum securityEnum * secType ) ;
extern int cifs_inet_pton ( int , char * source , void * dst ) ;
extern int map_smb_to_linux_error ( struct smb_hdr * smb ) ;
extern void header_assemble ( struct smb_hdr * , char /* command */ ,
2005-08-17 23:38:22 +04:00
const struct cifsTconInfo * , int /* length of
fixed section ( word count ) in two byte units */ ) ;
extern __u16 GetNextMid ( struct TCP_Server_Info * server ) ;
2005-04-29 09:41:06 +04:00
extern struct oplock_q_entry * AllocOplockQEntry ( struct inode * , u16 ,
struct cifsTconInfo * ) ;
2005-04-17 02:20:36 +04:00
extern void DeleteOplockQEntry ( struct oplock_q_entry * ) ;
extern struct timespec cifs_NTtimeToUnix ( u64 /* utc nanoseconds since 1601 */ ) ;
extern u64 cifs_UnixTimeToNT ( struct timespec ) ;
extern int cifs_get_inode_info ( struct inode * * pinode ,
const unsigned char * search_path ,
FILE_ALL_INFO * pfile_info ,
struct super_block * sb , int xid ) ;
extern int cifs_get_inode_info_unix ( struct inode * * pinode ,
const unsigned char * search_path ,
struct super_block * sb , int xid ) ;
extern int cifs_mount ( struct super_block * , struct cifs_sb_info * , char * ,
const char * ) ;
extern int cifs_umount ( struct super_block * , struct cifs_sb_info * ) ;
void cifs_proc_init ( void ) ;
void cifs_proc_clean ( void ) ;
extern int cifs_setup_session ( unsigned int xid , struct cifsSesInfo * pSesInfo ,
struct nls_table * nls_info ) ;
extern int CIFSSMBNegotiate ( unsigned int xid , struct cifsSesInfo * ses ) ;
extern int CIFSTCon ( unsigned int xid , struct cifsSesInfo * ses ,
const char * tree , struct cifsTconInfo * tcon ,
const struct nls_table * ) ;
extern int CIFSFindFirst ( const int xid , struct cifsTconInfo * tcon ,
const char * searchName , const struct nls_table * nls_codepage ,
2005-06-23 04:26:35 +04:00
__u16 * searchHandle , struct cifs_search_info * psrch_inf , int map , const char dirsep ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSFindNext ( const int xid , struct cifsTconInfo * tcon ,
__u16 searchHandle , struct cifs_search_info * psrch_inf ) ;
extern int CIFSFindClose ( const int , struct cifsTconInfo * tcon ,
const __u16 search_handle ) ;
extern int CIFSSMBQPathInfo ( const int xid , struct cifsTconInfo * tcon ,
const unsigned char * searchName ,
FILE_ALL_INFO * findData ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage , int remap ) ;
2005-08-24 07:26:03 +04:00
extern int SMBQueryInformation ( const int xid , struct cifsTconInfo * tcon ,
const unsigned char * searchName ,
FILE_ALL_INFO * findData ,
const struct nls_table * nls_codepage , int remap ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBUnixQPathInfo ( const int xid ,
struct cifsTconInfo * tcon ,
const unsigned char * searchName ,
FILE_UNIX_BASIC_INFO * pFindData ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage , int remap ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSGetDFSRefer ( const int xid , struct cifsSesInfo * ses ,
const unsigned char * searchName ,
unsigned char * * targetUNCs ,
unsigned int * number_of_UNC_in_array ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage , int remap ) ;
2005-04-17 02:20:36 +04:00
extern int connect_to_dfs_path ( int xid , struct cifsSesInfo * pSesInfo ,
const char * old_path ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage , int remap ) ;
2005-04-17 02:20:36 +04:00
extern int get_dfs_path ( int xid , struct cifsSesInfo * pSesInfo ,
2005-04-29 09:41:06 +04:00
const char * old_path ,
const struct nls_table * nls_codepage ,
unsigned int * pnum_referrals ,
unsigned char * * preferrals ,
int remap ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBQFSInfo ( const int xid , struct cifsTconInfo * tcon ,
2005-04-29 09:41:06 +04:00
struct kstatfs * FSData ) ;
2005-09-22 09:05:57 +04:00
extern int SMBOldQFSInfo ( const int xid , struct cifsTconInfo * tcon ,
struct kstatfs * FSData ) ;
2005-06-23 22:42:03 +04:00
extern int CIFSSMBSetFSUnixInfo ( const int xid , struct cifsTconInfo * tcon ,
2005-06-23 04:26:35 +04:00
__u64 cap ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBQFSAttributeInfo ( const int xid ,
2005-04-29 09:41:06 +04:00
struct cifsTconInfo * tcon ) ;
extern int CIFSSMBQFSDeviceInfo ( const int xid , struct cifsTconInfo * tcon ) ;
extern int CIFSSMBQFSUnixInfo ( const int xid , struct cifsTconInfo * tcon ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBQFSPosixInfo ( const int xid , struct cifsTconInfo * tcon ,
2005-04-29 09:41:06 +04:00
struct kstatfs * FSData ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBSetTimes ( const int xid , struct cifsTconInfo * tcon ,
const char * fileName , const FILE_BASIC_INFO * data ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBSetFileTimes ( const int xid , struct cifsTconInfo * tcon ,
const FILE_BASIC_INFO * data , __u16 fid ) ;
#if 0
extern int CIFSSMBSetAttrLegacy ( int xid , struct cifsTconInfo * tcon ,
char * fileName , __u16 dos_attributes ,
const struct nls_table * nls_codepage ) ;
# endif /* possibly unneeded function */
extern int CIFSSMBSetEOF ( const int xid , struct cifsTconInfo * tcon ,
2005-04-29 09:41:06 +04:00
const char * fileName , __u64 size ,
int setAllocationSizeFlag ,
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBSetFileSize ( const int xid , struct cifsTconInfo * tcon ,
2005-04-29 09:41:06 +04:00
__u64 size , __u16 fileHandle , __u32 opener_pid ,
int AllocSizeFlag ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBUnixSetPerms ( const int xid , struct cifsTconInfo * pTcon ,
char * full_path , __u64 mode , __u64 uid ,
2005-04-29 09:41:06 +04:00
__u64 gid , dev_t dev ,
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBMkDir ( const int xid , struct cifsTconInfo * tcon ,
const char * newName ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBRmDir ( const int xid , struct cifsTconInfo * tcon ,
2005-04-29 09:41:06 +04:00
const char * name , const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBDelFile ( const int xid , struct cifsTconInfo * tcon ,
const char * name ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBRename ( const int xid , struct cifsTconInfo * tcon ,
const char * fromName , const char * toName ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBRenameOpenFile ( const int xid , struct cifsTconInfo * pTcon ,
2005-04-29 09:41:06 +04:00
int netfid , char * target_name ,
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSCreateHardLink ( const int xid ,
struct cifsTconInfo * tcon ,
const char * fromName , const char * toName ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSUnixCreateHardLink ( const int xid ,
struct cifsTconInfo * tcon ,
const char * fromName , const char * toName ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSUnixCreateSymLink ( const int xid ,
struct cifsTconInfo * tcon ,
const char * fromName , const char * toName ,
const struct nls_table * nls_codepage ) ;
extern int CIFSSMBUnixQuerySymLink ( const int xid ,
struct cifsTconInfo * tcon ,
const unsigned char * searchName ,
char * syminfo , const int buflen ,
const struct nls_table * nls_codepage ) ;
extern int CIFSSMBQueryReparseLinkInfo ( const int xid ,
struct cifsTconInfo * tcon ,
const unsigned char * searchName ,
char * symlinkinfo , const int buflen , __u16 fid ,
const struct nls_table * nls_codepage ) ;
extern int CIFSSMBOpen ( const int xid , struct cifsTconInfo * tcon ,
const char * fileName , const int disposition ,
const int access_flags , const int omode ,
__u16 * netfid , int * pOplock , FILE_ALL_INFO * ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage , int remap ) ;
2005-08-25 10:06:05 +04:00
extern int SMBLegacyOpen ( const int xid , struct cifsTconInfo * tcon ,
const char * fileName , const int disposition ,
const int access_flags , const int omode ,
__u16 * netfid , int * pOplock , FILE_ALL_INFO * ,
const struct nls_table * nls_codepage , int remap ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBClose ( const int xid , struct cifsTconInfo * tcon ,
const int smb_file_id ) ;
extern int CIFSSMBRead ( const int xid , struct cifsTconInfo * tcon ,
const int netfid , unsigned int count ,
const __u64 lseek , unsigned int * nbytes , char * * buf ) ;
extern int CIFSSMBWrite ( const int xid , struct cifsTconInfo * tcon ,
const int netfid , const unsigned int count ,
const __u64 lseek , unsigned int * nbytes ,
const char * buf , const char __user * ubuf ,
const int long_op ) ;
# ifdef CONFIG_CIFS_EXPERIMENTAL
extern int CIFSSMBWrite2 ( const int xid , struct cifsTconInfo * tcon ,
const int netfid , const unsigned int count ,
const __u64 offset , unsigned int * nbytes ,
2005-06-13 22:24:43 +04:00
const char * buf , const int long_op ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSGetSrvInodeNumber ( const int xid , struct cifsTconInfo * tcon ,
const unsigned char * searchName , __u64 * inode_number ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
# endif /* CONFIG_CIFS_EXPERIMENTAL */
2005-05-18 01:07:23 +04:00
extern int cifs_convertUCSpath ( char * target , const __le16 * source , int maxlen ,
2005-04-29 09:41:05 +04:00
const struct nls_table * codepage ) ;
2005-04-29 09:41:06 +04:00
extern int cifsConvertToUCS ( __le16 * target , const char * source , int maxlen ,
const struct nls_table * cp , int mapChars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBLock ( const int xid , struct cifsTconInfo * tcon ,
const __u16 netfid , const __u64 len ,
const __u64 offset , const __u32 numUnlock ,
const __u32 numLock , const __u8 lockType ,
const int waitFlag ) ;
extern int CIFSSMBTDis ( const int xid , struct cifsTconInfo * tcon ) ;
extern int CIFSSMBLogoff ( const int xid , struct cifsSesInfo * ses ) ;
extern struct cifsSesInfo * sesInfoAlloc ( void ) ;
extern void sesInfoFree ( struct cifsSesInfo * ) ;
extern struct cifsTconInfo * tconInfoAlloc ( void ) ;
extern void tconInfoFree ( struct cifsTconInfo * ) ;
extern int cifs_reconnect ( struct TCP_Server_Info * server ) ;
2005-04-29 09:41:05 +04:00
extern int cifs_sign_smb ( struct smb_hdr * , struct TCP_Server_Info * , __u32 * ) ;
2005-04-17 02:20:36 +04:00
extern int cifs_verify_signature ( struct smb_hdr * , const char * mac_key ,
__u32 expected_sequence_number ) ;
extern int cifs_calculate_mac_key ( char * key , const char * rn , const char * pass ) ;
extern int CalcNTLMv2_partial_mac_key ( struct cifsSesInfo * , struct nls_table * ) ;
extern void CalcNTLMv2_response ( const struct cifsSesInfo * , char * ) ;
extern int CIFSSMBCopy ( int xid ,
struct cifsTconInfo * source_tcon ,
const char * fromName ,
const __u16 target_tid ,
const char * toName , const int flags ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBNotify ( const int xid , struct cifsTconInfo * tcon ,
2005-04-29 09:41:06 +04:00
const int notify_subdirs , const __u16 netfid ,
2005-08-25 07:03:11 +04:00
__u32 filter , struct file * file , int multishot ,
const struct nls_table * nls_codepage ) ;
2005-04-17 02:20:36 +04:00
extern ssize_t CIFSSMBQAllEAs ( const int xid , struct cifsTconInfo * tcon ,
const unsigned char * searchName , char * EAData ,
2005-04-29 09:41:06 +04:00
size_t bufsize , const struct nls_table * nls_codepage ,
int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern ssize_t CIFSSMBQueryEA ( const int xid , struct cifsTconInfo * tcon ,
const unsigned char * searchName , const unsigned char * ea_name ,
unsigned char * ea_value , size_t buf_size ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage , int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBSetEA ( const int xid , struct cifsTconInfo * tcon ,
const char * fileName , const char * ea_name ,
const void * ea_value , const __u16 ea_value_len ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage , int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBGetPosixACL ( const int xid , struct cifsTconInfo * tcon ,
const unsigned char * searchName ,
char * acl_inf , const int buflen , const int acl_type ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage , int remap_special_chars ) ;
2005-04-17 02:20:36 +04:00
extern int CIFSSMBSetPosixACL ( const int xid , struct cifsTconInfo * tcon ,
const unsigned char * fileName ,
const char * local_acl , const int buflen , const int acl_type ,
2005-04-29 09:41:06 +04:00
const struct nls_table * nls_codepage , int remap_special_chars ) ;
2005-04-29 09:41:04 +04:00
extern int CIFSGetExtAttr ( const int xid , struct cifsTconInfo * tcon ,
const int netfid , __u64 * pExtAttrBits , __u64 * pMask ) ;
2005-04-17 02:20:36 +04:00
# endif /* _CIFSPROTO_H */