# Copyright 2018 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

# 9p2000 mount/server descriptions. For protocol description see:
# http://knusbaum.com/useful/rfc9p2000
# http://ericvh.github.io/9p-rfc/rfc9p2000.html
# http://ericvh.github.io/9p-rfc/rfc9p2000.u.html
# https://github.com/chaos/diod/blob/master/protocol.md

include <linux/fs.h>
include <net/9p/9p.h>

resource rfd9p[fd]
resource wfd9p[fd]

mount$9p_fd(src const[0], dst ptr[in, filename], type ptr[in, string["9p"]], flags flags[mount_flags], opts ptr[in, p9_options_fd])
mount$9p_tcp(src ptr[in, string["127.0.0.1"]], dst ptr[in, filename], type ptr[in, string["9p"]], flags flags[mount_flags], opts ptr[in, p9_options_tcp])
mount$9p_unix(src ptr[in, filename], dst ptr[in, filename], type ptr[in, string["9p"]], flags flags[mount_flags], opts ptr[in, p9_options_unix])
mount$9p_rdma(src ptr[in, string["127.0.0.1"]], dst ptr[in, filename], type ptr[in, string["9p"]], flags flags[mount_flags], opts ptr[in, p9_options_rdma])
# TODO: src is some "virtio chan tag name".
mount$9p_virtio(src ptr[in, string], dst ptr[in, filename], type ptr[in, string["9p"]], flags flags[mount_flags], opts ptr[in, p9_options_virtio])
# TODO: src is some "xen dev tag name".
mount$9p_xen(src ptr[in, string], dst ptr[in, filename], type ptr[in, string["9p"]], flags flags[mount_flags], opts ptr[in, p9_options_xen])

pipe2$9p(pipefd ptr[out, pipe_9p], flags flags[pipe_flags])

pipe_9p {
	rfd	rfd9p
	wfd	wfd9p
}

write$9p(fd wfd9p, data ptr[in, array[int8]], size bytesize[data])

write$P9_RLERROR(fd wfd9p, data ptr[in, p9_msg[P9_RLERROR, p9_rerror]], size bytesize[data])
write$P9_RLERRORu(fd wfd9p, data ptr[in, p9_msg[P9_RLERROR, p9_rerroru]], size bytesize[data])
write$P9_RVERSION(fd wfd9p, data ptr[in, p9_rversion], size bytesize[data])
write$P9_RAUTH(fd wfd9p, data ptr[in, p9_msg[P9_RAUTH, p9_qid]], size bytesize[data])
write$P9_RFLUSH(fd wfd9p, data ptr[in, p9_msg[P9_RFLUSH, void]], size bytesize[data])
write$P9_RATTACH(fd wfd9p, data ptr[in, p9_msg[P9_RATTACH, p9_qid]], size bytesize[data])
write$P9_RWALK(fd wfd9p, data ptr[in, p9_msg[P9_RWALK, p9_rwalk]], size bytesize[data])
write$P9_ROPEN(fd wfd9p, data ptr[in, p9_msg[P9_ROPEN, p9_ropen]], size bytesize[data])
write$P9_RCREATE(fd wfd9p, data ptr[in, p9_msg[P9_RCREATE, p9_ropen]], size bytesize[data])
write$P9_RREAD(fd wfd9p, data ptr[in, p9_msg[P9_RREAD, p9_rread]], size bytesize[data])
write$P9_RWRITE(fd wfd9p, data ptr[in, p9_msg[P9_RWRITE, int32]], size bytesize[data])
write$P9_RCLUNK(fd wfd9p, data ptr[in, p9_msg[P9_RCLUNK, void]], size bytesize[data])
write$P9_RREMOVE(fd wfd9p, data ptr[in, p9_msg[P9_RREMOVE, void]], size bytesize[data])
write$P9_RWSTAT(fd wfd9p, data ptr[in, p9_msg[P9_RWSTAT, void]], size bytesize[data])
write$P9_RSTAT(fd wfd9p, data ptr[in, p9_msg[P9_RSTAT, p9_rstat]], size bytesize[data])
write$P9_RSTATu(fd wfd9p, data ptr[in, p9_msg[P9_RSTAT, p9_rstatu]], size bytesize[data])
write$P9_RSTATFS(fd wfd9p, data ptr[in, p9_msg[P9_RSTATFS, p9_rstatfs]], size bytesize[data])
write$P9_RLOPEN(fd wfd9p, data ptr[in, p9_msg[P9_RLOPEN, p9_ropen]], size bytesize[data])
write$P9_RLCREATE(fd wfd9p, data ptr[in, p9_msg[P9_RLCREATE, p9_ropen]], size bytesize[data])
write$P9_RSYMLINK(fd wfd9p, data ptr[in, p9_msg[P9_RSYMLINK, p9_qid]], size bytesize[data])
write$P9_RMKNOD(fd wfd9p, data ptr[in, p9_msg[P9_RMKNOD, p9_qid]], size bytesize[data])
write$P9_RRENAME(fd wfd9p, data ptr[in, p9_msg[P9_RRENAME, void]], size bytesize[data])
write$P9_RREADLINK(fd wfd9p, data ptr[in, p9_msg[P9_RREADLINK, p9_rreadlink]], size bytesize[data])
write$P9_RGETATTR(fd wfd9p, data ptr[in, p9_msg[P9_RGETATTR, p9_rgetattr]], size bytesize[data])
write$P9_RSETATTR(fd wfd9p, data ptr[in, p9_msg[P9_RSETATTR, void]], size bytesize[data])
write$P9_RXATTRWALK(fd wfd9p, data ptr[in, p9_msg[P9_RXATTRWALK, int64]], size bytesize[data])
write$P9_RXATTRCREATE(fd wfd9p, data ptr[in, p9_msg[P9_RXATTRCREATE, void]], size bytesize[data])
write$P9_RREADDIR(fd wfd9p, data ptr[in, p9_msg[P9_RREADDIR, p9_rreaddir]], size bytesize[data])
write$P9_RFSYNC(fd wfd9p, data ptr[in, p9_msg[P9_RFSYNC, void]], size bytesize[data])
write$P9_RLOCK(fd wfd9p, data ptr[in, p9_msg[P9_RLOCK, flags[p9_lock_status, int8]]], size bytesize[data])
write$P9_RGETLOCK(fd wfd9p, data ptr[in, p9_msg[P9_RGETLOCK, p9_rgetlock]], size bytesize[data])
write$P9_RLINK(fd wfd9p, data ptr[in, p9_msg[P9_RLINK, void]], size bytesize[data])
write$P9_RMKDIR(fd wfd9p, data ptr[in, p9_msg[P9_RMKDIR, p9_qid]], size bytesize[data])
write$P9_RRENAMEAT(fd wfd9p, data ptr[in, p9_msg[P9_RRENAMEAT, void]], size bytesize[data])
write$P9_RUNLINKAT(fd wfd9p, data ptr[in, p9_msg[P9_RUNLINKAT, void]], size bytesize[data])

