1267ae092SWei Liu /* 2267ae092SWei Liu * 9p 3267ae092SWei Liu * 4267ae092SWei Liu * Copyright IBM, Corp. 2010 5267ae092SWei Liu * 6267ae092SWei Liu * Authors: 7267ae092SWei Liu * Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> 8267ae092SWei Liu * 9267ae092SWei Liu * This work is licensed under the terms of the GNU GPL, version 2. See 10267ae092SWei Liu * the COPYING file in the top-level directory. 11267ae092SWei Liu * 12267ae092SWei Liu */ 132a6a4076SMarkus Armbruster 142a6a4076SMarkus Armbruster #ifndef QEMU_9P_XATTR_H 152a6a4076SMarkus Armbruster #define QEMU_9P_XATTR_H 16267ae092SWei Liu 17267ae092SWei Liu #include "qemu/xattr.h" 18267ae092SWei Liu 19*01847522SGreg Kurz struct XattrOperations { 20267ae092SWei Liu const char *name; 21267ae092SWei Liu ssize_t (*getxattr)(FsContext *ctx, const char *path, 22267ae092SWei Liu const char *name, void *value, size_t size); 23267ae092SWei Liu ssize_t (*listxattr)(FsContext *ctx, const char *path, 24267ae092SWei Liu char *name, void *value, size_t size); 25267ae092SWei Liu int (*setxattr)(FsContext *ctx, const char *path, const char *name, 26267ae092SWei Liu void *value, size_t size, int flags); 27267ae092SWei Liu int (*removexattr)(FsContext *ctx, 28267ae092SWei Liu const char *path, const char *name); 29*01847522SGreg Kurz }; 30267ae092SWei Liu 3156ad3e54SGreg Kurz ssize_t local_getxattr_nofollow(FsContext *ctx, const char *path, 3256ad3e54SGreg Kurz const char *name, void *value, size_t size); 333e36aba7SGreg Kurz ssize_t local_setxattr_nofollow(FsContext *ctx, const char *path, 343e36aba7SGreg Kurz const char *name, void *value, size_t size, 353e36aba7SGreg Kurz int flags); 3672f0d0bfSGreg Kurz ssize_t local_removexattr_nofollow(FsContext *ctx, const char *path, 3772f0d0bfSGreg Kurz const char *name); 38267ae092SWei Liu 39267ae092SWei Liu extern XattrOperations mapped_user_xattr; 40267ae092SWei Liu extern XattrOperations passthrough_user_xattr; 41267ae092SWei Liu 42267ae092SWei Liu extern XattrOperations mapped_pacl_xattr; 43267ae092SWei Liu extern XattrOperations mapped_dacl_xattr; 44267ae092SWei Liu extern XattrOperations passthrough_acl_xattr; 45267ae092SWei Liu extern XattrOperations none_acl_xattr; 46267ae092SWei Liu 47267ae092SWei Liu extern XattrOperations *mapped_xattr_ops[]; 48267ae092SWei Liu extern XattrOperations *passthrough_xattr_ops[]; 49267ae092SWei Liu extern XattrOperations *none_xattr_ops[]; 50267ae092SWei Liu 51267ae092SWei Liu ssize_t v9fs_get_xattr(FsContext *ctx, const char *path, const char *name, 52267ae092SWei Liu void *value, size_t size); 53267ae092SWei Liu ssize_t v9fs_list_xattr(FsContext *ctx, const char *path, void *value, 54267ae092SWei Liu size_t vsize); 55267ae092SWei Liu int v9fs_set_xattr(FsContext *ctx, const char *path, const char *name, 56267ae092SWei Liu void *value, size_t size, int flags); 57267ae092SWei Liu int v9fs_remove_xattr(FsContext *ctx, const char *path, const char *name); 5856fc494bSGreg Kurz 59267ae092SWei Liu ssize_t pt_listxattr(FsContext *ctx, const char *path, char *name, void *value, 60267ae092SWei Liu size_t size); 6156fc494bSGreg Kurz ssize_t pt_getxattr(FsContext *ctx, const char *path, const char *name, 6256fc494bSGreg Kurz void *value, size_t size); 6356fc494bSGreg Kurz int pt_setxattr(FsContext *ctx, const char *path, const char *name, void *value, 6456fc494bSGreg Kurz size_t size, int flags); 6556fc494bSGreg Kurz int pt_removexattr(FsContext *ctx, const char *path, const char *name); 66267ae092SWei Liu 6756fc494bSGreg Kurz ssize_t notsup_getxattr(FsContext *ctx, const char *path, const char *name, 6856fc494bSGreg Kurz void *value, size_t size); 6956fc494bSGreg Kurz int notsup_setxattr(FsContext *ctx, const char *path, const char *name, 7056fc494bSGreg Kurz void *value, size_t size, int flags); 7156fc494bSGreg Kurz ssize_t notsup_listxattr(FsContext *ctx, const char *path, char *name, 7256fc494bSGreg Kurz void *value, size_t size); 7356fc494bSGreg Kurz int notsup_removexattr(FsContext *ctx, const char *path, const char *name); 74267ae092SWei Liu 75267ae092SWei Liu #endif 76