summaryrefslogtreecommitdiff
path: root/lib9p/idl/2010-9P2000.L.9p
blob: 5a7d09c183ad9ffcfbcf2de38543dd9e2d411ed6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# lib9p/idl/2010-9P2000.L.9p - Definitions of 9P2000.L messages
#
# Copyright (C) 2024-2025  Luke T. Shumaker <lukeshu@lukeshu.com>
# SPDX-License-Identifier: AGPL-3.0-or-later

# "9P2000.L" Linux extension
# https://github.com/chaos/diod/blob/master/protocol.md
version "9P2000.L"

from ./2002-9P2000.9p import tag, fid, s, d, d_signed, qt, qid
from ./2002-9P2000.9p import Rerror
from ./2002-9P2000.9p import Tversion, Rversion, Tflush, Rflush, Twalk, Rwalk, Tread, Rread, Twrite, Rwrite, Tclunk, Rclunk, Tremove, Rremove
from ./2005-9P2000.u.9p import nuid, Tauth, Rauth, Tattach, Rattach

bitfield getattr = 8
         "0=MODE"
         "1=NLINK"
         "2=UID"
         "3=GID"
         "4=RDEV"
         "5=ATIME"
         "6=MTIME"
         "7=CTIME"
         "8=INO"
         "9=SIZE"
         "10=BLOCKS"

         "11=BTIME"
         "12=GEN"
         "13=DATA_VERSION"

         "BASIC=0x000007ff" # Mask for fields up to BLOCKS
         "ALL  =0x00003fff" # Mask for All fields above

bitfield setattr = 4
         "0=MODE"
         "1=UID"
         "2=GID"
         "3=SIZE"
         "4=ATIME"
         "5=MTIME"
         "6=CTIME"
         "7=ATIME_SET"
         "8=MTIME_SET"

num lock_type = 1
    "RDLCK=0"
    "WRLCK=1"
    "UNLCK=2"

bitfield lock_flags = 4
         "0=BLOCK"
         "1=RECLAIM"

num lock_status = 1
    "SUCCESS=0"
    "BLOCKED=1"
    "ERROR=2"
    "GRACE=3"

#msg Tlerror      = "size[4,val=end-&size] typ[1,val=6]  tag[tag] illegal" # analogous to 106/Terror
msg Rlerror      = "size[4,val=end-&size] typ[1,val=7]  tag[tag] ecode[4]" # analogous to 107/Rerror
msg Tstatfs      = "size[4,val=end-&size] typ[1,val=8]  tag[tag] fid[fid]"
msg Rstatfs      = "size[4,val=end-&size] typ[1,val=9]  tag[tag] type[4] bsize[4] blocks[8] bfree[8] bavail[8] files[8] ffree[8] fsid[8] namelen[4]"
msg Tlopen       = "size[4,val=end-&size] typ[1,val=12] tag[tag] fid[fid] flags[4]" # analogous to 112/Topen
msg Rlopen       = "size[4,val=end-&size] typ[1,val=13] tag[tag] qid[qid] iounit[4]" # analogous to 113/Ropen
msg Tlcreate     = "size[4,val=end-&size] typ[1,val=14] tag[tag] fid[fid] name[s] flags[4] mode[4] gid[nuid]" # analogous to 114/Tcreate
msg Rlcreate     = "size[4,val=end-&size] typ[1,val=15] tag[tag] qid[qid] iounit[4]" # analogous to 115/Rcreate
msg Tsymlink     = "size[4,val=end-&size] typ[1,val=16] tag[tag] fid[fid] name[s] symtgt[s] gid[nuid]"
msg Rsymlink     = "size[4,val=end-&size] typ[1,val=17] tag[tag] qid[qid]"
msg Tmknod       = "size[4,val=end-&size] typ[1,val=18] tag[tag] dfid[fid] name[s] mode[4] major[4] minor[4] gid[nuid]"
msg Rmknod       = "size[4,val=end-&size] typ[1,val=19] tag[tag] qid[qid]"
msg Trename      = "size[4,val=end-&size] typ[1,val=20] tag[tag] fid[fid] dfid[fid] name[s]"
msg Rrename      = "size[4,val=end-&size] typ[1,val=21] tag[tag]"
msg Treadlink    = "size[4,val=end-&size] typ[1,val=22] tag[tag] fid[fid]"
msg Rreadlink    = "size[4,val=end-&size] typ[1,val=23] tag[tag] target[s]"
msg Tgetattr     = "size[4,val=end-&size] typ[1,val=24] tag[tag] fid[fid] request_mask[getattr]"
msg Rgetattr     = "size[4,val=end-&size] typ[1,val=25] tag[tag] valid[8] qid[qid] mode[4] uid[nuid] gid[nuid] nlink[8]"
                                                       "rdev[8] filesize[8] blksize[8] blocks[8]"
                                                       "atime_sec[8] atime_nsec[8] mtime_sec[8] mtime_nsec[8]"
                                                       "ctime_sec[8] ctime_nsec[8] btime_sec[8] btime_nsec[8]"
                                                       "gen[8] data_version[8]"
