summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2024-09-22 21:26:21 -0600
committerLuke T. Shumaker <lukeshu@lukeshu.com>2024-09-22 21:26:21 -0600
commitc3d212e15ce147f0b0ceaac7a50f9a44831aacb9 (patch)
tree63b101270a0e3801cd37c50378c9115c311c38bd
parentd0ece36e8a041cb3d58194c18d736a0ef9105e75 (diff)
wip
-rw-r--r--net9p_defs.txt97
1 files changed, 92 insertions, 5 deletions
diff --git a/net9p_defs.txt b/net9p_defs.txt
index 3eba255..c3fcc9b 100644
--- a/net9p_defs.txt
+++ b/net9p_defs.txt
@@ -52,6 +52,8 @@ stat = "stat_size[2]"
"file_owner_gid[s]"
"file_last_modified_uid[s]"
+stat.u = stat + "file_extension[s] file_owner_n_uid[4] file_owner_n_gid[4] file_last_modified_n_uid[4]"
+
# "9P2000" base protocol
# https://ericvh.github.io/9p-rfc/rfc9p2000.html
# https://github.com/ericvh/9p-rfc/blob/master/9p2000.xml
@@ -61,21 +63,21 @@ stat = "stat_size[2]"
# references.
100 = Tversion "max_msg_size[4] version[s]"
101 = Rversion "max_msg_size[4] version[s]"
-102 = Tauth "afid[4] uname[s] aname[s]"
+102 = Tauth "afid[4] uname[s] aname[s]" .u+="nxs_uname[4]"
103 = Rauth "aqid[q]"
-104 = Tattach "fid[4] afid[4] uname[s] aname[s]"
+104 = Tattach "fid[4] afid[4] uname[s] aname[s]" .u+="n_uname[4]"
105 = Rattach "qid[q]"
#106 = Terror "illegal"
-107 = Rerror "ename[s]"
+107 = Rerror "ename[s]" .u+="errno[4]"
108 = Tflush "oldtag[2]"
109 = Rflush ""
110 = Twalk "fid[4] newfid[4] nwname[2] wname[s*nwname]"
111 = Rwalk "nwqid[2] wqid[q*nwqid]"
112 = Topen "fid[4] mode[1]"
113 = Ropen "qid[q] iounit[4]"
-114 = Tcreate "fid[4] name[s] perm[4] mode[1]"
+114 = Tcreate "fid[4] name[s] perm[4] mode[1]" .u+="extension[s]"
115 = Rcreate "qid[q] iounit[4]"
-116 = Tread "fid[4] offset[8] count[4]"
+116 = Tread "fid[4] offset[8] count[4]" # base="returns a sequence of "entries[stat*cnt]""; .L=can't read directories
117 = Rread "data[d]"
118 = Twrite "fid[4] offset[8] data[d]"
119 = Rwrite "count[4]"
@@ -87,3 +89,88 @@ stat = "stat_size[2]"
125 = Rstat "stat[stat]"
126 = Twstat "fid[4] stat[stat]"
127 = Rwstat ""
+
+# "9P2000.u" Unix extension
+# https://ericvh.github.io/9p-rfc/rfc9p2000.u.html
+# https://github.com/ericvh/9p-rfc/blob/master/9p2000.u.xml
+#
+# (no new message type numbers)
+
+# "9P2000.L" Linux extension
+# https://github.com/chaos/diod/blob/master/protocol.md
+#6 = Tlerror "illegal" # analogous to 106=Terror
+7 = Rlerror "ecode[4]" # analogous to 107=Rerror
+8 = Tstatfs "TODO"
+9 = Rstatfs "TODO"
+12 = Tlopen "TODO" # analogous to 112=Topen
+13 = Rlopen "TODO" # analogous to 113=Ropen
+14 = Tlcreate "TODO" # analogous to 114=Tcreate
+15 = Rlcreate "TODO" # analogous to 115=Rcreate
+16 = Tsymlink "TODO"
+17 = Rsymlink "TODO"
+18 = Tmknod "TODO"
+19 = Rmknod "TODO"
+20 = Trename "TODO"
+21 = Rrename "TODO"
+22 = Treadlink "TODO"
+23 = Rreadlink "TODO"
+24 = Tgetattr "TODO"
+25 = Rgetattr "TODO"
+26 = Tsetattr "TODO"
+27 = Rsetattr "TODO"
+#...
+30 = Txattrwalk "TODO"
+31 = Rxattrwalk "TODO"
+32 = Txattrcreate "TODO"
+33 = Rxattrcreate "TODO"
+#...
+40 = Treaddir "TODO"
+41 = Rreaddir "TODO"
+#...
+50 = Tfsync "TODO"
+51 = Rfsync "TODO"
+52 = Tlock "TODO"
+53 = Rlock "TODO"
+54 = Tgetlock "TODO"
+55 = Rgetlock "TODO"
+# ...
+70 = Tlink "TODO"
+71 = Rlink "TODO"
+72 = Tmkdir "TODO"
+73 = Tmkdir "TODO"
+74 = Trenameat "TODO"
+75 = Rrenameat "TODO"
+76 = Tunlinkat "TODO"
+77 = Runlinkat "TODO"
+
+# "9P2000.e" Erlang extension
+# https://erlangonxen.org/more/9p2000e
+# https://github.com/cloudozer/ling/blob/master/doc/9p2000e.md
+#
+# TODO
+
+# qid.types
+QTDIR = 1<<7
+QTAPPEND = 1<<6
+QTEXCL = 1<<5
+QTMOUNT = 1<<4 # been around forever, but undocumented?
+QTAUTH = 1<<3
+QTTMP = 1<<2 # added to Plan 9 2003-12
+QTSYMLINK = 1<<1 # .u
+QTFILE = 1<<0
+
+DMDIR = 1<<31
+DMAPPEND = 1<<30
+DMEXCL = 1<<29
+DMMOUNT = 1<<28
+DMAUTH = 1<<27
+DMTMP = 1<<26
+#25
+#24
+DMDEVICE = 1<<23 # .u
+#22
+DMNAMEDPIPE = 1<<21 # .u
+DMSOCKET = 1<<20 # .u
+DMSETUID = 1<<19 # .u
+DMSETGID = 1<<18 # .u
+