Bug with NetBIOS scope & syncing browser lists
Jason Levine's List Subscription
jlists at siphoto.com
Tue Jan 4 14:55:55 GMT 2000
(Sorry about the crosspost -- I realized that this bug report may be more
appropriate on the NT Domain list, since it's a domain vs. local browse master
issue.)
I think that I have discovered a bug in samba (I'm now running v2.0.6) when a
NetBIOS scope ID is being used. Essentially, samba will use the configured
scope ID for everything *except* for when nmbd tries to do a node status on
the PDC as part of syncing the browser lists; when it does that node status,
it does it *without* the scope ID, and it (predictably) fails.
Our network consists of a main IP subnet which contains the primary domain
controller, the WINS server, etc. on it, and then a few different IP subnets
that also participate in the Windows networking domain. The whole network has
a single NetBIOS scope ID set, for internal security requirement reasons.
Each of the different subnets, obviously, has to have a master browser on it;
on one of them, that master browser is my samba box.
In terms of configuration, both of the daemons (smbd and nmbd) are started up
with the "-i [scopeID]" option. I have the samba box configured as the
preferred master and to try to become a local master ("preferred master = yes"
and "local master = yes"). When I start samba, nmbd (through its log file)
tells me that it becomes the local master; 20 seconds later, it tells me that
it was unable to sync browser lists. The exact error in the log file:
[2000/01/03 15:35:20, 0]
nmbd/nmbd_browsesync.c:domain_master_node_status_fail(265)
domain_master_node_status_fail:
Doing a node status request to the domain master browser
for workgroup [our domain] at IP [our PDC IP] failed.
Cannot sync browser lists.
When I do a network packet capture, the node status attempt doesn't use the
scope ID at all, so it fails. (Of note, if I do a node status with nmblookup
without a scope ID, the packet looks identical to the one that nmbd is sending
out when it does the node status, and it fails; if I do the node status *with*
the scope ID, then the packet shows that the scope ID is being used, and the
node status succeeds.)
This is a pretty big problem, for us at least -- it means that I can't use a
NetBIOS scope ID and have a samba box take over as master browser for a
subnet. Ugh!
I just trawled through the souce, and I think I may know where the problem is;
that being said, I can't write C to save my life, and can barely READ C, so I
could be totally off on this one.
It looks to me that, in nmbd/nmbd_browsesync.c, the function
find_domain_master_name_query_success is where the problem's at. The lines:
/* Now initiate the node status request. */
memset((char *)&nmbname, '\0',sizeof(nmbname));
nmbname.name[0] = '*';
look to me to be where the NMB packet is built that is used to do the node
status query; it looks like the nmbname.scope should ALSO be set here.
Again, I can read C (and follow includes and structure definitions in C) about
as well as I can vocalize ancient Sanskrit, so I may be completely off on
this. (I just wanted to contribute what I could, since I sure can't FIX the
problem.)
Thanks in advance for any help that y'all can provide!
Jason Levine
More information about the samba-ntdom
mailing list