type p9_msg[MSG, PAYLOAD] {
	size	bytesize[parent, int32]
	type	const[MSG, int8]
	tag	int16[1:2]
	payload	PAYLOAD
} [packed]

p9_rerror {
	ename_len	len[ename, int16]
	ename		stringnoz
} [packed]

p9_rerroru {
	error	p9_rerror
	errno	int32
} [packed]

p9_rversion {
	size		bytesize[parent, int32]
	type		const[P9_RVERSION, int8]
	tag		const[0xffff, int16]
	msize		int32
	version_len	len[version, int16]
	version		stringnoz[p9_versions]
} [packed]

p9_versions = "9P2000", "9P2000.u", "9P2000.L"

p9_qid {
	type	flags[p9_qid_types, int8]
	version	int32[0:4]
	path	int64[0:8]
} [packed]

p9_qid_types = P9_QTDIR, P9_QTAPPEND, P9_QTEXCL, P9_QTMOUNT, P9_QTAUTH, P9_QTTMP, P9_QTSYMLINK, P9_QTLINK, P9_QTFILE

p9_rwalk {
	nwqid	len[wqid, int16]
	wqid	array[p9_qid]
} [packed]

p9_ropen {
	qid	p9_qid
	iounit	int32
} [packed]

p9_rread {
	count	bytesize[data, int32]
	data	array[int8]
} [packed]

p9_rstat {
# I can't find this in any protocol descriptions, but linux seems to expect another int16 field here.
	ignored		const[0, int16]
	size		bytesize[parent, int16]
	type		int16
	dev		int32
	qid		p9_qid
	mode		flags[p9_perm_t, int32]
	atime		int32
	mtime		int32
	length		int64
	name_len	len[name, int16]
	name		stringnoz
	uid_len		len[uid, int16]
	uid		stringnoz
	gid_len		len[gid, int16]
	gid		stringnoz
	muid_len	len[muid, int16]
	muid		stringnoz
} [packed]

p9_rstatu {
	rstat		p9_rstat
	extension_len	len[extension, int16]
	extension	stringnoz
	n_uid		uid
	n_gid		gid
	n_muid		uid
} [packed]

p9_perm_t = P9_DMDIR, P9_DMAPPEND, P9_DMEXCL, P9_DMMOUNT, P9_DMAUTH, P9_DMTMP, P9_DMSYMLINK, P9_DMLINK, P9_DMDEVICE, P9_DMNAMEDPIPE, P9_DMSOCKET, P9_DMSETUID, P9_DMSETGID, P9_DMSETVTX

