diff options
Diffstat (limited to 'fs/cifs/cifsacl.h')
-rw-r--r-- | fs/cifs/cifsacl.h | 61 |
1 files changed, 53 insertions, 8 deletions
diff --git a/fs/cifs/cifsacl.h b/fs/cifs/cifsacl.h index 5eff35d6e564..93a7c3462ea2 100644 --- a/fs/cifs/cifsacl.h +++ b/fs/cifs/cifsacl.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * fs/cifs/cifsacl.h | 2 | * fs/cifs/cifsacl.h |
3 | * | 3 | * |
4 | * Copyright (c) International Business Machines Corp., 2005 | 4 | * Copyright (c) International Business Machines Corp., 2007 |
5 | * Author(s): Steve French (sfrench@us.ibm.com) | 5 | * Author(s): Steve French (sfrench@us.ibm.com) |
6 | * | 6 | * |
7 | * This library is free software; you can redistribute it and/or modify | 7 | * This library is free software; you can redistribute it and/or modify |
@@ -22,17 +22,62 @@ | |||
22 | #ifndef _CIFSACL_H | 22 | #ifndef _CIFSACL_H |
23 | #define _CIFSACL_H | 23 | #define _CIFSACL_H |
24 | 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 | |||
31 | #define READ_BIT 0x4 | ||
32 | #define WRITE_BIT 0x2 | ||
33 | #define EXEC_BIT 0x1 | ||
34 | |||
35 | #define UBITSHIFT 6 | ||
36 | #define GBITSHIFT 3 | ||
37 | |||
38 | #define ACCESS_ALLOWED 0 | ||
39 | #define ACCESS_DENIED 1 | ||
40 | |||
41 | struct cifs_ntsd { | ||
42 | __le16 revision; /* revision level */ | ||
43 | __le16 type; | ||
44 | __le32 osidoffset; | ||
45 | __le32 gsidoffset; | ||
46 | __le32 sacloffset; | ||
47 | __le32 dacloffset; | ||
48 | } __attribute__((packed)); | ||
49 | |||
25 | struct cifs_sid { | 50 | struct cifs_sid { |
26 | __u8 revision; /* revision level */ | 51 | __u8 revision; /* revision level */ |
27 | __u8 num_subauths; | 52 | __u8 num_subauth; |
28 | __u8 authority[6]; | 53 | __u8 authority[6]; |
29 | __u32 sub_auth[4]; | 54 | __le32 sub_auth[5]; /* sub_auth[num_subauth] */ |
30 | /* next sub_auth if any ... */ | ||
31 | } __attribute__((packed)); | 55 | } __attribute__((packed)); |
32 | 56 | ||
33 | /* everyone */ | 57 | struct cifs_acl { |
34 | /* extern const struct cifs_sid sid_everyone;*/ | 58 | __le16 revision; /* revision level */ |
35 | /* group users */ | 59 | __le16 size; |
36 | /* extern const struct cifs_sid sid_user;*/ | 60 | __le32 num_aces; |
61 | } __attribute__((packed)); | ||
62 | |||
63 | struct cifs_ace { | ||
64 | __u8 type; | ||
65 | __u8 flags; | ||
66 | __le16 size; | ||
67 | __le32 access_req; | ||
68 | struct cifs_sid sid; /* ie UUID of user or group who gets these perms */ | ||
69 | } __attribute__((packed)); | ||
70 | |||
71 | struct cifs_wksid { | ||
72 | struct cifs_sid cifssid; | ||
73 | char sidname[SIDNAMELENGTH]; | ||
74 | } __attribute__((packed)); | ||
75 | |||
76 | #ifdef CONFIG_CIFS_EXPERIMENTAL | ||
77 | |||
78 | extern int match_sid(struct cifs_sid *); | ||
79 | extern int compare_sids(const struct cifs_sid *, const struct cifs_sid *); | ||
80 | |||
81 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ | ||
37 | 82 | ||
38 | #endif /* _CIFSACL_H */ | 83 | #endif /* _CIFSACL_H */ |