mirror of
https://github.com/samba-team/samba.git
synced 2025-02-28 01:58:17 +03:00
r5397: added testing and server support for the special handling required for the 0x1d local master browser name
in WINS (This used to be commit 2650b43ca903fb478d2943fa9bbdba8b2bf74966)
This commit is contained in:
parent
240829d53e
commit
97b2a6f7ed
@ -112,6 +112,12 @@ static void nbtd_winsserver_register(struct nbt_name_socket *nbtsock,
|
||||
uint16_t nb_flags = packet->additional[0].rdata.netbios.addresses[0].nb_flags;
|
||||
const char *address = packet->additional[0].rdata.netbios.addresses[0].ipaddr;
|
||||
|
||||
/* as a special case, the local master browser name is always accepted
|
||||
for registration, but never stored */
|
||||
if (name->type == NBT_NAME_MASTER) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
rec = winsdb_load(winssrv, name, packet);
|
||||
if (rec == NULL) {
|
||||
rcode = wins_register_new(nbtsock, packet, src_address, src_port);
|
||||
|
@ -111,7 +111,7 @@ static BOOL nbt_test_wins_name(TALLOC_CTX *mem_ctx, const char *address,
|
||||
CHECK_STRING(io.out.wins_server, address);
|
||||
CHECK_VALUE(io.out.rcode, 0);
|
||||
|
||||
if (nb_flags & NBT_NM_GROUP) {
|
||||
if (name->type != NBT_NAME_MASTER && nb_flags & NBT_NM_GROUP) {
|
||||
printf("Try to register as non-group\n");
|
||||
io.in.nb_flags &= ~NBT_NM_GROUP;
|
||||
status = nbt_name_register_wins(nbtsock, mem_ctx, &io);
|
||||
@ -132,6 +132,14 @@ static BOOL nbt_test_wins_name(TALLOC_CTX *mem_ctx, const char *address,
|
||||
query.in.retries = 0;
|
||||
|
||||
status = nbt_name_query(nbtsock, mem_ctx, &query);
|
||||
if (name->type == NBT_NAME_MASTER) {
|
||||
if (!NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_NOT_FOUND)) {
|
||||
printf("Bad response from %s for name query - %s\n",
|
||||
address, nt_errstr(status));
|
||||
return False;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)) {
|
||||
printf("No response from %s for name query\n", address);
|
||||
return False;
|
||||
@ -287,6 +295,11 @@ static BOOL nbt_test_wins(TALLOC_CTX *mem_ctx, const char *address)
|
||||
name.scope = NULL;
|
||||
ret &= nbt_test_wins_name(mem_ctx, address, &name, NBT_NODE_H);
|
||||
|
||||
name.type = NBT_NAME_MASTER;
|
||||
ret &= nbt_test_wins_name(mem_ctx, address, &name, NBT_NODE_H);
|
||||
|
||||
ret &= nbt_test_wins_name(mem_ctx, address, &name, NBT_NODE_H | NBT_NM_GROUP);
|
||||
|
||||
name.scope = "example";
|
||||
name.type = 0x72;
|
||||
ret &= nbt_test_wins_name(mem_ctx, address, &name, NBT_NODE_H);
|
||||
|
Loading…
x
Reference in New Issue
Block a user