aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/cifsacl.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifs/cifsacl.h')
-rw-r--r--fs/cifs/cifsacl.h61
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
41struct 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
25struct cifs_sid { 50struct 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 */ 57struct 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
63struct 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
71struct cifs_wksid {
72 struct cifs_sid cifssid;
73 char sidname[SIDNAMELENGTH];
74} __attribute__((packed));
75
76#ifdef CONFIG_CIFS_EXPERIMENTAL
77
78extern int match_sid(struct cifs_sid *);
79extern 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 */