linux/fs/cifs/cifsacl.h
<<
>>
Prefs
   1/*
   2 *   fs/cifs/cifsacl.h
   3 *
   4 *   Copyright (c) International Business Machines  Corp., 2007
   5 *   Author(s): Steve French (sfrench@us.ibm.com)
   6 *
   7 *   This library is free software; you can redistribute it and/or modify
   8 *   it under the terms of the GNU Lesser General Public License as published
   9 *   by the Free Software Foundation; either version 2.1 of the License, or
  10 *   (at your option) any later version.
  11 *
  12 *   This library is distributed in the hope that it will be useful,
  13 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
  15 *   the GNU Lesser General Public License for more details.
  16 *
  17 *   You should have received a copy of the GNU Lesser General Public License
  18 *   along with this library; if not, write to the Free Software
  19 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  20 */
  21
  22#ifndef _CIFSACL_H
  23#define _CIFSACL_H
  24
  25
  26#define NUM_AUTHS 6 /* number of authority fields */
  27#define NUM_SUBAUTHS 5 /* number of sub authority fields */
  28#define NUM_WK_SIDS 7 /* number of well known sids */
  29#define SIDNAMELENGTH 20 /* long enough for the ones we care about */
  30#define DEFSECDESCLEN 192 /* sec desc len contaiting a dacl with three aces */
  31
  32#define READ_BIT        0x4
  33#define WRITE_BIT       0x2
  34#define EXEC_BIT        0x1
  35
  36#define UBITSHIFT       6
  37#define GBITSHIFT       3
  38
  39#define ACCESS_ALLOWED  0
  40#define ACCESS_DENIED   1
  41
  42struct cifs_ntsd {
  43        __le16 revision; /* revision level */
  44        __le16 type;
  45        __le32 osidoffset;
  46        __le32 gsidoffset;
  47        __le32 sacloffset;
  48        __le32 dacloffset;
  49} __attribute__((packed));
  50
  51struct cifs_sid {
  52        __u8 revision; /* revision level */
  53        __u8 num_subauth;
  54        __u8 authority[6];
  55        __le32 sub_auth[5]; /* sub_auth[num_subauth] */
  56} __attribute__((packed));
  57
  58struct cifs_acl {
  59        __le16 revision; /* revision level */
  60        __le16 size;
  61        __le32 num_aces;
  62} __attribute__((packed));
  63
  64struct cifs_ace {
  65        __u8 type;
  66        __u8 flags;
  67        __le16 size;
  68        __le32 access_req;
  69        struct cifs_sid sid; /* ie UUID of user or group who gets these perms */
  70} __attribute__((packed));
  71
  72struct cifs_wksid {
  73        struct cifs_sid cifssid;
  74        char sidname[SIDNAMELENGTH];
  75} __attribute__((packed));
  76
  77#ifdef CONFIG_CIFS_EXPERIMENTAL
  78
  79extern int match_sid(struct cifs_sid *);
  80extern int compare_sids(const struct cifs_sid *, const struct cifs_sid *);
  81
  82#endif /*  CONFIG_CIFS_EXPERIMENTAL */
  83
  84#endif /* _CIFSACL_H */
  85