svn commit: samba r5397 - in branches/SAMBA_4_0/source: nbt_server
torture/nbt
tridge at samba.org
tridge at samba.org
Mon Feb 14 12:46:03 GMT 2005
Author: tridge
Date: 2005-02-14 12:46:03 +0000 (Mon, 14 Feb 2005)
New Revision: 5397
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=5397
Log:
added testing and server support for the special handling required for the 0x1d local master browser name
in WINS
Modified:
branches/SAMBA_4_0/source/nbt_server/winsserver.c
branches/SAMBA_4_0/source/torture/nbt/wins.c
Changeset:
Modified: branches/SAMBA_4_0/source/nbt_server/winsserver.c
===================================================================
--- branches/SAMBA_4_0/source/nbt_server/winsserver.c 2005-02-14 11:31:48 UTC (rev 5396)
+++ branches/SAMBA_4_0/source/nbt_server/winsserver.c 2005-02-14 12:46:03 UTC (rev 5397)
@@ -112,6 +112,12 @@
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);
Modified: branches/SAMBA_4_0/source/torture/nbt/wins.c
===================================================================
--- branches/SAMBA_4_0/source/torture/nbt/wins.c 2005-02-14 11:31:48 UTC (rev 5396)
+++ branches/SAMBA_4_0/source/torture/nbt/wins.c 2005-02-14 12:46:03 UTC (rev 5397)
@@ -111,7 +111,7 @@
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 @@
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 @@
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);
More information about the samba-cvs
mailing list