xref: /qemu/hw/9pfs/9p-proxy.h (revision 6402cbbb)
1 /*
2  * 9p Proxy callback
3  *
4  * Copyright IBM, Corp. 2011
5  *
6  * Authors:
7  * M. Mohan Kumar <mohan@in.ibm.com>
8  *
9  * This work is licensed under the terms of the GNU GPL, version 2.  See
10  * the COPYING file in the top-level directory.
11  */
12 
13 #ifndef QEMU_9P_PROXY_H
14 #define QEMU_9P_PROXY_H
15 
16 #define PROXY_MAX_IO_SZ (64 * 1024)
17 #define V9FS_FD_VALID INT_MAX
18 
19 /*
20  * proxy iovec only support one element and
21  * marsha/unmarshal doesn't do little endian conversion.
22  */
23 #define proxy_unmarshal(in_sg, offset, fmt, args...) \
24     v9fs_iov_unmarshal(in_sg, 1, offset, 0, fmt, ##args)
25 #define proxy_marshal(out_sg, offset, fmt, args...) \
26     v9fs_iov_marshal(out_sg, 1, offset, 0, fmt, ##args)
27 
28 union MsgControl {
29     struct cmsghdr cmsg;
30     char control[CMSG_SPACE(sizeof(int))];
31 };
32 
33 typedef struct {
34     uint32_t type;
35     uint32_t size;
36 } ProxyHeader;
37 
38 #define PROXY_HDR_SZ (sizeof(ProxyHeader))
39 
40 enum {
41     T_SUCCESS = 0,
42     T_ERROR,
43     T_OPEN,
44     T_CREATE,
45     T_MKNOD,
46     T_MKDIR,
47     T_SYMLINK,
48     T_LINK,
49     T_LSTAT,
50     T_READLINK,
51     T_STATFS,
52     T_CHMOD,
53     T_CHOWN,
54     T_TRUNCATE,
55     T_UTIME,
56     T_RENAME,
57     T_REMOVE,
58     T_LGETXATTR,
59     T_LLISTXATTR,
60     T_LSETXATTR,
61     T_LREMOVEXATTR,
62     T_GETVERSION,
63 };
64 
65 typedef struct {
66     uint64_t st_dev;
67     uint64_t st_ino;
68     uint64_t st_nlink;
69     uint32_t st_mode;
70     uint32_t st_uid;
71     uint32_t st_gid;
72     uint64_t st_rdev;
73     uint64_t st_size;
74     uint64_t st_blksize;
75     uint64_t st_blocks;
76     uint64_t st_atim_sec;
77     uint64_t st_atim_nsec;
78     uint64_t st_mtim_sec;
79     uint64_t st_mtim_nsec;
80     uint64_t st_ctim_sec;
81     uint64_t st_ctim_nsec;
82 } ProxyStat;
83 
84 typedef struct {
85     uint64_t f_type;
86     uint64_t f_bsize;
87     uint64_t f_blocks;
88     uint64_t f_bfree;
89     uint64_t f_bavail;
90     uint64_t f_files;
91     uint64_t f_ffree;
92     uint64_t f_fsid[2];
93     uint64_t f_namelen;
94     uint64_t f_frsize;
95 } ProxyStatFS;
96 #endif
97