diff options
Diffstat (limited to 'libglusterfs/src/glusterfs-acl.h')
| -rw-r--r-- | libglusterfs/src/glusterfs-acl.h | 150 | 
1 files changed, 73 insertions, 77 deletions
diff --git a/libglusterfs/src/glusterfs-acl.h b/libglusterfs/src/glusterfs-acl.h index 6194f320ab0..8c731fc771b 100644 --- a/libglusterfs/src/glusterfs-acl.h +++ b/libglusterfs/src/glusterfs-acl.h @@ -11,7 +11,6 @@  #ifndef _GLUSTERFS_ACL_H  #define _GLUSTERFS_ACL_H -  /* WARNING: Much if this code is restricted to Linux usage.   *   * It would be much cleaner to replace the code with something that is based on @@ -27,139 +26,136 @@  #include "locking.h" /* For gf_lock_t in struct posix_acl_conf */ -#define ACL_PROGRAM    100227 -#define ACLV3_VERSION  3 +#define ACL_PROGRAM 100227 +#define ACLV3_VERSION 3 -#define POSIX_ACL_MINIMAL_ACE_COUNT   3 +#define POSIX_ACL_MINIMAL_ACE_COUNT 3 -#define POSIX_ACL_READ                (0x04) -#define POSIX_ACL_WRITE               (0x02) -#define POSIX_ACL_EXECUTE             (0x01) +#define POSIX_ACL_READ (0x04) +#define POSIX_ACL_WRITE (0x02) +#define POSIX_ACL_EXECUTE (0x01) -#define POSIX_ACL_UNDEFINED_TAG       (0x00) -#define POSIX_ACL_USER_OBJ            (0x01) -#define POSIX_ACL_USER                (0x02) -#define POSIX_ACL_GROUP_OBJ           (0x04) -#define POSIX_ACL_GROUP               (0x08) -#define POSIX_ACL_MASK                (0x10) -#define POSIX_ACL_OTHER               (0x20) +#define POSIX_ACL_UNDEFINED_TAG (0x00) +#define POSIX_ACL_USER_OBJ (0x01) +#define POSIX_ACL_USER (0x02) +#define POSIX_ACL_GROUP_OBJ (0x04) +#define POSIX_ACL_GROUP (0x08) +#define POSIX_ACL_MASK (0x10) +#define POSIX_ACL_OTHER (0x20) -#define POSIX_ACL_UNDEFINED_ID        (-1) +#define POSIX_ACL_UNDEFINED_ID (-1) -#define POSIX_ACL_XATTR_VERSION       (0x02) +#define POSIX_ACL_XATTR_VERSION (0x02) -#define POSIX_ACL_ACCESS_XATTR        "system.posix_acl_access" -#define POSIX_ACL_DEFAULT_XATTR       "system.posix_acl_default" +#define POSIX_ACL_ACCESS_XATTR "system.posix_acl_access" +#define POSIX_ACL_DEFAULT_XATTR "system.posix_acl_default"  struct posix_acl_xattr_entry { -        uint16_t            tag; -        uint16_t            perm; -        uint32_t            id; +    uint16_t tag; +    uint16_t perm; +    uint32_t id;  };  struct posix_acl_xattr_header { -        uint32_t                        version; -        struct posix_acl_xattr_entry    entries[]; +    uint32_t version; +    struct posix_acl_xattr_entry entries[];  }; -typedef struct posix_acl_xattr_entry  posix_acl_xattr_entry; +typedef struct posix_acl_xattr_entry posix_acl_xattr_entry;  typedef struct posix_acl_xattr_header posix_acl_xattr_header;  static inline size_t -posix_acl_xattr_size (unsigned int count) +posix_acl_xattr_size(unsigned int count)  { -        return (sizeof(posix_acl_xattr_header) + -                       (count * sizeof(posix_acl_xattr_entry))); +    return (sizeof(posix_acl_xattr_header) + +            (count * sizeof(posix_acl_xattr_entry)));  }  static inline ssize_t -posix_acl_xattr_count (size_t size) +posix_acl_xattr_count(size_t size)  { -        if (size < sizeof(posix_acl_xattr_header)) -                return (-1); -        size -= sizeof(posix_acl_xattr_header); -        if (size % sizeof(posix_acl_xattr_entry)) -                return (-1); -        return (size / sizeof(posix_acl_xattr_entry)); +    if (size < sizeof(posix_acl_xattr_header)) +        return (-1); +    size -= sizeof(posix_acl_xattr_header); +    if (size % sizeof(posix_acl_xattr_entry)) +        return (-1); +    return (size / sizeof(posix_acl_xattr_entry));  }  struct posix_ace { -        uint16_t     tag; -        uint16_t     perm; -        uint32_t     id; +    uint16_t tag; +    uint16_t perm; +    uint32_t id;  }; -  struct posix_acl { -        int               refcnt; -        int               count; -        struct posix_ace  entries[]; +    int refcnt; +    int count; +    struct posix_ace entries[];  };  struct posix_acl_ctx { -        uid_t             uid; -        gid_t             gid; -        mode_t            perm; -        glusterfs_fop_t   fop; -        struct posix_acl *acl_access; -        struct posix_acl *acl_default; +    uid_t uid; +    gid_t gid; +    mode_t perm; +    glusterfs_fop_t fop; +    struct posix_acl *acl_access; +    struct posix_acl *acl_default;  };  struct posix_acl_conf { -        gf_lock_t         acl_lock; -        uid_t             super_uid; -        struct posix_acl *minimal_acl; +    gf_lock_t acl_lock; +    uid_t super_uid; +    struct posix_acl *minimal_acl;  }; -  /* Above this comment, the legacy POSIX ACL support is kept until it is not   * used anymore. Below you will find the more portable version to support POSIX   * ACls based on the implementation of libacl (see sys/acl.h). */  /* virtual xattrs passed over RPC, not stored on disk */ -#define GF_POSIX_ACL_ACCESS       "glusterfs.posix.acl" -#define GF_POSIX_ACL_DEFAULT      "glusterfs.posix.default_acl" -#define GF_POSIX_ACL_REQUEST(key) \ -        (!strncmp(key, GF_POSIX_ACL_ACCESS, SLEN (GF_POSIX_ACL_ACCESS)) || \ -         !strncmp(key, GF_POSIX_ACL_DEFAULT, SLEN (GF_POSIX_ACL_DEFAULT))) +#define GF_POSIX_ACL_ACCESS "glusterfs.posix.acl" +#define GF_POSIX_ACL_DEFAULT "glusterfs.posix.default_acl" +#define GF_POSIX_ACL_REQUEST(key)                                              \ +    (!strncmp(key, GF_POSIX_ACL_ACCESS, SLEN(GF_POSIX_ACL_ACCESS)) ||          \ +     !strncmp(key, GF_POSIX_ACL_DEFAULT, SLEN(GF_POSIX_ACL_DEFAULT)))  #ifdef HAVE_SYS_ACL_H /* only NetBSD does not support POSIX ACLs */  #include <sys/acl.h> -static inline const char* -gf_posix_acl_get_key (const acl_type_t type) +static inline const char * +gf_posix_acl_get_key(const acl_type_t type)  { -        char *acl_key = NULL; +    char *acl_key = NULL; -        switch (type) { +    switch (type) {          case ACL_TYPE_ACCESS: -                acl_key = GF_POSIX_ACL_ACCESS; -                break; +            acl_key = GF_POSIX_ACL_ACCESS; +            break;          case ACL_TYPE_DEFAULT: -                acl_key = GF_POSIX_ACL_DEFAULT; -                break; +            acl_key = GF_POSIX_ACL_DEFAULT; +            break;          default: -                errno = EINVAL; -        } +            errno = EINVAL; +    } -        return acl_key; +    return acl_key;  }  static inline const acl_type_t -gf_posix_acl_get_type (const char *key) +gf_posix_acl_get_type(const char *key)  { -        acl_type_t type = 0; +    acl_type_t type = 0; -        if (!strncmp (key, GF_POSIX_ACL_ACCESS, SLEN (GF_POSIX_ACL_ACCESS))) -                type = ACL_TYPE_ACCESS; -        else if (!strncmp (key, GF_POSIX_ACL_DEFAULT, -                           SLEN (GF_POSIX_ACL_DEFAULT))) -                type = ACL_TYPE_DEFAULT; -        else -                errno = EINVAL; +    if (!strncmp(key, GF_POSIX_ACL_ACCESS, SLEN(GF_POSIX_ACL_ACCESS))) +        type = ACL_TYPE_ACCESS; +    else if (!strncmp(key, GF_POSIX_ACL_DEFAULT, SLEN(GF_POSIX_ACL_DEFAULT))) +        type = ACL_TYPE_DEFAULT; +    else +        errno = EINVAL; -        return type; +    return type;  }  #endif /* HAVE_SYS_ACL_H */  | 