msg Tsetattr     = "size[4,val=end-&size] typ[1,val=26] tag[tag] fid[fid] valid[setattr] mode[4] uid[nuid] gid[nuid] filesize[8] atime_sec[8] atime_nsec[8] mtime_sec[8] mtime_nsec[8]"
msg Rsetattr     = "size[4,val=end-&size] typ[1,val=27] tag[tag]"
#...
msg Txattrwalk   = "size[4,val=end-&size] typ[1,val=30] tag[tag] fid[fid] newfid[fid] name[s]"
msg Rxattrwalk   = "size[4,val=end-&size] typ[1,val=31] tag[tag] attr_size[8]"
msg Txattrcreate = "size[4,val=end-&size] typ[1,val=32] tag[tag] fid[fid] name[s] attr_size[8] flags[4]"
msg Rxattrcreate = "size[4,val=end-&size] typ[1,val=33] tag[tag]"
#...
msg Treaddir     = "size[4,val=end-&size] typ[1,val=40] tag[tag] fid[fid] offset[8] count[4]"
msg Rreaddir     = "size[4,val=end-&size] typ[1,val=41] tag[tag] data[d]" # data is "qid[qid] offset[8] type[1] name[s]"
#...
msg Tfsync       = "size[4,val=end-&size] typ[1,val=50] tag[tag] fid[fid] datasync[4]"
msg Rfsync       = "size[4,val=end-&size] typ[1,val=51] tag[tag]"
msg Tlock        = "size[4,val=end-&size] typ[1,val=52] tag[tag] fid[fid] type[lock_type] flags[lock_flags] start[8] length[8] proc_id[4] client_id[s]"
msg Rlock        = "size[4,val=end-&size] typ[1,val=53] tag[tag] status[lock_status]"
msg Tgetlock     = "size[4,val=end-&size] typ[1,val=54] tag[tag] fid[fid] type[1] start[8] length[8] proc_id[4] client_id[s]"
msg Rgetlock     = "size[4,val=end-&size] typ[1,val=55] tag[tag] type[1] start[8] length[8] proc_id[4] client_id[s]"
# ...
msg Tlink        = "size[4,val=end-&size] typ[1,val=70] tag[tag] dfid[fid] fid[fid] name[s]"
msg Rlink        = "size[4,val=end-&size] typ[1,val=71] tag[tag]"
msg Tmkdir       = "size[4,val=end-&size] typ[1,val=72] tag[tag] dfid[fid] name[s] mode[4] gid[nuid]"
msg Rmkdir       = "size[4,val=end-&size] typ[1,val=73] tag[tag] qid[qid]"
msg Trenameat    = "size[4,val=end-&size] typ[1,val=74] tag[tag] olddirfid[fid] oldname[s] newdirfid[fid] newname[s]"
msg Rrenameat    = "size[4,val=end-&size] typ[1,val=75] tag[tag]"
msg Tunlinkat    = "size[4,val=end-&size] typ[1,val=76] tag[tag] dirfd[fid] name[s] flags[4]"
msg Runlinkat    = "size[4,val=end-&size] typ[1,val=77] tag[tag]"