/* header auto-generated by pidl */

#ifndef _PIDL_HEADER_xattr
#define _PIDL_HEADER_xattr

#include <stdint.h>


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

#define XATTR_DOSATTRIB_NAME	( "user.DosAttrib" )
#define XATTR_DOSATTRIB_NAME_S3	( "user.DOSATTRIB" )
#define XATTR_DOSATTRIB_ESTIMATED_SIZE	( 64 )
#define XATTR_DOSEAS_NAME	( "user.DosEAs" )
#define XATTR_DOSSTREAMS_NAME	( "user.DosStreams" )
#define XATTR_STREAM_FLAG_INTERNAL	( 0x00000001 )
#define XATTR_DOSSTREAM_PREFIX	( "user.DosStream." )
#define XATTR_MAX_STREAM_SIZE	( 0x4000 )
#define XATTR_MAX_STREAM_SIZE_TDB	( 0x100000 )
#define XATTR_NTACL_NAME	( "security.NTACL" )
#define XATTR_SD_HASH_SIZE	( 64 )
#define XATTR_SD_HASH_TYPE_NONE	( 0x0 )
#define XATTR_SD_HASH_TYPE_SHA256	( 0x1 )
struct xattr_DosInfoFFFFCompat {
	uint32_t attrib;
};

struct xattr_DosInfo1 {
	uint32_t attrib;
	uint32_t ea_size;
	uint64_t size;
	uint64_t alloc_size;
	NTTIME create_time;
	NTTIME change_time;
};

struct xattr_DosInfo2Old {
	uint32_t flags;
	uint32_t attrib;
	uint32_t ea_size;
	uint64_t size;
	uint64_t alloc_size;
	NTTIME create_time;
	NTTIME change_time;
	NTTIME write_time;
	const char * name;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM)] */
};

/* bitmap xattr_DosInfoValidFlags */
#define XATTR_DOSINFO_ATTRIB ( 0x00000001 )
#define XATTR_DOSINFO_EA_SIZE ( 0x00000002 )
#define XATTR_DOSINFO_SIZE ( 0x00000004 )
#define XATTR_DOSINFO_ALLOC_SIZE ( 0x00000008 )
#define XATTR_DOSINFO_CREATE_TIME ( 0x00000010 )
#define XATTR_DOSINFO_CHANGE_TIME ( 0x00000020 )
#define XATTR_DOSINFO_ITIME ( 0x00000040 )

struct xattr_DosInfo3 {
	uint32_t valid_flags;
	uint32_t attrib;
	uint32_t ea_size;
	uint64_t size;
	uint64_t alloc_size;
	NTTIME create_time;
	NTTIME change_time;
};

struct xattr_DosInfo4 {
	uint32_t valid_flags;
	uint32_t attrib;
	NTTIME itime;
	NTTIME create_time;
};

struct xattr_DosInfo5 {
	uint32_t valid_flags;
	uint32_t attrib;
	NTTIME create_time;
};

union xattr_DosInfo {
	struct xattr_DosInfoFFFFCompat compatinfoFFFF;/* [case(0xFFFF)] */
	struct xattr_DosInfo1 info1;/* [case] */
	struct xattr_DosInfo2Old oldinfo2;/* [case(2)] */
	struct xattr_DosInfo3 info3;/* [case(3)] */
	struct xattr_DosInfo4 info4;/* [case(4)] */
	struct xattr_DosInfo5 info5;/* [case(5)] */
}/* [public,switch_type(uint16)] */;

struct xattr_DosAttrib {
	uint16_t version;
	union xattr_DosInfo info;/* [switch_is(version)] */
}/* [public] */;

struct xattr_DOSATTRIB {
	const char * attrib_hex;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
	uint16_t version;
	union xattr_DosInfo info;/* [switch_is(version)] */
}/* [noprint,nopull,nopush,public] */;

struct xattr_EA {
	const char * name;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM)] */
	DATA_BLOB value;
};

struct xattr_DosEAs {
	uint16_t num_eas;
	struct xattr_EA *eas;/* [size_is(num_eas),unique] */
}/* [public] */;

struct tdb_xattrs {
	uint32_t num_eas;
	struct xattr_EA *eas;
}/* [public] */;

struct xattr_DosStream {
	uint32_t flags;
	uint64_t size;
	uint64_t alloc_size;
	const char * name;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM)] */
};

struct xattr_DosStreams {
	uint32_t num_streams;
	struct xattr_DosStream *streams;/* [size_is(num_streams),unique] */
}/* [public] */;

struct security_descriptor_hash_v2 {
	struct security_descriptor *sd;/* [unique] */
	uint8_t hash[16];
}/* [public] */;

struct security_descriptor_hash_v3 {
	struct security_descriptor *sd;/* [unique] */
	uint16_t hash_type;
	uint8_t hash[64];
}/* [public] */;

struct security_descriptor_hash_v4 {
	struct security_descriptor *sd;/* [unique] */
	uint16_t hash_type;
	uint8_t hash[64];
	const char * description;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM)] */
	NTTIME time;
	uint8_t sys_acl_hash[64];
}/* [public] */;

union xattr_NTACL_Info {
	struct security_descriptor *sd;/* [case,unique] */
	struct security_descriptor_hash_v2 *sd_hs2;/* [case(2),unique] */
	struct security_descriptor_hash_v3 *sd_hs3;/* [case(3),unique] */
	struct security_descriptor_hash_v4 *sd_hs4;/* [case(4),unique] */
}/* [switch_type(uint16)] */;

struct xattr_NTACL {
	uint16_t version;
	union xattr_NTACL_Info info;/* [switch_is(version)] */
}/* [public] */;

struct xattr_sys_acl_hash_wrapper {
	DATA_BLOB acl_as_blob;
	uid_t owner;
	gid_t group;
	uint32_t mode;
};

#endif /* _HEADER_xattr */
#endif /* _PIDL_HEADER_xattr */
