X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=fs%2Fcifs%2Fcifsacl.h;h=6c8096cf51557764aa10af6c28d108d3e93ce6e7;hb=ebb9cfe20fe167f29960a5e913193a684fac50bf;hp=b975ae113037a3a1b607fd10a68e4359e3cff274;hpb=bcb020341a7d0fba6cd025f068d40f4ab5c36af8;p=safe%2Fjmp%2Flinux-2.6 diff --git a/fs/cifs/cifsacl.h b/fs/cifs/cifsacl.h index b975ae1..6c8096c 100644 --- a/fs/cifs/cifsacl.h +++ b/fs/cifs/cifsacl.h @@ -22,47 +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_auth; + __u8 num_subauth; __u8 authority[6]; - __u32 sub_auth[4]; - __u32 rid; + __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 { +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 { - __u8 revision; /* revision level */ - __u8 num_auth; - __u8 authority[6]; - __u32 sub_auth[4]; - __u32 rid; +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 */