diff options
Diffstat (limited to 'fs/cifs/cifsacl.h')
-rw-r--r-- | fs/cifs/cifsacl.h | 64 |
1 files changed, 56 insertions, 8 deletions
diff --git a/fs/cifs/cifsacl.h b/fs/cifs/cifsacl.h index 5eff35d6e564..420f87813647 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,65 @@ | |||
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 | struct cifs_ntsd { | ||
39 | __le16 revision; /* revision level */ | ||
40 | __le16 type; | ||
41 | __le32 osidoffset; | ||
42 | __le32 gsidoffset; | ||
43 | __le32 sacloffset; | ||
44 | __le32 dacloffset; | ||
45 | } __attribute__((packed)); | ||
46 | |||
25 | struct cifs_sid { | 47 | struct cifs_sid { |
26 | __u8 revision; /* revision level */ | 48 | __u8 revision; /* revision level */ |
27 | __u8 num_subauths; | 49 | __u8 num_subauth; |
50 | __u8 authority[6]; | ||
51 | __le32 sub_auth[5]; /* sub_auth[num_subauth] */ /* BB FIXME endianness BB */ | ||
52 | } __attribute__((packed)); | ||
53 | |||
54 | struct cifs_acl { | ||
55 | __le16 revision; /* revision level */ | ||
56 | __le16 size; | ||
57 | __le32 num_aces; | ||
58 | } __attribute__((packed)); | ||
59 | |||
60 | struct cifs_ntace { /* first part of ACE which contains perms */ | ||
61 | __u8 type; | ||
62 | __u8 flags; | ||
63 | __le16 size; | ||
64 | __le32 access_req; | ||
65 | } __attribute__((packed)); | ||
66 | |||
67 | struct cifs_ace { /* last part of ACE which includes user info */ | ||
68 | __u8 revision; /* revision level */ | ||
69 | __u8 num_subauth; | ||
28 | __u8 authority[6]; | 70 | __u8 authority[6]; |
29 | __u32 sub_auth[4]; | 71 | __le32 sub_auth[5]; |
30 | /* next sub_auth if any ... */ | ||
31 | } __attribute__((packed)); | 72 | } __attribute__((packed)); |
32 | 73 | ||
33 | /* everyone */ | 74 | struct cifs_wksid { |
34 | /* extern const struct cifs_sid sid_everyone;*/ | 75 | struct cifs_sid cifssid; |
35 | /* group users */ | 76 | char sidname[SIDNAMELENGTH]; |
36 | /* extern const struct cifs_sid sid_user;*/ | 77 | } __attribute__((packed)); |
78 | |||
79 | #ifdef CONFIG_CIFS_EXPERIMENTAL | ||
80 | |||
81 | extern int match_sid(struct cifs_sid *); | ||
82 | extern int compare_sids(struct cifs_sid *, struct cifs_sid *); | ||
83 | |||
84 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ | ||
37 | 85 | ||
38 | #endif /* _CIFSACL_H */ | 86 | #endif /* _CIFSACL_H */ |