/* header auto-generated by pidl */

#ifndef _PIDL_HEADER_conditional_ace
#define _PIDL_HEADER_conditional_ace

#include <stdint.h>


#include "librpc/gen_ndr/security.h"
#ifndef _HEADER_conditional_ace
#define _HEADER_conditional_ace

#define CONDITIONAL_ACE_FLAG_TOKEN_FROM_ATTR	( UINT32_C(1)<<31 )
#define CONDITIONAL_ACE_MAX_LENGTH	( 10000 )
#define CONDITIONAL_ACE_MAX_TOKENS	( 2000 )
enum token_type
#ifndef USE_UINT_ENUMS
 {
	CONDITIONAL_ACE_TOKEN_INVALID_OR_PADDING=(int)(0x00),
	CONDITIONAL_ACE_TOKEN_INT8=(int)(0x01),
	CONDITIONAL_ACE_TOKEN_INT16=(int)(0x02),
	CONDITIONAL_ACE_TOKEN_INT32=(int)(0x03),
	CONDITIONAL_ACE_TOKEN_INT64=(int)(0x04),
	CONDITIONAL_ACE_TOKEN_UNICODE=(int)(0x10),
	CONDITIONAL_ACE_TOKEN_OCTET_STRING=(int)(0x18),
	CONDITIONAL_ACE_TOKEN_COMPOSITE=(int)(0x50),
	CONDITIONAL_ACE_TOKEN_SID=(int)(0x51),
	CONDITIONAL_ACE_LOCAL_ATTRIBUTE=(int)(0xf8),
	CONDITIONAL_ACE_USER_ATTRIBUTE=(int)(0xf9),
	CONDITIONAL_ACE_RESOURCE_ATTRIBUTE=(int)(0xfa),
	CONDITIONAL_ACE_DEVICE_ATTRIBUTE=(int)(0xfb),
	CONDITIONAL_ACE_TOKEN_MEMBER_OF=(int)(0x89),
	CONDITIONAL_ACE_TOKEN_DEVICE_MEMBER_OF=(int)(0x8a),
	CONDITIONAL_ACE_TOKEN_MEMBER_OF_ANY=(int)(0x8b),
	CONDITIONAL_ACE_TOKEN_DEVICE_MEMBER_OF_ANY=(int)(0x8c),
	CONDITIONAL_ACE_TOKEN_NOT_MEMBER_OF=(int)(0x90),
	CONDITIONAL_ACE_TOKEN_NOT_DEVICE_MEMBER_OF=(int)(0x91),
	CONDITIONAL_ACE_TOKEN_NOT_MEMBER_OF_ANY=(int)(0x92),
	CONDITIONAL_ACE_TOKEN_NOT_DEVICE_MEMBER_OF_ANY=(int)(0x93),
	CONDITIONAL_ACE_TOKEN_EQUAL=(int)(0x80),
	CONDITIONAL_ACE_TOKEN_NOT_EQUAL=(int)(0x81),
	CONDITIONAL_ACE_TOKEN_LESS_THAN=(int)(0x82),
	CONDITIONAL_ACE_TOKEN_LESS_OR_EQUAL=(int)(0x83),
	CONDITIONAL_ACE_TOKEN_GREATER_THAN=(int)(0x84),
	CONDITIONAL_ACE_TOKEN_GREATER_OR_EQUAL=(int)(0x85),
	CONDITIONAL_ACE_TOKEN_CONTAINS=(int)(0x86),
	CONDITIONAL_ACE_TOKEN_ANY_OF=(int)(0x88),
	CONDITIONAL_ACE_TOKEN_NOT_CONTAINS=(int)(0x8e),
	CONDITIONAL_ACE_TOKEN_NOT_ANY_OF=(int)(0x8f),
	CONDITIONAL_ACE_TOKEN_EXISTS=(int)(0x87),
	CONDITIONAL_ACE_TOKEN_NOT_EXISTS=(int)(0x8d),
	CONDITIONAL_ACE_TOKEN_NOT=(int)(0xa2),
	CONDITIONAL_ACE_TOKEN_AND=(int)(0xa0),
	CONDITIONAL_ACE_TOKEN_OR=(int)(0xa1),
	CONDITIONAL_ACE_SAMBA_RESULT_BOOL=(int)(0x0f),
	CONDITIONAL_ACE_SAMBA_RESULT_NULL=(int)(0x0e),
	CONDITIONAL_ACE_SAMBA_RESULT_ERROR=(int)(0x0d),
	CONDITIONAL_ACE_SAMBA_SDDL_PAREN=(int)(0x09),
	CONDITIONAL_ACE_SAMBA_SDDL_PAREN_END=(int)(0x08)
}
#else
 { __do_not_use_enum_token_type=INT_MAX}
