X-Git-Url: https://bbs.cooldavid.org/git/?a=blobdiff_plain;f=fs%2Fcifs%2Fcifsacl.h;h=6c8096cf51557764aa10af6c28d108d3e93ce6e7;hb=HEAD;hp=bf297ea1905a349653923ab944e1ba68496c2ccd;hpb=d0d66c443aefa51d5dbdd6a1d9b135a2a0e469cc;p=net-next-2.6.git diff --git a/fs/cifs/cifsacl.h b/fs/cifs/cifsacl.h index bf297ea1905..6c8096cf515 100644 --- a/fs/cifs/cifsacl.h +++ b/fs/cifs/cifsacl.h @@ -22,45 +22,63 @@ #ifndef _CIFSACL_H #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[0]; /* 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; + __le16 size; + __le32 access_req; + struct cifs_sid sid; /* ie UUID of user or group who gets these perms */ } __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[0]; +struct cifs_wksid { + struct cifs_sid cifssid; + char sidname[SIDNAMELENGTH]; } __attribute__((packed)); -/* everyone */ -/* extern const struct cifs_sid sid_everyone;*/ -/* group users */ -/* extern const struct cifs_sid sid_user;*/ +#ifdef CONFIG_CIFS_EXPERIMENTAL + +extern int match_sid(struct cifs_sid *); +extern int compare_sids(const struct cifs_sid *, const struct cifs_sid *); + +#endif /* CONFIG_CIFS_EXPERIMENTAL */ #endif /* _CIFSACL_H */