/* header auto-generated by pidl */

#ifndef _PIDL_HEADER_smb_acl
#define _PIDL_HEADER_smb_acl

#include <stdint.h>


#ifndef _HEADER_smb_acl
#define _HEADER_smb_acl

#define SMB_ACL_READ	( 4 )
#define SMB_ACL_WRITE	( 2 )
#define SMB_ACL_EXECUTE	( 1 )
#define SMB_ACL_FIRST_ENTRY	( 0 )
#define SMB_ACL_NEXT_ENTRY	( 1 )
#define SMB_ACL_TYPE_ACCESS	( 0 )
#define SMB_ACL_TYPE_DEFAULT	( 1 )
enum smb_acl_tag_t
#ifndef USE_UINT_ENUMS
 {
	SMB_ACL_TAG_INVALID=(int)(0),
	SMB_ACL_USER=(int)(1),
	SMB_ACL_USER_OBJ=(int)(2),
	SMB_ACL_GROUP=(int)(3),
	SMB_ACL_GROUP_OBJ=(int)(4),
	SMB_ACL_OTHER=(int)(5),
	SMB_ACL_MASK=(int)(6)
}
#else
 { __do_not_use_enum_smb_acl_tag_t=INT_MAX}
#define SMB_ACL_TAG_INVALID ( 0 )
#define SMB_ACL_USER ( 1 )
#define SMB_ACL_USER_OBJ ( 2 )
#define SMB_ACL_GROUP ( 3 )
#define SMB_ACL_GROUP_OBJ ( 4 )
#define SMB_ACL_OTHER ( 5 )
#define SMB_ACL_MASK ( 6 )
#endif
;

struct smb_acl_user {
	uid_t uid;
};

struct smb_acl_group {
	gid_t gid;
};

union smb_acl_entry_info {
	struct smb_acl_user user;/* [case(SMB_ACL_USER)] */
	struct smb_acl_group group;/* [case(SMB_ACL_GROUP)] */
}/* [switch_type(uint16)] */;

struct smb_acl_entry {
	enum smb_acl_tag_t a_type;
	union smb_acl_entry_info info;/* [switch_is(a_type)] */
	uint32_t a_perm;
};

struct smb_acl_t {
	int32_t count;
	int32_t next;/* [value(0)] */
	struct smb_acl_entry *acl;/* [size_is(count)] */
};

struct smb_acl_wrapper {
	struct smb_acl_t *access_acl;/* [unique] */
	struct smb_acl_t *default_acl;/* [unique] */
	uid_t owner;
	gid_t group;
	uint32_t mode;
};

#endif /* _HEADER_smb_acl */
#endif /* _PIDL_HEADER_smb_acl */
