1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru File: linux/xattr.h 3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru Extended attributes handling. 5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru Copyright (C) 2001 by Andreas Gruenbacher <a.gruenbacher@computer.org> 7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru Copyright (c) 2001-2002 Silicon Graphics, Inc. All Rights Reserved. 8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru Copyright (c) 2004 Red Hat, Inc., James Morris <jmorris@redhat.com> 9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru*/ 10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _LINUX_XATTR_H 11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _LINUX_XATTR_H 12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_CREATE 0x1 /* set value, fail if attr already exists */ 14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */ 15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Namespaces */ 17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_OS2_PREFIX "os2." 18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_OS2_PREFIX_LEN (sizeof (XATTR_OS2_PREFIX) - 1) 19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_SECURITY_PREFIX "security." 21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_SECURITY_PREFIX_LEN (sizeof (XATTR_SECURITY_PREFIX) - 1) 22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_SYSTEM_PREFIX "system." 24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_SYSTEM_PREFIX_LEN (sizeof (XATTR_SYSTEM_PREFIX) - 1) 25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_TRUSTED_PREFIX "trusted." 27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_TRUSTED_PREFIX_LEN (sizeof (XATTR_TRUSTED_PREFIX) - 1) 28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_USER_PREFIX "user." 30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XATTR_USER_PREFIX_LEN (sizeof (XATTR_USER_PREFIX) - 1) 31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct xattr_handler { 34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char *prefix; 35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru size_t (*list)(struct inode *inode, char *list, size_t list_size, 36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char *name, size_t name_len); 37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*get)(struct inode *inode, const char *name, void *buffer, 38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru size_t size); 39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*set)(struct inode *inode, const char *name, const void *buffer, 40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru size_t size, int flags); 41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querussize_t vfs_getxattr(struct dentry *, char *, void *, size_t); 44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruint vfs_setxattr(struct dentry *, char *, void *, size_t, int); 45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruint vfs_removexattr(struct dentry *, char *); 46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querussize_t generic_getxattr(struct dentry *dentry, const char *name, void *buffer, size_t size); 48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querussize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size); 49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruint generic_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags); 50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruint generic_removexattr(struct dentry *dentry, const char *name); 51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* _LINUX_XATTR_H */ 53