p9_rreadlink {
	target_len	len[target, int16]
	target		stringnoz[filename]
} [packed]

p9_rstatfs {
	type	int32
	bsize	int32
	blocks	int64
	bfree	int64
	bavail	int64
	files	int64
	ffree	int64
	fsid	int64
	namelen	int32
} [packed]

p9_rgetattr {
	valid		flags[p8_stats_valid, int64]
	qid		p9_qid
	mode		flags[open_mode, int32]
	uid		uid
	gid		gid
	nlink		int64
	rdev		int64
	size		int64
	blksize		int64
	blocks		int64
	atime_sec	int64
	atime_nsec	int64
	mtime_sec	int64
	mtime_nsec	int64
	ctime_sec	int64
	ctime_nsec	int64
	btime_sec	int64
	btime_nsec	int64
	gen		int64
	data_version	int64
} [packed]

p8_stats_valid = P9_STATS_MODE, P9_STATS_NLINK, P9_STATS_UID, P9_STATS_GID, P9_STATS_RDEV, P9_STATS_ATIME, P9_STATS_MTIME, P9_STATS_CTIME, P9_STATS_INO, P9_STATS_SIZE, P9_STATS_BLOCKS, P9_STATS_BTIME, P9_STATS_GEN, P9_STATS_DATA_VERSION

p9_lock_status = P9_LOCK_SUCCESS, P9_LOCK_BLOCKED, P9_LOCK_ERROR, P9_LOCK_GRACE
p9_lock_type = P9_LOCK_TYPE_RDLCK, P9_LOCK_TYPE_WRLCK, P9_LOCK_TYPE_UNLCK

p9_rreaddir {
	count	int32
	entries	array[p9_dir]
} [packed]

p9_dir {
	qid		p9_qid
	offset		int64
	type		int8
	name_len	len[name, int16]
	name		stringnoz[filename]
} [packed]

p9_rgetlock {
	type		flags[p9_lock_type, int8]
	start		int64
	length		int64
	proc_id		pid
	client_id_len	len[client_id, int16]
	client_id	stringnoz
} [packed]

# Mount options.

p9_options_fd {
	trans	stringnoz["trans=fd,"]
	rfdno	fs_opt_hex["rfdno", rfd9p]
	comma0	const[',', int8]
	wfdno	fs_opt_hex["wfdno", fd]
	comma1	const[',', int8]
	opts	fs_options[p9_options]
} [packed]

p9_options_tcp {
	trans	stringnoz["trans=tcp,"]
	port	fs_opt_hex["port", sock_port]
	comma0	const[',', int8]
	opts	fs_options[p9_options]
} [packed]

p9_options_unix {
	name	stringnoz["trans=unix,"]
	opts	fs_options[p9_options]
} [packed]

p9_options_rdma {
	trans	stringnoz["trans=rdma,"]
	port	fs_opt_hex["port", sock_port]
	comma0	const[',', int8]
	opts	fs_options[p9_options_rdma_opt]
} [packed]

p9_options_rdma_opt [
	common	p9_options
	timeout	fs_opt_hex["timeout", intptr]
	sq	fs_opt_hex["sq", intptr]
	rq	fs_opt_hex["rq", intptr]
] [varlen]

p9_options_virtio {
	trans	stringnoz["trans=virtio,"]
	opts	fs_options[p9_options]
} [packed]

p9_options_xen {
	trans	stringnoz["trans=xen,"]
	opts	fs_options[p9_options]
} [packed]

p9_options [
	uname		fs_opt_str["uname"]
	aname		fs_opt_str["aname"]
	cache_none	stringnoz["cache=none"]
	cache_loose	stringnoz["cache=loose"]
	cache_fscache	stringnoz["cache=fscache"]
	cache_mmap	stringnoz["cache=mmap"]
	debug		fs_opt_hex["debug", int64]
	noextend	stringnoz["noextend"]
	nodevmap	stringnoz["nodevmap"]
	version_9p2000	stringnoz["version=9p2000"]
	version_u	stringnoz["version=9p2000.u"]
	version_L	stringnoz["version=9p2000.L"]
	cachetag	fs_opt_str["cachetag"]
	loose		stringnoz["loose"]
	fscache		stringnoz["fscache"]
	mmap		stringnoz["mmap"]
	posixacl	stringnoz["posixacl"]
	privport	stringnoz["privport"]
	msize		fs_opt_hex["msize", int32]
	dfltuid		fs_opt_hex["dfltuid", uid]
	dfltgid		fs_opt_hex["dfltgid", gid]
	afid		fs_opt_hex["afid", int32]
	access_user	stringnoz["access=user"]
	access_any	stringnoz["access=any"]
	access_client	stringnoz["access=client"]
	access_uid	fs_opt_dec["access", uid]
] [varlen]
