4 * 9P protocol definitions.
6 * Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com>
7 * Copyright (C) 2002 by Ron Minnich <rminnich@lanl.gov>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
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.
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
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,
98 V9FS_QTSYMLINK
= 0x02,
103 /* ample room for Twrite/Rread header (iounit) */
104 #define V9FS_IOHDRSZ 24
106 /* qids are the unique ID for a file (like an inode */
113 /* Plan 9 file metadata (stat) structure */
127 char *extension
; /* 9p2000.u extensions */
128 u32 n_uid
; /* 9p2000.u extensions */
129 u32 n_gid
; /* 9p2000.u extensions */
130 u32 n_muid
; /* 9p2000.u extensions */
134 /* Structures for Protocol Operations */
158 u32 errno
; /* 9p2000.u extension */
188 struct v9fs_qid
*wqids
;
254 struct v9fs_stat
*stat
;
259 struct v9fs_stat
*stat
;
266 * fcall is the primary packet structure
276 struct Tversion tversion
;
277 struct Rversion rversion
;
280 struct Rerror rerror
;
281 struct Tflush tflush
;
282 struct Rflush rflush
;
283 struct Tattach tattach
;
284 struct Rattach rattach
;
289 struct Tcreate tcreate
;
290 struct Rcreate rcreate
;
293 struct Twrite twrite
;
294 struct Rwrite rwrite
;
295 struct Tclunk tclunk
;
296 struct Rclunk rclunk
;
297 struct Tremove tremove
;
298 struct Rremove rremove
;
301 struct Twstat twstat
;
302 struct Rwstat rwstat
;
306 #define FCALL_ERROR(fcall) (fcall ? fcall->params.rerror.error : "")
308 int v9fs_t_version(struct v9fs_session_info
*v9ses
, u32 msize
,
309 char *version
, struct v9fs_fcall
**rcall
);
311 int v9fs_t_attach(struct v9fs_session_info
*v9ses
, char *uname
, char *aname
,
312 u32 fid
, u32 afid
, struct v9fs_fcall
**rcall
);
314 int v9fs_t_clunk(struct v9fs_session_info
*v9ses
, u32 fid
,
315 struct v9fs_fcall
**rcall
);
317 int v9fs_t_flush(struct v9fs_session_info
*v9ses
, u16 oldtag
);
319 int v9fs_t_stat(struct v9fs_session_info
*v9ses
, u32 fid
,
320 struct v9fs_fcall
**rcall
);
322 int v9fs_t_wstat(struct v9fs_session_info
*v9ses
, u32 fid
,
323 struct v9fs_stat
*stat
, struct v9fs_fcall
**rcall
);
325 int v9fs_t_walk(struct v9fs_session_info
*v9ses
, u32 fid
, u32 newfid
,
326 char *name
, struct v9fs_fcall
**rcall
);
328 int v9fs_t_open(struct v9fs_session_info
*v9ses
, u32 fid
, u8 mode
,
329 struct v9fs_fcall
**rcall
);
331 int v9fs_t_remove(struct v9fs_session_info
*v9ses
, u32 fid
,
332 struct v9fs_fcall
**rcall
);
334 int v9fs_t_create(struct v9fs_session_info
*v9ses
, u32 fid
, char *name
,
335 u32 perm
, u8 mode
, struct v9fs_fcall
**rcall
);
337 int v9fs_t_read(struct v9fs_session_info
*v9ses
, u32 fid
,
338 u64 offset
, u32 count
, struct v9fs_fcall
**rcall
);
340 int v9fs_t_write(struct v9fs_session_info
*v9ses
, u32 fid
, u64 offset
,
341 u32 count
, void *data
, struct v9fs_fcall
**rcall
);