Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0 */ 2 : : /* 3 : : * File: linux/nfsacl.h 4 : : * 5 : : * (C) 2003 Andreas Gruenbacher <agruen@suse.de> 6 : : */ 7 : : #ifndef __LINUX_NFSACL_H 8 : : #define __LINUX_NFSACL_H 9 : : 10 : : 11 : : #include <linux/posix_acl.h> 12 : : #include <linux/sunrpc/xdr.h> 13 : : #include <uapi/linux/nfsacl.h> 14 : : 15 : : /* Maximum number of ACL entries over NFS */ 16 : : #define NFS_ACL_MAX_ENTRIES 1024 17 : : 18 : : #define NFSACL_MAXWORDS (2*(2+3*NFS_ACL_MAX_ENTRIES)) 19 : : #define NFSACL_MAXPAGES ((2*(8+12*NFS_ACL_MAX_ENTRIES) + PAGE_SIZE-1) \ 20 : : >> PAGE_SHIFT) 21 : : 22 : : #define NFS_ACL_MAX_ENTRIES_INLINE (5) 23 : : #define NFS_ACL_INLINE_BUFSIZE ((2*(2+3*NFS_ACL_MAX_ENTRIES_INLINE)) << 2) 24 : : 25 : : static inline unsigned int 26 : : nfsacl_size(struct posix_acl *acl_access, struct posix_acl *acl_default) 27 : : { 28 : : unsigned int w = 16; 29 : 0 : w += max(acl_access ? (int)acl_access->a_count : 3, 4) * 12; 30 : 0 : if (acl_default) 31 : 0 : w += max((int)acl_default->a_count, 4) * 12; 32 : : return w; 33 : : } 34 : : 35 : : extern int 36 : : nfsacl_encode(struct xdr_buf *buf, unsigned int base, struct inode *inode, 37 : : struct posix_acl *acl, int encode_entries, int typeflag); 38 : : extern int 39 : : nfsacl_decode(struct xdr_buf *buf, unsigned int base, unsigned int *aclcnt, 40 : : struct posix_acl **pacl); 41 : : 42 : : #endif /* __LINUX_NFSACL_H */