#define CONDITIONAL_ACE_TOKEN_INVALID_OR_PADDING ( 0x00 )
#define CONDITIONAL_ACE_TOKEN_INT8 ( 0x01 )
#define CONDITIONAL_ACE_TOKEN_INT16 ( 0x02 )
#define CONDITIONAL_ACE_TOKEN_INT32 ( 0x03 )
#define CONDITIONAL_ACE_TOKEN_INT64 ( 0x04 )
#define CONDITIONAL_ACE_TOKEN_UNICODE ( 0x10 )
#define CONDITIONAL_ACE_TOKEN_OCTET_STRING ( 0x18 )
#define CONDITIONAL_ACE_TOKEN_COMPOSITE ( 0x50 )
#define CONDITIONAL_ACE_TOKEN_SID ( 0x51 )
#define CONDITIONAL_ACE_LOCAL_ATTRIBUTE ( 0xf8 )
#define CONDITIONAL_ACE_USER_ATTRIBUTE ( 0xf9 )
#define CONDITIONAL_ACE_RESOURCE_ATTRIBUTE ( 0xfa )
#define CONDITIONAL_ACE_DEVICE_ATTRIBUTE ( 0xfb )
#define CONDITIONAL_ACE_TOKEN_MEMBER_OF ( 0x89 )
#define CONDITIONAL_ACE_TOKEN_DEVICE_MEMBER_OF ( 0x8a )
#define CONDITIONAL_ACE_TOKEN_MEMBER_OF_ANY ( 0x8b )
#define CONDITIONAL_ACE_TOKEN_DEVICE_MEMBER_OF_ANY ( 0x8c )
#define CONDITIONAL_ACE_TOKEN_NOT_MEMBER_OF ( 0x90 )
#define CONDITIONAL_ACE_TOKEN_NOT_DEVICE_MEMBER_OF ( 0x91 )
#define CONDITIONAL_ACE_TOKEN_NOT_MEMBER_OF_ANY ( 0x92 )
#define CONDITIONAL_ACE_TOKEN_NOT_DEVICE_MEMBER_OF_ANY ( 0x93 )
#define CONDITIONAL_ACE_TOKEN_EQUAL ( 0x80 )
#define CONDITIONAL_ACE_TOKEN_NOT_EQUAL ( 0x81 )
#define CONDITIONAL_ACE_TOKEN_LESS_THAN ( 0x82 )
#define CONDITIONAL_ACE_TOKEN_LESS_OR_EQUAL ( 0x83 )
#define CONDITIONAL_ACE_TOKEN_GREATER_THAN ( 0x84 )
#define CONDITIONAL_ACE_TOKEN_GREATER_OR_EQUAL ( 0x85 )
#define CONDITIONAL_ACE_TOKEN_CONTAINS ( 0x86 )
#define CONDITIONAL_ACE_TOKEN_ANY_OF ( 0x88 )
#define CONDITIONAL_ACE_TOKEN_NOT_CONTAINS ( 0x8e )
#define CONDITIONAL_ACE_TOKEN_NOT_ANY_OF ( 0x8f )
#define CONDITIONAL_ACE_TOKEN_EXISTS ( 0x87 )
#define CONDITIONAL_ACE_TOKEN_NOT_EXISTS ( 0x8d )
#define CONDITIONAL_ACE_TOKEN_NOT ( 0xa2 )
#define CONDITIONAL_ACE_TOKEN_AND ( 0xa0 )
#define CONDITIONAL_ACE_TOKEN_OR ( 0xa1 )
#define CONDITIONAL_ACE_SAMBA_RESULT_BOOL ( 0x0f )
#define CONDITIONAL_ACE_SAMBA_RESULT_NULL ( 0x0e )
#define CONDITIONAL_ACE_SAMBA_RESULT_ERROR ( 0x0d )
#define CONDITIONAL_ACE_SAMBA_SDDL_PAREN ( 0x09 )
#define CONDITIONAL_ACE_SAMBA_SDDL_PAREN_END ( 0x08 )
#endif
;

