diff options
Diffstat (limited to 'fs/cifs/cifsproto.h')
-rw-r--r-- | fs/cifs/cifsproto.h | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h new file mode 100644 index 000000000000..787eef4d86d3 --- /dev/null +++ b/fs/cifs/cifsproto.h | |||
@@ -0,0 +1,269 @@ | |||
1 | /* | ||
2 | * fs/cifs/cifsproto.h | ||
3 | * | ||
4 | * Copyright (c) International Business Machines Corp., 2002,2005 | ||
5 | * Author(s): Steve French (sfrench@us.ibm.com) | ||
6 | * | ||
7 | * This library is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU Lesser General Public License as published | ||
9 | * by the Free Software Foundation; either version 2.1 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This library is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See | ||
15 | * the GNU Lesser General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU Lesser General Public License | ||
18 | * along with this library; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | #ifndef _CIFSPROTO_H | ||
22 | #define _CIFSPROTO_H | ||
23 | #include <linux/nls.h> | ||
24 | |||
25 | struct statfs; | ||
26 | |||
27 | /* | ||
28 | ***************************************************************** | ||
29 | * All Prototypes | ||
30 | ***************************************************************** | ||
31 | */ | ||
32 | |||
33 | extern struct smb_hdr *cifs_buf_get(void); | ||
34 | extern void cifs_buf_release(void *); | ||
35 | extern struct smb_hdr *cifs_small_buf_get(void); | ||
36 | extern void cifs_small_buf_release(void *); | ||
37 | extern int smb_send(struct socket *, struct smb_hdr *, | ||
38 | unsigned int /* length */ , struct sockaddr *); | ||
39 | extern unsigned int _GetXid(void); | ||
40 | extern void _FreeXid(unsigned int); | ||
41 | #define GetXid() (int)_GetXid(); cFYI(1,("CIFS VFS: in %s as Xid: %d with uid: %d",__FUNCTION__, xid,current->fsuid)); | ||
42 | #define FreeXid(curr_xid) {_FreeXid(curr_xid); cFYI(1,("CIFS VFS: leaving %s (xid = %d) rc = %d",__FUNCTION__,curr_xid,(int)rc));} | ||
43 | extern char *build_path_from_dentry(struct dentry *); | ||
44 | extern char *build_wildcard_path_from_dentry(struct dentry *direntry); | ||
45 | extern void renew_parental_timestamps(struct dentry *direntry); | ||
46 | extern int SendReceive(const unsigned int /* xid */ , struct cifsSesInfo *, | ||
47 | struct smb_hdr * /* input */ , | ||
48 | struct smb_hdr * /* out */ , | ||
49 | int * /* bytes returned */ , const int long_op); | ||
50 | extern int checkSMBhdr(struct smb_hdr *smb, __u16 mid); | ||
51 | extern int checkSMB(struct smb_hdr *smb, __u16 mid, int length); | ||
52 | extern int is_valid_oplock_break(struct smb_hdr *smb); | ||
53 | extern int is_size_safe_to_change(struct cifsInodeInfo *); | ||
54 | extern unsigned int smbCalcSize(struct smb_hdr *ptr); | ||
55 | extern int decode_negTokenInit(unsigned char *security_blob, int length, | ||
56 | enum securityEnum *secType); | ||
57 | extern int cifs_inet_pton(int, char * source, void *dst); | ||
58 | extern int map_smb_to_linux_error(struct smb_hdr *smb); | ||
59 | extern void header_assemble(struct smb_hdr *, char /* command */ , | ||
60 | const struct cifsTconInfo *, int | ||
61 | /* length of fixed section (word count) in two byte units */ | ||
62 | ); | ||
63 | extern struct oplock_q_entry * AllocOplockQEntry(struct inode *, u16, struct cifsTconInfo *); | ||
64 | extern void DeleteOplockQEntry(struct oplock_q_entry *); | ||
65 | extern struct timespec cifs_NTtimeToUnix(u64 /* utc nanoseconds since 1601 */ ); | ||
66 | extern u64 cifs_UnixTimeToNT(struct timespec); | ||
67 | extern int cifs_get_inode_info(struct inode **pinode, | ||
68 | const unsigned char *search_path, | ||
69 | FILE_ALL_INFO * pfile_info, | ||
70 | struct super_block *sb, int xid); | ||
71 | extern int cifs_get_inode_info_unix(struct inode **pinode, | ||
72 | const unsigned char *search_path, | ||
73 | struct super_block *sb,int xid); | ||
74 | |||
75 | extern int cifs_mount(struct super_block *, struct cifs_sb_info *, char *, | ||
76 | const char *); | ||
77 | extern int cifs_umount(struct super_block *, struct cifs_sb_info *); | ||
78 | void cifs_proc_init(void); | ||
79 | void cifs_proc_clean(void); | ||
80 | |||
81 | extern int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo, | ||
82 | struct nls_table * nls_info); | ||
83 | extern int CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses); | ||
84 | |||
85 | extern int CIFSTCon(unsigned int xid, struct cifsSesInfo *ses, | ||
86 | const char *tree, struct cifsTconInfo *tcon, | ||
87 | const struct nls_table *); | ||
88 | |||
89 | extern int CIFSFindFirst(const int xid, struct cifsTconInfo *tcon, | ||
90 | const char *searchName, const struct nls_table *nls_codepage, | ||
91 | __u16 *searchHandle, struct cifs_search_info * psrch_inf); | ||
92 | |||
93 | extern int CIFSFindNext(const int xid, struct cifsTconInfo *tcon, | ||
94 | __u16 searchHandle, struct cifs_search_info * psrch_inf); | ||
95 | |||
96 | extern int CIFSFindClose(const int, struct cifsTconInfo *tcon, | ||
97 | const __u16 search_handle); | ||
98 | |||
99 | extern int CIFSSMBQPathInfo(const int xid, struct cifsTconInfo *tcon, | ||
100 | const unsigned char *searchName, | ||
101 | FILE_ALL_INFO * findData, | ||
102 | const struct nls_table *nls_codepage); | ||
103 | |||
104 | extern int CIFSSMBUnixQPathInfo(const int xid, | ||
105 | struct cifsTconInfo *tcon, | ||
106 | const unsigned char *searchName, | ||
107 | FILE_UNIX_BASIC_INFO * pFindData, | ||
108 | const struct nls_table *nls_codepage); | ||
109 | |||
110 | extern int CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses, | ||
111 | const unsigned char *searchName, | ||
112 | unsigned char **targetUNCs, | ||
113 | unsigned int *number_of_UNC_in_array, | ||
114 | const struct nls_table *nls_codepage); | ||
115 | |||
116 | extern int connect_to_dfs_path(int xid, struct cifsSesInfo *pSesInfo, | ||
117 | const char *old_path, | ||
118 | const struct nls_table *nls_codepage); | ||
119 | extern int get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, | ||
120 | const char *old_path, const struct nls_table *nls_codepage, | ||
121 | unsigned int *pnum_referrals, unsigned char ** preferrals); | ||
122 | extern int CIFSSMBQFSInfo(const int xid, struct cifsTconInfo *tcon, | ||
123 | struct kstatfs *FSData, | ||
124 | const struct nls_table *nls_codepage); | ||
125 | extern int CIFSSMBQFSAttributeInfo(const int xid, | ||
126 | struct cifsTconInfo *tcon, | ||
127 | const struct nls_table *nls_codepage); | ||
128 | extern int CIFSSMBQFSDeviceInfo(const int xid, struct cifsTconInfo *tcon, | ||
129 | const struct nls_table *nls_codepage); | ||
130 | extern int CIFSSMBQFSUnixInfo(const int xid, struct cifsTconInfo *tcon, | ||
131 | const struct nls_table *nls_codepage); | ||
132 | extern int CIFSSMBQFSPosixInfo(const int xid, struct cifsTconInfo *tcon, | ||
133 | struct kstatfs *FSData, const struct nls_table *nls_codepage); | ||
134 | |||
135 | extern int CIFSSMBSetTimes(const int xid, struct cifsTconInfo *tcon, | ||
136 | const char *fileName, const FILE_BASIC_INFO * data, | ||
137 | const struct nls_table *nls_codepage); | ||
138 | extern int CIFSSMBSetFileTimes(const int xid, struct cifsTconInfo *tcon, | ||
139 | const FILE_BASIC_INFO * data, __u16 fid); | ||
140 | #if 0 | ||
141 | extern int CIFSSMBSetAttrLegacy(int xid, struct cifsTconInfo *tcon, | ||
142 | char *fileName, __u16 dos_attributes, | ||
143 | const struct nls_table *nls_codepage); | ||
144 | #endif /* possibly unneeded function */ | ||
145 | extern int CIFSSMBSetEOF(const int xid, struct cifsTconInfo *tcon, | ||
146 | const char *fileName, __u64 size,int setAllocationSizeFlag, | ||
147 | const struct nls_table *nls_codepage); | ||
148 | extern int CIFSSMBSetFileSize(const int xid, struct cifsTconInfo *tcon, | ||
149 | __u64 size, __u16 fileHandle,__u32 opener_pid, int AllocSizeFlag); | ||
150 | extern int CIFSSMBUnixSetPerms(const int xid, struct cifsTconInfo *pTcon, | ||
151 | char *full_path, __u64 mode, __u64 uid, | ||
152 | __u64 gid, dev_t dev, const struct nls_table *nls_codepage); | ||
153 | |||
154 | extern int CIFSSMBMkDir(const int xid, struct cifsTconInfo *tcon, | ||
155 | const char *newName, | ||
156 | const struct nls_table *nls_codepage); | ||
157 | extern int CIFSSMBRmDir(const int xid, struct cifsTconInfo *tcon, | ||
158 | const char *name, const struct nls_table *nls_codepage); | ||
159 | |||
160 | extern int CIFSSMBDelFile(const int xid, struct cifsTconInfo *tcon, | ||
161 | const char *name, | ||
162 | const struct nls_table *nls_codepage); | ||
163 | extern int CIFSSMBRename(const int xid, struct cifsTconInfo *tcon, | ||
164 | const char *fromName, const char *toName, | ||
165 | const struct nls_table *nls_codepage); | ||
166 | extern int CIFSSMBRenameOpenFile(const int xid,struct cifsTconInfo *pTcon, | ||
167 | int netfid, char * target_name, const struct nls_table *nls_codepage); | ||
168 | extern int CIFSCreateHardLink(const int xid, | ||
169 | struct cifsTconInfo *tcon, | ||
170 | const char *fromName, const char *toName, | ||
171 | const struct nls_table *nls_codepage); | ||
172 | extern int CIFSUnixCreateHardLink(const int xid, | ||
173 | struct cifsTconInfo *tcon, | ||
174 | const char *fromName, const char *toName, | ||
175 | const struct nls_table *nls_codepage); | ||
176 | extern int CIFSUnixCreateSymLink(const int xid, | ||
177 | struct cifsTconInfo *tcon, | ||
178 | const char *fromName, const char *toName, | ||
179 | const struct nls_table *nls_codepage); | ||
180 | extern int CIFSSMBUnixQuerySymLink(const int xid, | ||
181 | struct cifsTconInfo *tcon, | ||
182 | const unsigned char *searchName, | ||
183 | char *syminfo, const int buflen, | ||
184 | const struct nls_table *nls_codepage); | ||
185 | extern int CIFSSMBQueryReparseLinkInfo(const int xid, | ||
186 | struct cifsTconInfo *tcon, | ||
187 | const unsigned char *searchName, | ||
188 | char *symlinkinfo, const int buflen, __u16 fid, | ||
189 | const struct nls_table *nls_codepage); | ||
190 | |||
191 | extern int CIFSSMBOpen(const int xid, struct cifsTconInfo *tcon, | ||
192 | const char *fileName, const int disposition, | ||
193 | const int access_flags, const int omode, | ||
194 | __u16 * netfid, int *pOplock, FILE_ALL_INFO *, | ||
195 | const struct nls_table *nls_codepage); | ||
196 | extern int CIFSSMBClose(const int xid, struct cifsTconInfo *tcon, | ||
197 | const int smb_file_id); | ||
198 | |||
199 | extern int CIFSSMBRead(const int xid, struct cifsTconInfo *tcon, | ||
200 | const int netfid, unsigned int count, | ||
201 | const __u64 lseek, unsigned int *nbytes, char **buf); | ||
202 | extern int CIFSSMBWrite(const int xid, struct cifsTconInfo *tcon, | ||
203 | const int netfid, const unsigned int count, | ||
204 | const __u64 lseek, unsigned int *nbytes, | ||
205 | const char *buf, const char __user *ubuf, | ||
206 | const int long_op); | ||
207 | #ifdef CONFIG_CIFS_EXPERIMENTAL | ||
208 | extern int CIFSSMBWrite2(const int xid, struct cifsTconInfo *tcon, | ||
209 | const int netfid, const unsigned int count, | ||
210 | const __u64 offset, unsigned int *nbytes, | ||
211 | const char __user *buf,const int long_op); | ||
212 | extern int CIFSGetSrvInodeNumber(const int xid, struct cifsTconInfo *tcon, | ||
213 | const unsigned char *searchName, __u64 * inode_number, | ||
214 | const struct nls_table *nls_codepage); | ||
215 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ | ||
216 | |||
217 | extern int CIFSSMBLock(const int xid, struct cifsTconInfo *tcon, | ||
218 | const __u16 netfid, const __u64 len, | ||
219 | const __u64 offset, const __u32 numUnlock, | ||
220 | const __u32 numLock, const __u8 lockType, | ||
221 | const int waitFlag); | ||
222 | |||
223 | extern int CIFSSMBTDis(const int xid, struct cifsTconInfo *tcon); | ||
224 | extern int CIFSSMBLogoff(const int xid, struct cifsSesInfo *ses); | ||
225 | |||
226 | extern struct cifsSesInfo *sesInfoAlloc(void); | ||
227 | extern void sesInfoFree(struct cifsSesInfo *); | ||
228 | extern struct cifsTconInfo *tconInfoAlloc(void); | ||
229 | extern void tconInfoFree(struct cifsTconInfo *); | ||
230 | |||
231 | extern int cifs_reconnect(struct TCP_Server_Info *server); | ||
232 | |||
233 | extern int cifs_sign_smb(struct smb_hdr *, struct cifsSesInfo *,__u32 *); | ||
234 | extern int cifs_verify_signature(struct smb_hdr *, const char * mac_key, | ||
235 | __u32 expected_sequence_number); | ||
236 | extern int cifs_calculate_mac_key(char * key,const char * rn,const char * pass); | ||
237 | extern int CalcNTLMv2_partial_mac_key(struct cifsSesInfo *, struct nls_table *); | ||
238 | extern void CalcNTLMv2_response(const struct cifsSesInfo *,char * ); | ||
239 | extern int CIFSSMBCopy(int xid, | ||
240 | struct cifsTconInfo *source_tcon, | ||
241 | const char *fromName, | ||
242 | const __u16 target_tid, | ||
243 | const char *toName, const int flags, | ||
244 | const struct nls_table *nls_codepage); | ||
245 | extern int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon, | ||
246 | const int notify_subdirs,const __u16 netfid,__u32 filter, | ||
247 | const struct nls_table *nls_codepage); | ||
248 | extern ssize_t CIFSSMBQAllEAs(const int xid, struct cifsTconInfo *tcon, | ||
249 | const unsigned char *searchName, char * EAData, | ||
250 | size_t bufsize, const struct nls_table *nls_codepage); | ||
251 | extern ssize_t CIFSSMBQueryEA(const int xid,struct cifsTconInfo * tcon, | ||
252 | const unsigned char * searchName,const unsigned char * ea_name, | ||
253 | unsigned char * ea_value, size_t buf_size, | ||
254 | const struct nls_table *nls_codepage); | ||
255 | extern int CIFSSMBSetEA(const int xid, struct cifsTconInfo *tcon, | ||
256 | const char *fileName, const char * ea_name, | ||
257 | const void * ea_value, const __u16 ea_value_len, | ||
258 | const struct nls_table *nls_codepage); | ||
259 | extern int CIFSSMBGetPosixACL(const int xid, struct cifsTconInfo *tcon, | ||
260 | const unsigned char *searchName, | ||
261 | char *acl_inf, const int buflen,const int acl_type, | ||
262 | const struct nls_table *nls_codepage); | ||
263 | extern int CIFSSMBSetPosixACL(const int xid, struct cifsTconInfo *tcon, | ||
264 | const unsigned char *fileName, | ||
265 | const char *local_acl, const int buflen, const int acl_type, | ||
266 | const struct nls_table *nls_codepage); | ||
267 | int cifs_ioctl (struct inode * inode, struct file * filep, | ||
268 | unsigned int command, unsigned long arg); | ||
269 | #endif /* _CIFSPROTO_H */ | ||