diff options
author | Stefan Metzmacher <metze@samba.org> | 2005-09-29 22:06:24 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:39:13 -0500 |
commit | c2d7914428f73d1826dffa893418fa286a5e9ab8 (patch) | |
tree | eccaefe535f08bd17d42a1a863eecb78e0e271be | |
parent | c91fa5c504b05adb56cc645ad1fa82d5e73ec42e (diff) | |
download | samba-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)
-rw-r--r-- | source4/libcli/wrepl/winsrepl.c | 2 | ||||
-rw-r--r-- | source4/libcli/wrepl/winsrepl.h | 6 | ||||
-rw-r--r-- | source4/librpc/idl/winsrepl.idl | 9 | ||||
-rw-r--r-- | source4/torture/nbt/winsreplication.c | 4 |
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", |