enum int_base
#ifndef USE_UINT_ENUMS
 {
	CONDITIONAL_ACE_INT_BASE_8=(int)(0x01),
	CONDITIONAL_ACE_INT_BASE_10=(int)(0x02),
	CONDITIONAL_ACE_INT_BASE_16=(int)(0x03)
}
#else
 { __do_not_use_enum_int_base=INT_MAX}
#define CONDITIONAL_ACE_INT_BASE_8 ( 0x01 )
#define CONDITIONAL_ACE_INT_BASE_10 ( 0x02 )
#define CONDITIONAL_ACE_INT_BASE_16 ( 0x03 )
#endif
;

enum int_sign
#ifndef USE_UINT_ENUMS
 {
	CONDITIONAL_ACE_INT_SIGN_POSITIVE=(int)(0x01),
	CONDITIONAL_ACE_INT_SIGN_NEGATIVE=(int)(0x02),
	CONDITIONAL_ACE_INT_SIGN_NONE=(int)(0x03)
}
#else
 { __do_not_use_enum_int_sign=INT_MAX}
#define CONDITIONAL_ACE_INT_SIGN_POSITIVE ( 0x01 )
#define CONDITIONAL_ACE_INT_SIGN_NEGATIVE ( 0x02 )
#define CONDITIONAL_ACE_INT_SIGN_NONE ( 0x03 )
#endif
;

enum ternary_logic_value
#ifndef USE_UINT_ENUMS
 {
	ACE_CONDITION_FALSE=(int)(0),
	ACE_CONDITION_TRUE=(int)(1),
	ACE_CONDITION_UNKNOWN=(int)(-1)
}
#else
 { __do_not_use_enum_ternary_logic_value=INT_MAX}
#define ACE_CONDITION_FALSE ( 0 )
#define ACE_CONDITION_TRUE ( 1 )
#define ACE_CONDITION_UNKNOWN ( -1 )
#endif
;

struct ace_condition_result {
	int64_t value;
}/* [flag(LIBNDR_FLAG_NOALIGN)] */;

struct ace_condition_int {
	int64_t value;
	uint8_t sign;
	uint8_t base;
}/* [public] */;

struct ace_condition_unicode {
	const char * value;/* [flag(LIBNDR_FLAG_STR_SIZE4|LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_STR_BYTESIZE|LIBNDR_FLAG_STR_NO_EMBEDDED_NUL)] */
}/* [public] */;

struct ace_condition_sid {
	struct dom_sid sid;/* [subcontext(4)] */
}/* [public] */;

struct ace_condition_composite {
	struct ace_condition_token *tokens;/* [unique] */
	uint32_t n_members;
};

struct ace_condition_op {
	uint32_t sddl_position;
};

struct ace_condition_sddl_op {
	uint32_t start;
	uint32_t position;
};

