xref: /openbmc/qemu/hw/9pfs/9p-proxy.h (revision 71d72ece)
1494a8ebeSWei Liu /*
2494a8ebeSWei Liu  * 9p Proxy callback
3494a8ebeSWei Liu  *
4494a8ebeSWei Liu  * Copyright IBM, Corp. 2011
5494a8ebeSWei Liu  *
6494a8ebeSWei Liu  * Authors:
7494a8ebeSWei Liu  * M. Mohan Kumar <mohan@in.ibm.com>
8494a8ebeSWei Liu  *
9494a8ebeSWei Liu  * This work is licensed under the terms of the GNU GPL, version 2.  See
10494a8ebeSWei Liu  * the COPYING file in the top-level directory.
11494a8ebeSWei Liu  */
122a6a4076SMarkus Armbruster 
13*71d72eceSChristian Schoenebeck /*
14*71d72eceSChristian Schoenebeck  * NOTE: The 9p 'proxy' backend is deprecated (since QEMU 8.1) and will be
15*71d72eceSChristian Schoenebeck  * removed in a future version of QEMU!
16*71d72eceSChristian Schoenebeck  */
17*71d72eceSChristian Schoenebeck 
182a6a4076SMarkus Armbruster #ifndef QEMU_9P_PROXY_H
192a6a4076SMarkus Armbruster #define QEMU_9P_PROXY_H
20494a8ebeSWei Liu 
21494a8ebeSWei Liu #define PROXY_MAX_IO_SZ (64 * 1024)
22494a8ebeSWei Liu #define V9FS_FD_VALID INT_MAX
23494a8ebeSWei Liu 
24494a8ebeSWei Liu /*
25494a8ebeSWei Liu  * proxy iovec only support one element and
26494a8ebeSWei Liu  * marsha/unmarshal doesn't do little endian conversion.
27494a8ebeSWei Liu  */
28494a8ebeSWei Liu #define proxy_unmarshal(in_sg, offset, fmt, args...) \
292209bd05SWei Liu     v9fs_iov_unmarshal(in_sg, 1, offset, 0, fmt, ##args)
30494a8ebeSWei Liu #define proxy_marshal(out_sg, offset, fmt, args...) \
312209bd05SWei Liu     v9fs_iov_marshal(out_sg, 1, offset, 0, fmt, ##args)
32494a8ebeSWei Liu 
33494a8ebeSWei Liu union MsgControl {
34494a8ebeSWei Liu     struct cmsghdr cmsg;
35494a8ebeSWei Liu     char control[CMSG_SPACE(sizeof(int))];
36494a8ebeSWei Liu };
37494a8ebeSWei Liu 
38494a8ebeSWei Liu typedef struct {
39494a8ebeSWei Liu     uint32_t type;
40494a8ebeSWei Liu     uint32_t size;
41494a8ebeSWei Liu } ProxyHeader;
42494a8ebeSWei Liu 
43494a8ebeSWei Liu #define PROXY_HDR_SZ (sizeof(ProxyHeader))
44494a8ebeSWei Liu 
45494a8ebeSWei Liu enum {
46494a8ebeSWei Liu     T_SUCCESS = 0,
47494a8ebeSWei Liu     T_ERROR,
48494a8ebeSWei Liu     T_OPEN,
49494a8ebeSWei Liu     T_CREATE,
50494a8ebeSWei Liu     T_MKNOD,
51494a8ebeSWei Liu     T_MKDIR,
52494a8ebeSWei Liu     T_SYMLINK,
53494a8ebeSWei Liu     T_LINK,
54494a8ebeSWei Liu     T_LSTAT,
55494a8ebeSWei Liu     T_READLINK,
56494a8ebeSWei Liu     T_STATFS,
57494a8ebeSWei Liu     T_CHMOD,
58494a8ebeSWei Liu     T_CHOWN,
59494a8ebeSWei Liu     T_TRUNCATE,
60494a8ebeSWei Liu     T_UTIME,
61494a8ebeSWei Liu     T_RENAME,
62494a8ebeSWei Liu     T_REMOVE,
63494a8ebeSWei Liu     T_LGETXATTR,
64494a8ebeSWei Liu     T_LLISTXATTR,
65494a8ebeSWei Liu     T_LSETXATTR,
66494a8ebeSWei Liu     T_LREMOVEXATTR,
67494a8ebeSWei Liu     T_GETVERSION,
68494a8ebeSWei Liu };
69494a8ebeSWei Liu 
70494a8ebeSWei Liu typedef struct {
71494a8ebeSWei Liu     uint64_t st_dev;
72494a8ebeSWei Liu     uint64_t st_ino;
73494a8ebeSWei Liu     uint64_t st_nlink;
74494a8ebeSWei Liu     uint32_t st_mode;
75494a8ebeSWei Liu     uint32_t st_uid;
76494a8ebeSWei Liu     uint32_t st_gid;
77494a8ebeSWei Liu     uint64_t st_rdev;
78494a8ebeSWei Liu     uint64_t st_size;
79494a8ebeSWei Liu     uint64_t st_blksize;
80494a8ebeSWei Liu     uint64_t st_blocks;
81494a8ebeSWei Liu     uint64_t st_atim_sec;
82494a8ebeSWei Liu     uint64_t st_atim_nsec;
83494a8ebeSWei Liu     uint64_t st_mtim_sec;
84494a8ebeSWei Liu     uint64_t st_mtim_nsec;
85494a8ebeSWei Liu     uint64_t st_ctim_sec;
86494a8ebeSWei Liu     uint64_t st_ctim_nsec;
87494a8ebeSWei Liu } ProxyStat;
88494a8ebeSWei Liu 
89494a8ebeSWei Liu typedef struct {
90494a8ebeSWei Liu     uint64_t f_type;
91494a8ebeSWei Liu     uint64_t f_bsize;
92494a8ebeSWei Liu     uint64_t f_blocks;
93494a8ebeSWei Liu     uint64_t f_bfree;
94494a8ebeSWei Liu     uint64_t f_bavail;
95494a8ebeSWei Liu     uint64_t f_files;
96494a8ebeSWei Liu     uint64_t f_ffree;
97494a8ebeSWei Liu     uint64_t f_fsid[2];
98494a8ebeSWei Liu     uint64_t f_namelen;
99494a8ebeSWei Liu     uint64_t f_frsize;
100494a8ebeSWei Liu } ProxyStatFS;
101494a8ebeSWei Liu #endif
102