1/* 2 * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify it 5 * under the terms of version 2 of the GNU General Public License as 6 * published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it would be useful, but 9 * WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 * 12 * Further, this software is distributed without any warranty that it is 13 * free of the rightful claim of any third person regarding infringement 14 * or the like. Any license provided herein, whether implied or 15 * otherwise, applies only to this software file. Patent licenses, if 16 * any, provided herein do not apply to combinations of this program with 17 * other software, or any other product whatsoever. 18 * 19 * You should have received a copy of the GNU General Public License along 20 * with this program; if not, write the Free Software Foundation, Inc., 59 21 * Temple Place - Suite 330, Boston MA 02111-1307, USA. 22 * 23 * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, 24 * Mountain View, CA 94043, or: 25 * 26 * http://www.sgi.com 27 * 28 * For further information regarding this notice, see: 29 * 30 * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ 31 */ 32#ifndef __XFS_CAP_H__ 33#define __XFS_CAP_H__ 34 35/* 36 * Capabilities 37 */ 38typedef __uint64_t xfs_cap_value_t; 39 40typedef struct xfs_cap_set { 41 xfs_cap_value_t cap_effective; /* use in capability checks */ 42 xfs_cap_value_t cap_permitted; /* combined with file attrs */ 43 xfs_cap_value_t cap_inheritable;/* pass through exec */ 44} xfs_cap_set_t; 45 46/* On-disk XFS extended attribute names */ 47#define SGI_CAP_FILE "SGI_CAP_FILE" 48#define SGI_CAP_FILE_SIZE (sizeof(SGI_CAP_FILE)-1) 49#define SGI_CAP_LINUX "SGI_CAP_LINUX" 50#define SGI_CAP_LINUX_SIZE (sizeof(SGI_CAP_LINUX)-1) 51 52/* 53 * For Linux, we take the bitfields directly from capability.h 54 * and no longer attempt to keep this attribute ondisk compatible 55 * with IRIX. Since this attribute is only set on exectuables, 56 * it just doesn't make much sense to try. We do use a different 57 * named attribute though, to avoid confusion. 58 */ 59 60#ifdef __KERNEL__ 61 62#ifdef CONFIG_FS_POSIX_CAP 63 64#include <linux/posix_cap_xattr.h> 65 66struct vnode; 67 68extern int xfs_cap_vhascap(struct vnode *); 69extern int xfs_cap_vset(struct vnode *, void *, size_t); 70extern int xfs_cap_vget(struct vnode *, void *, size_t); 71extern int xfs_cap_vremove(struct vnode *vp); 72 73#define _CAP_EXISTS xfs_cap_vhascap 74 75#else 76#define xfs_cap_vset(v,p,sz) (-EOPNOTSUPP) 77#define xfs_cap_vget(v,p,sz) (-EOPNOTSUPP) 78#define xfs_cap_vremove(v) (-EOPNOTSUPP) 79#define _CAP_EXISTS (NULL) 80#endif 81 82#endif /* __KERNEL__ */ 83 84#endif /* __XFS_CAP_H__ */ 85

