summaryrefslogtreecommitdiff
path: root/source3/namebrowse.c
diff options
context:
space:
mode:
authorSamba Release Account <samba-bugs@samba.org>1997-05-08 01:14:17 +0000
committerSamba Release Account <samba-bugs@samba.org>1997-05-08 01:14:17 +0000
commit0f1f0ceb9519368188f695e18e2341ccfd1b2d15 (patch)
tree7a69aa1d7bde1abd7cfe7e93c79ce8776846ed63 /source3/namebrowse.c
parent3377ecb35e808ff30f5c8b001df758a9f5bcae17 (diff)
downloadsamba-0f1f0ceb9519368188f695e18e2341ccfd1b2d15.tar.gz
samba-0f1f0ceb9519368188f695e18e2341ccfd1b2d15.tar.bz2
samba-0f1f0ceb9519368188f695e18e2341ccfd1b2d15.zip
'The mother of all checkins' :-). Jeremy Allison (jallison@whistle.com)
Wed May 7 1997: Update for 1.9.17alpha1 release - 'browsefix release' designed to make browsing across subnets work. byteorder.h: Updated copyright to 1997. charcnv.c: Updated copyright to 1997. charset.c Updated copyright to 1997. charset.h Updated copyright to 1997. client.c Updated copyright to 1997. clientutil.c Updated copyright to 1997. dir.c Updated copyright to 1997. fault.c Updated copyright to 1997. includes.h Updated copyright to 1997. interface.c Updated copyright to 1997. ipc.c Updated copyright to 1997. kanji.c Updated copyright to 1997. kanji.h Updated copyright to 1997. loadparm.c Updated copyright to 1997. locking.c Updated copyright to 1997. mangle.c Updated copyright to 1997. message.c Updated copyright to 1997. nameannounce.c Made use of WINS subnet explicit. Added reset_announce_timer() so announcement can be made immediately when we become a master. Expanded code to do sync with dmb. namebrowse.c Removed redundent checks for AM_MASTER in sync code. Made use of WINS subnet explicit. namedbname.c Made use of WINS subnet explicit. namedbresp.c Made use of WINS subnet explicit. namedbserver.c Made use of WINS subnet explicit. namedbsubnet.c Explicitly add workgroup to WINS subnet when we become a dmb. Made use of WINS subnet explicit. namedbwork.c Made use of WINS subnet explicit. Removed redundent check_work_servertype() function. nameelect.c Explicitly add workgroup to WINS subnet when we become a master browser. Made use of WINS subnet explicit. namelogon.c Updated copyright to 1997. namepacket.c Updated copyright to 1997. namequery.c Updated copyright to 1997. nameresp.c Made use of WINS subnet explicit. Made nmbd fail if configured as master browser and one exists already. nameserv.c Made use of WINS subnet explicit. Remove redundent logon server and domain master code. nameserv.h Add emumerate subnet macros. nameservreply.c Made use of WINS subnet explicit. nameservresp.c Updated copyright to 1997. namework.c Made use of WINS subnet explicit. Updated code to add sync browser entries to add subnet parameter. nmbd.c Added sanity check for misconfigured nmbd. nmblib.c Updated copyright to 1997. nmblookup.c Updated copyright to 1997. nmbsync.c Removed redundent AM_ANY_MASTER check. params.c Updated copyright to 1997. password.c Updated copyright to 1997. pipes.c Updated copyright to 1997. predict.c Updated copyright to 1997. printing.c Updated copyright to 1997. proto.h Changed protos for new nmbd code. quotas.c Updated copyright to 1997. replace.c Updated copyright to 1997. reply.c Updated copyright to 1997. server.c Updated copyright to 1997. shmem.c Updated copyright to 1997. smb.h Updated copyright to 1997. smbencrypt.c Updated copyright to 1997. smbpasswd.c Updated copyright to 1997. smbrun.c Updated copyright to 1997. status.c Updated copyright to 1997. system.c Updated copyright to 1997. testparm.c Updated copyright to 1997. testprns.c Updated copyright to 1997. time.c Updated copyright to 1997. trans2.c Updated copyright to 1997. trans2.h Updated copyright to 1997. uid.c Updated copyright to 1997. username.c Updated copyright to 1997. util.c Updated copyright to 1997. version.h Changed to 1.9.17alpha1. (This used to be commit cf23a155a1315f50d488794a2caf88402bf3e3e6)
Diffstat (limited to 'source3/namebrowse.c')
-rw-r--r--source3/namebrowse.c60
1 files changed, 25 insertions, 35 deletions
diff --git a/source3/namebrowse.c b/source3/namebrowse.c
index b891f51718..1dd293d27b 100644
--- a/source3/namebrowse.c
+++ b/source3/namebrowse.c
@@ -2,7 +2,7 @@
Unix SMB/Netbios implementation.
Version 1.9.
NBT netbios routines and daemon - version 2
- Copyright (C) Andrew Tridgell 1994-1995
+ Copyright (C) Andrew Tridgell 1994-1997
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -95,7 +95,8 @@ void expire_browse_cache(time_t t)
add a browser entry
****************************************************************************/
struct browse_cache_record *add_browser_entry(char *name, int type, char *wg,
- time_t ttl, struct in_addr ip, BOOL local)
+ time_t ttl, struct subnet_record *d,
+ struct in_addr ip, BOOL local)
{
BOOL newentry=False;
@@ -137,7 +138,8 @@ struct browse_cache_record *add_browser_entry(char *name, int type, char *wg,
b->ip = ip;
b->type = type;
b->local = local; /* local server list sync or complete sync required */
-
+ b->subnet = d;
+
if (newentry || ttl < b->sync_time)
b->sync_time = ttl;
@@ -164,20 +166,14 @@ find a server responsible for a workgroup, and sync browse lists
**************************************************************************/
static void start_sync_browse_entry(struct browse_cache_record *b)
{
- struct subnet_record *d;
+ struct subnet_record *d = b->subnet;
struct work_record *work;
- /* Look for the workgroup first on the local subnet. If this
- fails try WINS - we may need to sync with the domain master,
- or we may be the domain master and need to sync with subnet
- masters.
- */
-
- if (!(d = find_subnet_all(b->ip))) {
- DEBUG(0, ("start_sync_browse_entry: failed to get a \
-subnet for a browse cache entry workgroup %s, server %s\n",
- b->group, b->name));
- return;
+ /* Check panic conditions - these should not be true. */
+ if(b->subnet != wins_subnet) {
+ DEBUG(0,
+ ("start_sync_browse_entry: ERROR sync requested on non-WINS subnet.\n"));
+ return;
}
if (!(work = find_workgroupstruct(d, b->group, False))) {
@@ -187,29 +183,23 @@ workgroup for a browse cache entry workgroup %s, server %s\n",
return;
}
- /* only sync if we are a subnet master or domain master - but
- we sync if we are a master for this workgroup on *any*
- of our interfaces. */
- if (AM_MASTER(work) || AM_DOMMST(work) || AM_ANY_MASTER(work)) {
-
- DEBUG(4, ("start_sync_browse_entry: Initiating %s sync with %s<0x20>, \
+ DEBUG(4, ("start_sync_browse_entry: Initiating %s sync with %s<0x20>, \
workgroup %s\n",
- b->local ? "local" : "remote", b->name, b->group));
+ b->local ? "local" : "remote", b->name, b->group));
- /* first check whether the server we intend to sync with exists. if it
- doesn't, the server must have died. o dear. */
+ /* first check whether the server we intend to sync with exists. if it
+ doesn't, the server must have died. o dear. */
- /* see response_netbios_packet() or expire_netbios_response_entries() */
- /* We cheat here by using the my_comment field of the response_record
- struct as the workgroup name we are going to do the sync for.
- This is because the reply packet doesn't include the workgroup, but
- we need it when the reply comes back.
- */
- queue_netbios_packet(d,ClientNMB,NMB_QUERY,
- b->local?NAME_QUERY_SYNC_LOCAL:NAME_QUERY_SYNC_REMOTE,
- b->name,0x20,0,0,0,NULL,b->group,
- False,False,b->ip,b->ip);
- }
+ /* see response_netbios_packet() or expire_netbios_response_entries() */
+ /* We cheat here by using the my_comment field of the response_record
+ struct as the workgroup name we are going to do the sync for.
+ This is because the reply packet doesn't include the workgroup, but
+ we need it when the reply comes back.
+ */
+ queue_netbios_packet(d,ClientNMB,NMB_QUERY,
+ b->local?NAME_QUERY_SYNC_LOCAL:NAME_QUERY_SYNC_REMOTE,
+ b->name,0x20,0,0,0,NULL,b->group,
+ False,False,b->ip,b->ip);
b->synced = True;
}