X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=fs%2Fcifs%2Fcifsacl.h;h=6c8096cf51557764aa10af6c28d108d3e93ce6e7;hb=b41a080fa9f157d223c782ec3571cf46e34e91d6;hp=1b115641b7222c3d2d0f363eea5e2eaff492c150;hpb=297647c21f11dc1449f9bdb1601ae43e951bba0b;p=karo-tx-linux.git diff --git a/fs/cifs/cifsacl.h b/fs/cifs/cifsacl.h index 1b115641b722..6c8096cf5155 100644 --- a/fs/cifs/cifsacl.h +++ b/fs/cifs/cifsacl.h @@ -23,43 +23,50 @@ #define _CIFSACL_H +#define NUM_AUTHS 6 /* number of authority fields */ +#define NUM_SUBAUTHS 5 /* number of sub authority fields */ #define NUM_WK_SIDS 7 /* number of well known sids */ #define SIDNAMELENGTH 20 /* long enough for the ones we care about */ +#define DEFSECDESCLEN 192 /* sec desc len contaiting a dacl with three aces */ + +#define READ_BIT 0x4 +#define WRITE_BIT 0x2 +#define EXEC_BIT 0x1 + +#define UBITSHIFT 6 +#define GBITSHIFT 3 + +#define ACCESS_ALLOWED 0 +#define ACCESS_DENIED 1 struct cifs_ntsd { - __u16 revision; /* revision level */ - __u16 type; - __u32 osidoffset; - __u32 gsidoffset; - __u32 sacloffset; - __u32 dacloffset; + __le16 revision; /* revision level */ + __le16 type; + __le32 osidoffset; + __le32 gsidoffset; + __le32 sacloffset; + __le32 dacloffset; } __attribute__((packed)); struct cifs_sid { __u8 revision; /* revision level */ __u8 num_subauth; __u8 authority[6]; - __u32 sub_auth[5]; /* sub_auth[num_subauth] */ + __le32 sub_auth[5]; /* sub_auth[num_subauth] */ } __attribute__((packed)); struct cifs_acl { - __u16 revision; /* revision level */ - __u16 size; - __u32 num_aces; + __le16 revision; /* revision level */ + __le16 size; + __le32 num_aces; } __attribute__((packed)); -struct cifs_ntace { /* first part of ACE which contains perms */ +struct cifs_ace { __u8 type; __u8 flags; - __u16 size; - __u32 access_req; -} __attribute__((packed)); - -struct cifs_ace { /* last part of ACE which includes user info */ - __u8 revision; /* revision level */ - __u8 num_subauth; - __u8 authority[6]; - __u32 sub_auth[5]; + __le16 size; + __le32 access_req; + struct cifs_sid sid; /* ie UUID of user or group who gets these perms */ } __attribute__((packed)); struct cifs_wksid { @@ -69,9 +76,8 @@ struct cifs_wksid { #ifdef CONFIG_CIFS_EXPERIMENTAL -extern struct cifs_wksid wksidarr[NUM_WK_SIDS]; extern int match_sid(struct cifs_sid *); -extern int compare_sids(struct cifs_sid *, struct cifs_sid *); +extern int compare_sids(const struct cifs_sid *, const struct cifs_sid *); #endif /* CONFIG_CIFS_EXPERIMENTAL */