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