2005-12-02 09:32:42 +03:00
/*
* fs / cifs / cifsacl . h
*
2007-09-25 20:17:24 +04:00
* Copyright ( c ) International Business Machines Corp . , 2007
2005-12-02 09:32:42 +03:00
* Author ( s ) : Steve French ( sfrench @ us . ibm . com )
*
* This library is free software ; you can redistribute it and / or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation ; either version 2.1 of the License , or
* ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See
* the GNU Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
# ifndef _CIFSACL_H
# define _CIFSACL_H
2007-10-12 08:11:59 +04:00
2007-10-18 02:50:39 +04:00
# define NUM_AUTHS 6 /* number of authority fields */
# define NUM_SUBAUTHS 5 /* number of sub authority fields */
2007-10-12 08:11:59 +04:00
# define NUM_WK_SIDS 7 /* number of well known sids */
# define SIDNAMELENGTH 20 /* long enough for the ones we care about */
2008-04-10 00:55:31 +04:00
# define DEFSECDESCLEN 192 /* sec desc len contaiting a dacl with three aces */
2007-10-12 08:11:59 +04:00
2007-10-18 02:50:39 +04:00
# define READ_BIT 0x4
# define WRITE_BIT 0x2
# define EXEC_BIT 0x1
# define UBITSHIFT 6
# define GBITSHIFT 3
2007-11-06 00:46:10 +03:00
# define ACCESS_ALLOWED 0
# define ACCESS_DENIED 1
2007-09-25 00:25:46 +04:00
struct cifs_ntsd {
2007-10-16 22:40:37 +04:00
__le16 revision ; /* revision level */
__le16 type ;
__le32 osidoffset ;
__le32 gsidoffset ;
__le32 sacloffset ;
__le32 dacloffset ;
2007-09-25 00:25:46 +04:00
} __attribute__ ( ( packed ) ) ;
2005-12-02 09:32:42 +03:00
struct cifs_sid {
__u8 revision ; /* revision level */
2007-10-01 23:59:01 +04:00
__u8 num_subauth ;
2007-09-25 00:25:46 +04:00
__u8 authority [ 6 ] ;
2007-10-24 01:22:55 +04:00
__le32 sub_auth [ 5 ] ; /* sub_auth[num_subauth] */
2007-09-25 00:25:46 +04:00
} __attribute__ ( ( packed ) ) ;
struct cifs_acl {
2007-10-16 22:40:37 +04:00
__le16 revision ; /* revision level */
__le16 size ;
__le32 num_aces ;
2007-09-25 00:25:46 +04:00
} __attribute__ ( ( packed ) ) ;
2007-10-24 01:22:55 +04:00
struct cifs_ace {
2007-09-25 00:25:46 +04:00
__u8 type ;
__u8 flags ;
2007-10-14 21:58:43 +04:00
__le16 size ;
__le32 access_req ;
2007-10-24 01:22:55 +04:00
struct cifs_sid sid ; /* ie UUID of user or group who gets these perms */
2007-10-12 08:11:59 +04:00
} __attribute__ ( ( packed ) ) ;
struct cifs_wksid {
struct cifs_sid cifssid ;
char sidname [ SIDNAMELENGTH ] ;
2005-12-02 09:32:42 +03:00
} __attribute__ ( ( packed ) ) ;
2007-10-12 08:11:59 +04:00
# ifdef CONFIG_CIFS_EXPERIMENTAL
extern int match_sid ( struct cifs_sid * ) ;
2007-10-26 08:32:43 +04:00
extern int compare_sids ( const struct cifs_sid * , const struct cifs_sid * ) ;
2007-10-12 08:11:59 +04:00
# endif /* CONFIG_CIFS_EXPERIMENTAL */
2006-01-09 07:04:55 +03:00
# endif /* _CIFSACL_H */