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