From c2d7914428f73d1826dffa893418fa286a5e9ab8 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 29 Sep 2005 22:06:24 +0000 Subject: r10627: - use a wrepl specific enum for the node type - the unknown flag 0x10 seems to mean that this name was localy registered on this currently asked server, that flag is not present in replica records metze (This used to be commit ba3685c41dc934692bd653f4fe9c0ee451146c40) --- source4/libcli/wrepl/winsrepl.c | 2 +- source4/libcli/wrepl/winsrepl.h | 6 +++--- source4/librpc/idl/winsrepl.idl | 9 ++++++++- source4/torture/nbt/winsreplication.c | 4 ++-- 4 files changed, 14 insertions(+), 7 deletions(-) (limited to 'source4') diff --git a/source4/libcli/wrepl/winsrepl.c b/source4/libcli/wrepl/winsrepl.c index feeea321b1..aae77feb29 100644 --- a/source4/libcli/wrepl/winsrepl.c +++ b/source4/libcli/wrepl/winsrepl.c @@ -707,7 +707,7 @@ NTSTATUS wrepl_pull_names_recv(struct wrepl_request *req, talloc_steal(io->out.names, wname->name.scope); name->type = WREPL_NAME_TYPE(wname->flags); name->state = WREPL_NAME_STATE(wname->flags); - name->node = WREPL_NBT_NODE(wname->flags); + name->node = WREPL_NAME_NODE(wname->flags); name->is_static = WREPL_NAME_IS_STATIC(wname->flags); name->raw_flags = wname->flags; name->version_id= wname->id; diff --git a/source4/libcli/wrepl/winsrepl.h b/source4/libcli/wrepl/winsrepl.h index 9b9362e4b3..e78f0464e7 100644 --- a/source4/libcli/wrepl/winsrepl.h +++ b/source4/libcli/wrepl/winsrepl.h @@ -106,11 +106,11 @@ struct wrepl_pull_table { #define WREPL_NAME_TYPE(flags) (flags & WREPL_FLAGS_RECORD_TYPE) #define WREPL_NAME_STATE(flags) ((flags & WREPL_FLAGS_RECORD_STATE)>>2) -#define WREPL_NBT_NODE(flags) ((flags & WREPL_FLAGS_NODE_TYPE)<<8) +#define WREPL_NAME_NODE(flags) ((flags & WREPL_FLAGS_NODE_TYPE)>>5) #define WREPL_NAME_IS_STATIC(flags) ((flags & WREPL_FLAGS_IS_STATIC)?True:False) #define WREPL_NAME_FLAGS(type, state, node, is_static) \ - (type | (state << 2) | (node>>8) | \ + (type | (state << 2) | (node << 5) | \ (is_static ? WREPL_FLAGS_IS_STATIC : 0)) /* @@ -127,7 +127,7 @@ struct wrepl_pull_names { struct nbt_name name; enum wrepl_name_type type; enum wrepl_name_state state; - enum nbt_node_type node; + enum wrepl_name_node node; BOOL is_static; uint32_t raw_flags; uint64_t version_id; diff --git a/source4/librpc/idl/winsrepl.idl b/source4/librpc/idl/winsrepl.idl index c159d258de..4d4d9c912e 100644 --- a/source4/librpc/idl/winsrepl.idl +++ b/source4/librpc/idl/winsrepl.idl @@ -49,10 +49,17 @@ interface wrepl WREPL_STATE_RESERVED = 0x3 } wrepl_name_state; + typedef [enum8bit] enum { + WREPL_NODE_B = 0x0, + WREPL_NODE_P = 0x1, + WREPL_NODE_M = 0x2, + WREPL_NODE_H = 0x3 + } wrepl_name_node; + typedef [bitmap32bit] bitmap { WREPL_FLAGS_RECORD_TYPE = 0x00000003, WREPL_FLAGS_RECORD_STATE = 0x0000000C, - WREPL_FLAGS_0x00000010 = 0x00000010, + WREPL_FLAGS_REGISTERED_LOCAL = 0x00000010, WREPL_FLAGS_NODE_TYPE = 0x00000060, WREPL_FLAGS_IS_STATIC = 0x00000080 } wrepl_flags; diff --git a/source4/torture/nbt/winsreplication.c b/source4/torture/nbt/winsreplication.c index d3ec5e84d6..68961ab180 100644 --- a/source4/torture/nbt/winsreplication.c +++ b/source4/torture/nbt/winsreplication.c @@ -147,9 +147,9 @@ static void display_entry(TALLOC_CTX *mem_ctx, struct wrepl_name *name) int i; printf("%s\n", nbt_name_string(mem_ctx, &name->name)); - printf("\tTYPE:%u STATE:%u NODE:0x%04X STATIC:%u VERSION_ID: %llu\n", + printf("\tTYPE:%u STATE:%u NODE:%u STATIC:%u VERSION_ID: %llu\n", name->type, name->state, name->node, name->is_static, name->version_id); - printf("\tRAW_FLAGS:0x%08X OWNER: %-15s\n", + printf("\tRAW_FLAGS: 0x%08X OWNER: %-15s\n", name->raw_flags, name->owner); for (i=0;inum_addresses;i++) { printf("\tADDR: %-15s OWNER: %-15s\n", -- cgit