summaryrefslogtreecommitdiff
path: root/source3/nameserv.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/nameserv.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/nameserv.c')
-rw-r--r--source3/nameserv.c77
1 files changed, 34 insertions, 43 deletions
diff --git a/source3/nameserv.c b/source3/nameserv.c
index ac2dac1683..022b5521a2 100644
--- a/source3/nameserv.c
+++ b/source3/nameserv.c
@@ -2,7 +2,7 @@
Unix SMB/Netbios implementation.
Version 1.9.
NBT netbios routines and daemon - version 2
- Copyright (C) Andrew Tridgell 1994-1996
+ 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
@@ -85,7 +85,7 @@ void remove_name_entry(struct subnet_record *d, char *name,int type)
if (!lp_wins_support())
{
/* not a WINS server: we have to release them on the network */
- queue_netbios_pkt_wins(d,ClientNMB,NMB_REL,NAME_RELEASE,
+ queue_netbios_pkt_wins(ClientNMB,NMB_REL,NAME_RELEASE,
name, type, 0, 0,0,NULL,NULL,
False, True, ipzero, ipzero);
}
@@ -142,7 +142,7 @@ void add_my_name_entry(struct subnet_record *d,char *name,int type,int nb_flags)
else
{
/* a time-to-live allows us to refresh this name with the WINS server. */
- queue_netbios_pkt_wins(d,ClientNMB,
+ queue_netbios_pkt_wins(ClientNMB,
re_reg ? NMB_REG_REFRESH : NMB_REG, NAME_REGISTER,
name, type, nb_flags, GET_TTL(0),0,NULL,NULL,
False, True, ipzero, ipzero);
@@ -171,15 +171,15 @@ void add_domain_names(time_t t)
{
static time_t lastrun = 0;
struct subnet_record *d;
+ struct work_record *work;
+ struct nmb_name n;
if (lastrun != 0 && t < lastrun + CHECK_TIME_ADD_DOM_NAMES * 60) return;
lastrun = t;
- for (d = subnetlist; d; d = d->next)
+ for (d = FIRST_SUBNET; d; d = NEXT_SUBNET_INCLUDING_WINS(d))
{
- struct work_record *work = find_workgroupstruct(d, lp_workgroup(), False);
- struct nmb_name n;
-
+ work = find_workgroupstruct(d, lp_workgroup(), False);
if (lp_domain_logons() && work && work->log_state == LOGON_NONE)
{
make_nmb_name(&n,lp_workgroup(),0x1c,scope);
@@ -191,52 +191,52 @@ void add_domain_names(time_t t)
become_logon_server(d, work);
}
}
+ }
- if (lp_domain_master() && work && work->dom_state == DOMAIN_NONE)
+ if(wins_subnet != 0)
+ work = find_workgroupstruct(wins_subnet, lp_workgroup(), False);
+
+ if (lp_domain_master() && work && work->dom_state == DOMAIN_NONE)
{
DEBUG(0,("add_domain_names:Checking for domain master on workgroup %s\n", lp_workgroup()));
make_nmb_name(&n,lp_workgroup(),0x1b,scope);
- if (!find_name(d->namelist, &n, FIND_SELF))
+ if (!find_name(wins_subnet->namelist, &n, FIND_SELF))
{
- DEBUG(0,("add_domain_names: attempting to become domain master browser on workgroup %s, bcast %s\n",
- lp_workgroup(), inet_ntoa(d->bcast_ip)));
+ DEBUG(0,("add_domain_names: attempting to become domain master browser on workgroup %s\n",
+ lp_workgroup()));
- if (ip_equal(d->bcast_ip,wins_ip))
+ if (lp_wins_support())
{
- if (lp_wins_support())
- {
- /* use the wins server's capabilities (indirectly). if
- someone has already register the domain<1b> name with
- the WINS server, then the WINS server's job is to _check_
- that the owner still wants it, before giving it away.
- */
+ /* use the wins server's capabilities (indirectly). if
+ someone has already registered the domain<1b> name with
+ the WINS server, then the WINS server's job is to _check_
+ that the owner still wants it, before giving it away.
+ */
- DEBUG(1,("%s initiating becoming logon server for %s %s\n",
- timestring(), lp_workgroup(), inet_ntoa(d->bcast_ip)));
- become_domain_master(d, work);
- }
+ DEBUG(1,("%s initiating becoming domain master for %s\n",
+ timestring(), lp_workgroup()));
+ become_domain_master(wins_subnet, work);
}
else
{
/* send out a query to establish whether there's a
- domain controller on the local subnet. if not,
- we can become a domain controller on that subnet.
+ domain controller on the WINS subnet. if not,
+ we can become a domain controller.
it's only polite that we check, before claiming the
NetBIOS name 0x1b.
*/
- DEBUG(0,("add_domain_names:querying for domain master on workgroup %s\n", lp_workgroup()));
+ DEBUG(0,("add_domain_names:querying WINS for domain master on workgroup %s\n", lp_workgroup()));
- queue_netbios_packet(d,ClientNMB,NMB_QUERY,NAME_QUERY_DOMAIN,
+ queue_netbios_pkt_wins(ClientNMB,NMB_QUERY,NAME_QUERY_DOMAIN,
lp_workgroup(), 0x1b,
0, 0,0,NULL,NULL,
- True, True, d->bcast_ip, d->bcast_ip);
+ False, False, ipzero, ipzero);
}
}
}
- }
}
@@ -252,9 +252,9 @@ void add_my_names(void)
there would be yet _another_ for-loop, this time on the transport type
*/
- for (d = subnetlist; d; d = d->next)
+ for (d = FIRST_SUBNET; d; d = NEXT_SUBNET_INCLUDING_WINS(d))
{
- BOOL wins = lp_wins_support() && ip_equal(d->bcast_ip,wins_ip);
+ BOOL wins = (lp_wins_support() && (d == wins_subnet));
struct work_record *work = find_workgroupstruct(d, lp_workgroup(), False);
add_my_name_entry(d, myname,0x20,nb_type|NB_ACTIVE);
@@ -268,15 +268,6 @@ void add_my_names(void)
add_netbios_entry(d,"*",0x20,nb_type|NB_ACTIVE,0,SELF,d->myip,False,wins);
add_netbios_entry(d,"__SAMBA__",0x20,nb_type|NB_ACTIVE,0,SELF,d->myip,False,wins);
add_netbios_entry(d,"__SAMBA__",0x00,nb_type|NB_ACTIVE,0,SELF,d->myip,False,wins);
-
- if (lp_domain_logons() && work && work->log_state == LOGON_NONE)
- {
- become_logon_server(d, work);
- }
- if (lp_domain_master() && work && work->dom_state == DOMAIN_NONE)
- {
- become_domain_master(d, work);
- }
}
}
@@ -288,7 +279,7 @@ void remove_my_names()
{
struct subnet_record *d;
- for (d = subnetlist; d; d = d->next)
+ for (d = FIRST_SUBNET; d; d = NEXT_SUBNET_INCLUDING_WINS(d))
{
struct name_record *n, *next;
@@ -314,7 +305,7 @@ void refresh_my_names(time_t t)
{
struct subnet_record *d;
- for (d = subnetlist; d; d = d->next)
+ for (d = FIRST_SUBNET; d; d = NEXT_SUBNET_INCLUDING_WINS(d))
{
struct name_record *n;
@@ -347,7 +338,7 @@ void refresh_my_names(time_t t)
void query_refresh_names(time_t t)
{
struct name_record *n;
- struct subnet_record *d = find_subnet(wins_ip);
+ struct subnet_record *d = wins_subnet;
static time_t lasttime = 0;