mirror of
https://github.com/samba-team/samba.git
synced 2025-02-03 13:47:25 +03:00
lsa.idl: improve idl for lsa_ForestTrust*Record*
The meaning of lsa_ForestTrustRecordFlags is based lsa_ForestTrustRecordType, but the type is not always available so it's not possible to use an union. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Guenther Deschner <gd@samba.org>
This commit is contained in:
parent
701ed1117b
commit
080db5f60a
@ -1255,6 +1255,26 @@ import "misc.idl", "security.idl";
|
||||
[todo] NTSTATUS lsa_LSARUNREGISTERAUDITEVENT();
|
||||
|
||||
/* Function 0x49 */
|
||||
typedef [bitmap32bit,public] bitmap {
|
||||
/* these apply to LSA_FOREST_TRUST_TOP_LEVEL_NAME */
|
||||
LSA_TLN_DISABLED_NEW = 0x00000001,
|
||||
LSA_TLN_DISABLED_ADMIN = 0x00000002,
|
||||
LSA_TLN_DISABLED_CONFLICT = 0x00000004,
|
||||
|
||||
/* these apply to LSA_FOREST_TRUST_DOMAIN_INFO */
|
||||
LSA_SID_DISABLED_ADMIN = 0x00000001,
|
||||
LSA_SID_DISABLED_CONFLICT = 0x00000002,
|
||||
LSA_NB_DISABLED_ADMIN = 0x00000004,
|
||||
LSA_NB_DISABLED_CONFLICT = 0x00000008
|
||||
} lsa_ForestTrustRecordFlags;
|
||||
|
||||
typedef enum {
|
||||
LSA_FOREST_TRUST_TOP_LEVEL_NAME = 0,
|
||||
LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX = 1,
|
||||
LSA_FOREST_TRUST_DOMAIN_INFO = 2,
|
||||
LSA_FOREST_TRUST_RECORD_TYPE_LAST = 3
|
||||
} lsa_ForestTrustRecordType;
|
||||
|
||||
typedef struct {
|
||||
[range(0,131072)] uint3264 length;
|
||||
[size_is(length)] uint8 *data;
|
||||
@ -1266,24 +1286,17 @@ import "misc.idl", "security.idl";
|
||||
lsa_StringLarge netbios_domain_name;
|
||||
} lsa_ForestTrustDomainInfo;
|
||||
|
||||
typedef [switch_type(uint32)] union {
|
||||
typedef [switch_type(lsa_ForestTrustRecordType)] union {
|
||||
[case(LSA_FOREST_TRUST_TOP_LEVEL_NAME)] lsa_StringLarge top_level_name;
|
||||
[case(LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX)] lsa_StringLarge top_level_name_ex;
|
||||
[case(LSA_FOREST_TRUST_DOMAIN_INFO)] lsa_ForestTrustDomainInfo domain_info;
|
||||
[default] lsa_ForestTrustBinaryData data;
|
||||
} lsa_ForestTrustData;
|
||||
|
||||
typedef enum {
|
||||
LSA_FOREST_TRUST_TOP_LEVEL_NAME = 0,
|
||||
LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX = 1,
|
||||
LSA_FOREST_TRUST_DOMAIN_INFO = 2,
|
||||
LSA_FOREST_TRUST_RECORD_TYPE_LAST = 3
|
||||
} lsa_ForestTrustRecordType;
|
||||
|
||||
typedef struct {
|
||||
uint32 flags;
|
||||
lsa_ForestTrustRecordFlags flags;
|
||||
lsa_ForestTrustRecordType type;
|
||||
hyper time;
|
||||
NTTIME_hyper time;
|
||||
[switch_is(type)] lsa_ForestTrustData forest_trust_data;
|
||||
} lsa_ForestTrustRecord;
|
||||
|
||||
@ -1308,31 +1321,10 @@ import "misc.idl", "security.idl";
|
||||
LSA_FOREST_TRUST_COLLISION_OTHER = 2
|
||||
} lsa_ForestTrustCollisionRecordType;
|
||||
|
||||
/* if type is CollisionTdo, flags can be */
|
||||
typedef [bitmap32bit] bitmap {
|
||||
LSA_TLN_DISABLED_NEW = 0x00000001,
|
||||
LSA_TLN_DISABLED_ADMIN = 0x00000002,
|
||||
LSA_TLN_DISABLED_CONFLICT = 0x00000004
|
||||
} lsa_ForestTrustCollisionTDOFlags;
|
||||
|
||||
/* if type is CollisionXref, flags can be */
|
||||
typedef [bitmap32bit] bitmap {
|
||||
LSA_SID_DISABLED_ADMIN = 0x00000001,
|
||||
LSA_SID_DISABLED_CONFLICT = 0x00000002,
|
||||
LSA_NB_DISABLED_ADMIN = 0x00000004,
|
||||
LSA_NB_DISABLED_CONFLICT = 0x00000008
|
||||
} lsa_ForestTrustCollisionXrefFlags;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(LSA_FOREST_TRUST_COLLISION_TDO)] lsa_ForestTrustCollisionTDOFlags flags;
|
||||
[case(LSA_FOREST_TRUST_COLLISION_XREF)] lsa_ForestTrustCollisionXrefFlags flags;
|
||||
[default] uint32 flags;
|
||||
} lsa_ForestTrustCollisionFlags;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 index;
|
||||
lsa_ForestTrustCollisionRecordType type;
|
||||
[switch_is(type)] lsa_ForestTrustCollisionFlags flags;
|
||||
lsa_ForestTrustRecordFlags flags;
|
||||
lsa_String name;
|
||||
} lsa_ForestTrustCollisionRecord;
|
||||
|
||||
|
@ -4318,7 +4318,7 @@ static NTSTATUS add_collision(struct lsa_ForestTrustCollisionInfo *c_info,
|
||||
|
||||
es[i]->index = idx;
|
||||
es[i]->type = collision_type;
|
||||
es[i]->flags.flags = conflict_type;
|
||||
es[i]->flags = conflict_type;
|
||||
es[i]->name.string = talloc_strdup(es[i], tdo_name);
|
||||
if (!es[i]->name.string) {
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
|
@ -4372,7 +4372,7 @@ static NTSTATUS add_collision(struct lsa_ForestTrustCollisionInfo *c_info,
|
||||
|
||||
es[i]->index = idx;
|
||||
es[i]->type = collision_type;
|
||||
es[i]->flags.flags = conflict_type;
|
||||
es[i]->flags = conflict_type;
|
||||
es[i]->name.string = talloc_strdup(es[i], tdo_name);
|
||||
if (!es[i]->name.string) {
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
|
Loading…
x
Reference in New Issue
Block a user