union ace_condition_token_data {
	struct ace_condition_sid sid;/* [case(CONDITIONAL_ACE_TOKEN_SID)] */
	struct ace_condition_composite composite;/* [case(CONDITIONAL_ACE_TOKEN_COMPOSITE)] */
	DATA_BLOB bytes;/* [case(CONDITIONAL_ACE_TOKEN_OCTET_STRING)] */
	struct ace_condition_unicode unicode;/* [case(CONDITIONAL_ACE_TOKEN_UNICODE)] */
	struct ace_condition_unicode local_attr;/* [case(CONDITIONAL_ACE_LOCAL_ATTRIBUTE)] */
	struct ace_condition_unicode user_attr;/* [case(CONDITIONAL_ACE_USER_ATTRIBUTE)] */
	struct ace_condition_unicode device_attr;/* [case(CONDITIONAL_ACE_DEVICE_ATTRIBUTE)] */
	struct ace_condition_unicode resource_attr;/* [case(CONDITIONAL_ACE_RESOURCE_ATTRIBUTE)] */
	struct ace_condition_int int64;/* [case(CONDITIONAL_ACE_TOKEN_INT64)] */
	struct ace_condition_int int32;/* [case(CONDITIONAL_ACE_TOKEN_INT32)] */
	struct ace_condition_int int16;/* [case(CONDITIONAL_ACE_TOKEN_INT16)] */
	struct ace_condition_int int8;/* [case(CONDITIONAL_ACE_TOKEN_INT8)] */
	struct ace_condition_sddl_op sddl_op;/* [case(CONDITIONAL_ACE_SAMBA_SDDL_PAREN)] */
	struct ace_condition_result result;/* [case(CONDITIONAL_ACE_SAMBA_RESULT_BOOL)] */
	struct ace_condition_result result_null;/* [case(CONDITIONAL_ACE_SAMBA_RESULT_NULL)] */
	struct ace_condition_result result_error;/* [case(CONDITIONAL_ACE_SAMBA_RESULT_ERROR)] */
	struct ace_condition_op member_of;/* [case(CONDITIONAL_ACE_TOKEN_MEMBER_OF)] */
	struct ace_condition_op device_member_of;/* [case(CONDITIONAL_ACE_TOKEN_DEVICE_MEMBER_OF)] */
	struct ace_condition_op member_of_any;/* [case(CONDITIONAL_ACE_TOKEN_MEMBER_OF_ANY)] */
	struct ace_condition_op device_member_of_any;/* [case(CONDITIONAL_ACE_TOKEN_DEVICE_MEMBER_OF_ANY)] */
	struct ace_condition_op not_member_of;/* [case(CONDITIONAL_ACE_TOKEN_NOT_MEMBER_OF)] */
	struct ace_condition_op not_device_member_of;/* [case(CONDITIONAL_ACE_TOKEN_NOT_DEVICE_MEMBER_OF)] */
	struct ace_condition_op not_member_of_any;/* [case(CONDITIONAL_ACE_TOKEN_NOT_MEMBER_OF_ANY)] */
	struct ace_condition_op not_device_member_of_any;/* [case(CONDITIONAL_ACE_TOKEN_NOT_DEVICE_MEMBER_OF_ANY)] */
	struct ace_condition_op equal;/* [case(CONDITIONAL_ACE_TOKEN_EQUAL)] */
	struct ace_condition_op not_equal;/* [case(CONDITIONAL_ACE_TOKEN_NOT_EQUAL)] */
	struct ace_condition_op less_than;/* [case(CONDITIONAL_ACE_TOKEN_LESS_THAN)] */
	struct ace_condition_op less_or_equal;/* [case(CONDITIONAL_ACE_TOKEN_LESS_OR_EQUAL)] */
	struct ace_condition_op greater_than;/* [case(CONDITIONAL_ACE_TOKEN_GREATER_THAN)] */
	struct ace_condition_op greater_or_equal;/* [case(CONDITIONAL_ACE_TOKEN_GREATER_OR_EQUAL)] */
	struct ace_condition_op contains;/* [case(CONDITIONAL_ACE_TOKEN_CONTAINS)] */
	struct ace_condition_op any_of;/* [case(CONDITIONAL_ACE_TOKEN_ANY_OF)] */
	struct ace_condition_op not_contains;/* [case(CONDITIONAL_ACE_TOKEN_NOT_CONTAINS)] */
	struct ace_condition_op not_any_of;/* [case(CONDITIONAL_ACE_TOKEN_NOT_ANY_OF)] */
	struct ace_condition_op and;/* [case(CONDITIONAL_ACE_TOKEN_AND)] */
	struct ace_condition_op or;/* [case(CONDITIONAL_ACE_TOKEN_OR)] */
	struct ace_condition_op not;/* [case(CONDITIONAL_ACE_TOKEN_NOT)] */
	struct ace_condition_op exists;/* [case(CONDITIONAL_ACE_TOKEN_EXISTS)] */
	struct ace_condition_op not_exists;/* [case(CONDITIONAL_ACE_TOKEN_NOT_EXISTS)] */
	struct ace_condition_op op;/* [default] */
}/* [nodiscriminant] */;

struct ace_condition_token {
	union ace_condition_token_data data;/* [switch_is(type)] */
	uint32_t flags;
	enum token_type type;
}/* [public] */;

struct ace_condition_script {
	struct ace_condition_token *tokens;/* [unique] */
	uint32_t length;
}/* [public] */;

enum ace_condition_flags
#ifndef USE_UINT_ENUMS
 {
	ACE_CONDITION_FLAG_ALLOW_DEVICE=(int)(0x01)
}
#else
 { __do_not_use_enum_ace_condition_flags=INT_MAX}
#define ACE_CONDITION_FLAG_ALLOW_DEVICE ( 0x01 )
#endif
;

#endif /* _HEADER_conditional_ace */
#endif /* _PIDL_HEADER_conditional_ace */
