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.h64
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
38struct 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
25struct cifs_sid { 47struct 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
54struct cifs_acl {
55 __le16 revision; /* revision level */
56 __le16 size;
57 __le32 num_aces;
58} __attribute__((packed));
59
60struct 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
67struct 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 */ 74struct 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
81extern int match_sid(struct cifs_sid *);
82extern 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 */