diff options
Diffstat (limited to 'fs/9p/9p.h')
-rw-r--r-- | fs/9p/9p.h | 375 |
1 files changed, 0 insertions, 375 deletions
diff --git a/fs/9p/9p.h b/fs/9p/9p.h deleted file mode 100644 index 94e2f92ab2e8..000000000000 --- a/fs/9p/9p.h +++ /dev/null | |||
@@ -1,375 +0,0 @@ | |||
1 | /* | ||
2 | * linux/fs/9p/9p.h | ||
3 | * | ||
4 | * 9P protocol definitions. | ||
5 | * | ||
6 | * Copyright (C) 2005 by Latchesar Ionkov <lucho@ionkov.net> | ||
7 | * Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com> | ||
8 | * Copyright (C) 2002 by Ron Minnich <rminnich@lanl.gov> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 | ||
12 | * as published by the Free Software Foundation. | ||
13 | * | ||
14 | * This program is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this program; if not, write to: | ||
21 | * Free Software Foundation | ||
22 | * 51 Franklin Street, Fifth Floor | ||
23 | * Boston, MA 02111-1301 USA | ||
24 | * | ||
25 | */ | ||
26 | |||
27 | /* Message Types */ | ||
28 | enum { | ||
29 | TVERSION = 100, | ||
30 | RVERSION, | ||
31 | TAUTH = 102, | ||
32 | RAUTH, | ||
33 | TATTACH = 104, | ||
34 | RATTACH, | ||
35 | TERROR = 106, | ||
36 | RERROR, | ||
37 | TFLUSH = 108, | ||
38 | RFLUSH, | ||
39 | TWALK = 110, | ||
40 | RWALK, | ||
41 | TOPEN = 112, | ||
42 | ROPEN, | ||
43 | TCREATE = 114, | ||
44 | RCREATE, | ||
45 | TREAD = 116, | ||
46 | RREAD, | ||
47 | TWRITE = 118, | ||
48 | RWRITE, | ||
49 | TCLUNK = 120, | ||
50 | RCLUNK, | ||
51 | TREMOVE = 122, | ||
52 | RREMOVE, | ||
53 | TSTAT = 124, | ||
54 | RSTAT, | ||
55 | TWSTAT = 126, | ||
56 | RWSTAT, | ||
57 | }; | ||
58 | |||
59 | /* modes */ | ||
60 | enum { | ||
61 | V9FS_OREAD = 0x00, | ||
62 | V9FS_OWRITE = 0x01, | ||
63 | V9FS_ORDWR = 0x02, | ||
64 | V9FS_OEXEC = 0x03, | ||
65 | V9FS_OEXCL = 0x04, | ||
66 | V9FS_OTRUNC = 0x10, | ||
67 | V9FS_OREXEC = 0x20, | ||
68 | V9FS_ORCLOSE = 0x40, | ||
69 | V9FS_OAPPEND = 0x80, | ||
70 | }; | ||
71 | |||
72 | /* permissions */ | ||
73 | enum { | ||
74 | V9FS_DMDIR = 0x80000000, | ||
75 | V9FS_DMAPPEND = 0x40000000, | ||
76 | V9FS_DMEXCL = 0x20000000, | ||
77 | V9FS_DMMOUNT = 0x10000000, | ||
78 | V9FS_DMAUTH = 0x08000000, | ||
79 | V9FS_DMTMP = 0x04000000, | ||
80 | V9FS_DMSYMLINK = 0x02000000, | ||
81 | V9FS_DMLINK = 0x01000000, | ||
82 | /* 9P2000.u extensions */ | ||
83 | V9FS_DMDEVICE = 0x00800000, | ||
84 | V9FS_DMNAMEDPIPE = 0x00200000, | ||
85 | V9FS_DMSOCKET = 0x00100000, | ||
86 | V9FS_DMSETUID = 0x00080000, | ||
87 | V9FS_DMSETGID = 0x00040000, | ||
88 | }; | ||
89 | |||
90 | /* qid.types */ | ||
91 | enum { | ||
92 | V9FS_QTDIR = 0x80, | ||
93 | V9FS_QTAPPEND = 0x40, | ||
94 | V9FS_QTEXCL = 0x20, | ||
95 | V9FS_QTMOUNT = 0x10, | ||
96 | V9FS_QTAUTH = 0x08, | ||
97 | V9FS_QTTMP = 0x04, | ||
98 | V9FS_QTSYMLINK = 0x02, | ||
99 | V9FS_QTLINK = 0x01, | ||
100 | V9FS_QTFILE = 0x00, | ||
101 | }; | ||
102 | |||
103 | #define V9FS_NOTAG (u16)(~0) | ||
104 | #define V9FS_NOFID (u32)(~0) | ||
105 | #define V9FS_MAXWELEM 16 | ||
106 | |||
107 | /* ample room for Twrite/Rread header (iounit) */ | ||
108 | #define V9FS_IOHDRSZ 24 | ||
109 | |||
110 | struct v9fs_str { | ||
111 | u16 len; | ||
112 | char *str; | ||
113 | }; | ||
114 | |||
115 | /* qids are the unique ID for a file (like an inode */ | ||
116 | struct v9fs_qid { | ||
117 | u8 type; | ||
118 | u32 version; | ||
119 | u64 path; | ||
120 | }; | ||
121 | |||
122 | /* Plan 9 file metadata (stat) structure */ | ||
123 | struct v9fs_stat { | ||
124 | u16 size; | ||
125 | u16 type; | ||
126 | u32 dev; | ||
127 | struct v9fs_qid qid; | ||
128 | u32 mode; | ||
129 | u32 atime; | ||
130 | u32 mtime; | ||
131 | u64 length; | ||
132 | struct v9fs_str name; | ||
133 | struct v9fs_str uid; | ||
134 | struct v9fs_str gid; | ||
135 | struct v9fs_str muid; | ||
136 | struct v9fs_str extension; /* 9p2000.u extensions */ | ||
137 | u32 n_uid; /* 9p2000.u extensions */ | ||
138 | u32 n_gid; /* 9p2000.u extensions */ | ||
139 | u32 n_muid; /* 9p2000.u extensions */ | ||
140 | }; | ||
141 | |||
142 | /* file metadata (stat) structure used to create Twstat message | ||
143 | The is similar to v9fs_stat, but the strings don't point to | ||
144 | the same memory block and should be freed separately | ||
145 | */ | ||
146 | struct v9fs_wstat { | ||
147 | u16 size; | ||
148 | u16 type; | ||
149 | u32 dev; | ||
150 | struct v9fs_qid qid; | ||
151 | u32 mode; | ||
152 | u32 atime; | ||
153 | u32 mtime; | ||
154 | u64 length; | ||
155 | char *name; | ||
156 | char *uid; | ||
157 | char *gid; | ||
158 | char *muid; | ||
159 | char *extension; /* 9p2000.u extensions */ | ||
160 | u32 n_uid; /* 9p2000.u extensions */ | ||
161 | u32 n_gid; /* 9p2000.u extensions */ | ||
162 | u32 n_muid; /* 9p2000.u extensions */ | ||
163 | }; | ||
164 | |||
165 | /* Structures for Protocol Operations */ | ||
166 | |||
167 | struct Tversion { | ||
168 | u32 msize; | ||
169 | struct v9fs_str version; | ||
170 | }; | ||
171 | |||
172 | struct Rversion { | ||
173 | u32 msize; | ||
174 | struct v9fs_str version; | ||
175 | }; | ||
176 | |||
177 | struct Tauth { | ||
178 | u32 afid; | ||
179 | struct v9fs_str uname; | ||
180 | struct v9fs_str aname; | ||
181 | }; | ||
182 | |||
183 | struct Rauth { | ||
184 | struct v9fs_qid qid; | ||
185 | }; | ||
186 | |||
187 | struct Rerror { | ||
188 | struct v9fs_str error; | ||
189 | u32 errno; /* 9p2000.u extension */ | ||
190 | }; | ||
191 | |||
192 | struct Tflush { | ||
193 | u16 oldtag; | ||
194 | }; | ||
195 | |||
196 | struct Rflush { | ||
197 | }; | ||
198 | |||
199 | struct Tattach { | ||
200 | u32 fid; | ||
201 | u32 afid; | ||
202 | struct v9fs_str uname; | ||
203 | struct v9fs_str aname; | ||
204 | }; | ||
205 | |||
206 | struct Rattach { | ||
207 | struct v9fs_qid qid; | ||
208 | }; | ||
209 | |||
210 | struct Twalk { | ||
211 | u32 fid; | ||
212 | u32 newfid; | ||
213 | u16 nwname; | ||
214 | struct v9fs_str wnames[16]; | ||
215 | }; | ||
216 | |||
217 | struct Rwalk { | ||
218 | u16 nwqid; | ||
219 | struct v9fs_qid wqids[16]; | ||
220 | }; | ||
221 | |||
222 | struct Topen { | ||
223 | u32 fid; | ||
224 | u8 mode; | ||
225 | }; | ||
226 | |||
227 | struct Ropen { | ||
228 | struct v9fs_qid qid; | ||
229 | u32 iounit; | ||
230 | }; | ||
231 | |||
232 | struct Tcreate { | ||
233 | u32 fid; | ||
234 | struct v9fs_str name; | ||
235 | u32 perm; | ||
236 | u8 mode; | ||
237 | struct v9fs_str extension; | ||
238 | }; | ||
239 | |||
240 | struct Rcreate { | ||
241 | struct v9fs_qid qid; | ||
242 | u32 iounit; | ||
243 | }; | ||
244 | |||
245 | struct Tread { | ||
246 | u32 fid; | ||
247 | u64 offset; | ||
248 | u32 count; | ||
249 | }; | ||
250 | |||
251 | struct Rread { | ||
252 | u32 count; | ||
253 | u8 *data; | ||
254 | }; | ||
255 | |||
256 | struct Twrite { | ||
257 | u32 fid; | ||
258 | u64 offset; | ||
259 | u32 count; | ||
260 | u8 *data; | ||
261 | }; | ||
262 | |||
263 | struct Rwrite { | ||
264 | u32 count; | ||
265 | }; | ||
266 | |||
267 | struct Tclunk { | ||
268 | u32 fid; | ||
269 | }; | ||
270 | |||
271 | struct Rclunk { | ||
272 | }; | ||
273 | |||
274 | struct Tremove { | ||
275 | u32 fid; | ||
276 | }; | ||
277 | |||
278 | struct Rremove { | ||
279 | }; | ||
280 | |||
281 | struct Tstat { | ||
282 | u32 fid; | ||
283 | }; | ||
284 | |||
285 | struct Rstat { | ||
286 | struct v9fs_stat stat; | ||
287 | }; | ||
288 | |||
289 | struct Twstat { | ||
290 | u32 fid; | ||
291 | struct v9fs_stat stat; | ||
292 | }; | ||
293 | |||
294 | struct Rwstat { | ||
295 | }; | ||
296 | |||
297 | /* | ||
298 | * fcall is the primary packet structure | ||
299 | * | ||
300 | */ | ||
301 | |||
302 | struct v9fs_fcall { | ||
303 | u32 size; | ||
304 | u8 id; | ||
305 | u16 tag; | ||
306 | void *sdata; | ||
307 | |||
308 | union { | ||
309 | struct Tversion tversion; | ||
310 | struct Rversion rversion; | ||
311 | struct Tauth tauth; | ||
312 | struct Rauth rauth; | ||
313 | struct Rerror rerror; | ||
314 | struct Tflush tflush; | ||
315 | struct Rflush rflush; | ||
316 | struct Tattach tattach; | ||
317 | struct Rattach rattach; | ||
318 | struct Twalk twalk; | ||
319 | struct Rwalk rwalk; | ||
320 | struct Topen topen; | ||
321 | struct Ropen ropen; | ||
322 | struct Tcreate tcreate; | ||
323 | struct Rcreate rcreate; | ||
324 | struct Tread tread; | ||
325 | struct Rread rread; | ||
326 | struct Twrite twrite; | ||
327 | struct Rwrite rwrite; | ||
328 | struct Tclunk tclunk; | ||
329 | struct Rclunk rclunk; | ||
330 | struct Tremove tremove; | ||
331 | struct Rremove rremove; | ||
332 | struct Tstat tstat; | ||
333 | struct Rstat rstat; | ||
334 | struct Twstat twstat; | ||
335 | struct Rwstat rwstat; | ||
336 | } params; | ||
337 | }; | ||
338 | |||
339 | #define PRINT_FCALL_ERROR(s, fcall) dprintk(DEBUG_ERROR, "%s: %.*s\n", s, \ | ||
340 | fcall?fcall->params.rerror.error.len:0, \ | ||
341 | fcall?fcall->params.rerror.error.str:""); | ||
342 | |||
343 | int v9fs_t_version(struct v9fs_session_info *v9ses, u32 msize, | ||
344 | char *version, struct v9fs_fcall **rcall); | ||
345 | |||
346 | int v9fs_t_attach(struct v9fs_session_info *v9ses, char *uname, char *aname, | ||
347 | u32 fid, u32 afid, struct v9fs_fcall **rcall); | ||
348 | |||
349 | int v9fs_t_clunk(struct v9fs_session_info *v9ses, u32 fid); | ||
350 | |||
351 | int v9fs_t_stat(struct v9fs_session_info *v9ses, u32 fid, | ||
352 | struct v9fs_fcall **rcall); | ||
353 | |||
354 | int v9fs_t_wstat(struct v9fs_session_info *v9ses, u32 fid, | ||
355 | struct v9fs_wstat *wstat, struct v9fs_fcall **rcall); | ||
356 | |||
357 | int v9fs_t_walk(struct v9fs_session_info *v9ses, u32 fid, u32 newfid, | ||
358 | char *name, struct v9fs_fcall **rcall); | ||
359 | |||
360 | int v9fs_t_open(struct v9fs_session_info *v9ses, u32 fid, u8 mode, | ||
361 | struct v9fs_fcall **rcall); | ||
362 | |||
363 | int v9fs_t_remove(struct v9fs_session_info *v9ses, u32 fid, | ||
364 | struct v9fs_fcall **rcall); | ||
365 | |||
366 | int v9fs_t_create(struct v9fs_session_info *v9ses, u32 fid, char *name, | ||
367 | u32 perm, u8 mode, char *extension, struct v9fs_fcall **rcall); | ||
368 | |||
369 | int v9fs_t_read(struct v9fs_session_info *v9ses, u32 fid, | ||
370 | u64 offset, u32 count, struct v9fs_fcall **rcall); | ||
371 | |||
372 | int v9fs_t_write(struct v9fs_session_info *v9ses, u32 fid, u64 offset, | ||
373 | u32 count, const char __user * data, | ||
374 | struct v9fs_fcall **rcall); | ||
375 | int v9fs_printfcall(char *, int, struct v9fs_fcall *, int); | ||