summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2005-09-29 22:06:24 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:39:13 -0500
commitc2d7914428f73d1826dffa893418fa286a5e9ab8 (patch)
treeeccaefe535f08bd17d42a1a863eecb78e0e271be /source4
parentc91fa5c504b05adb56cc645ad1fa82d5e73ec42e (diff)
downloadsamba-c2d7914428f73d1826dffa893418fa286a5e9ab8.tar.gz
samba-c2d7914428f73d1826dffa893418fa286a5e9ab8.tar.bz2
samba-c2d7914428f73d1826dffa893418fa286a5e9ab8.zip
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)
Diffstat (limited to 'source4')
-rw-r--r--source4/libcli/wrepl/winsrepl.c2
-rw-r--r--source4/libcli/wrepl/winsrepl.h6
-rw-r--r--source4/librpc/idl/winsrepl.idl9
-rw-r--r--source4/torture/nbt/winsreplication.c4
4 files changed, 14 insertions, 7 deletions
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;i<name->num_addresses;i++) {
printf("\tADDR: %-15s OWNER: %-15s\n",