summaryrefslogtreecommitdiff
path: root/source3/namedbname.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/namedbname.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/namedbname.c')
-rw-r--r--source3/namedbname.c59
1 files changed, 31 insertions, 28 deletions
diff --git a/source3/namedbname.c b/source3/namedbname.c
index d27bcf8158..5c514c263f 100644
--- a/source3/namedbname.c
+++ b/source3/namedbname.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
@@ -187,7 +187,7 @@ struct name_record *find_name_search(struct subnet_record **d,
if (!(search & FIND_WINS)) return NULL;
/* find WINS subnet record. */
- *d = find_subnet(wins_ip);
+ *d = wins_subnet;
if (*d == NULL) return NULL;
@@ -203,12 +203,14 @@ struct name_record *find_name_search(struct subnet_record **d,
void dump_names(void)
{
struct name_record *n;
- struct subnet_record *d;
fstring fname, fnamenew;
time_t t = time(NULL);
FILE *f;
-
+
+ if(lp_wins_support() == False || wins_subnet == 0)
+ return;
+
strcpy(fname,lp_lockdir());
trim_string(fname,NULL,"/");
strcat(fname,"/");
@@ -224,29 +226,28 @@ void dump_names(void)
return;
}
- DEBUG(4,("Dump of local name table:\n"));
+ DEBUG(4,("Dump of WINS name table:\n"));
- for (d = subnetlist; d; d = d->next)
- for (n = d->namelist; n; n = n->next)
- {
- int i;
+ for (n = wins_subnet->namelist; n; n = n->next)
+ {
+ int i;
- DEBUG(4,("%15s ", inet_ntoa(d->bcast_ip)));
- DEBUG(4,("%15s ", inet_ntoa(d->mask_ip)));
- DEBUG(4,("%-19s TTL=%ld ",
+ DEBUG(4,("%15s ", inet_ntoa(wins_subnet->bcast_ip)));
+ DEBUG(4,("%15s ", inet_ntoa(wins_subnet->mask_ip)));
+ DEBUG(4,("%-19s TTL=%ld ",
namestr(&n->name),
n->death_time?n->death_time-t:0));
- for (i = 0; i < n->num_ips; i++)
- {
- DEBUG(4,("%15s NB=%2x source=%d",
- inet_ntoa(n->ip_flgs[i].ip),
+ for (i = 0; i < n->num_ips; i++)
+ {
+ DEBUG(4,("%15s NB=%2x source=%d",
+ inet_ntoa(n->ip_flgs[i].ip),
n->ip_flgs[i].nb_flags,n->source));
- }
- DEBUG(4,("\n"));
+ }
+ DEBUG(4,("\n"));
- if (f && ip_equal(d->bcast_ip, wins_ip) && n->source == REGISTER)
+ if (f && n->source == REGISTER)
{
/* XXXX i have little imagination as to how to output nb_flags as
anything other than as a hexadecimal number :-) */
@@ -264,7 +265,7 @@ void dump_names(void)
fprintf(f, "\n");
}
- }
+ }
fclose(f);
unlink(fname);
@@ -282,7 +283,7 @@ void dump_names(void)
****************************************************************************/
void load_netbios_names(void)
{
- struct subnet_record *d = find_subnet(wins_ip);
+ struct subnet_record *d = wins_subnet;
fstring fname;
FILE *f;
@@ -414,6 +415,7 @@ struct name_record *add_netbios_entry(struct subnet_record *d,
{
struct name_record *n;
struct name_record *n2=NULL;
+ struct subnet_record *found_subnet = 0;
int search = 0;
BOOL self = source == SELF;
@@ -447,12 +449,13 @@ struct name_record *add_netbios_entry(struct subnet_record *d,
make_nmb_name(&n->name,name,type,scope);
- if ((n2 = find_name_search(&d, &n->name, search, new_only?ipzero:ip)))
+ if ((n2 = find_name_search(&found_subnet, &n->name, search, new_only?ipzero:ip)))
{
free(n->ip_flgs);
free(n);
if (new_only || (n2->source==SELF && source!=SELF)) return n2;
n = n2;
+ d = found_subnet;
}
if (ttl)
@@ -469,7 +472,7 @@ struct name_record *add_netbios_entry(struct subnet_record *d,
DEBUG(3,("Added netbios name %s at %s ttl=%d nb_flags=%2x to interface %s\n",
namestr(&n->name),inet_ntoa(ip),ttl,nb_flags,
- ip_equal(d->bcast_ip, wins_ip) ? "WINS" : inet_ntoa(d->bcast_ip)));
+ ip_equal(d->bcast_ip, wins_ip) ? "WINS" : (char *)inet_ntoa(d->bcast_ip)));
return(n);
}
@@ -485,7 +488,7 @@ void expire_names(time_t t)
struct subnet_record *d;
/* expire old names */
- for (d = subnetlist; d; d = d->next)
+ for (d = FIRST_SUBNET; d; d = NEXT_SUBNET_INCLUDING_WINS(d))
{
for (n = d->namelist; n; n = next)
{
@@ -522,9 +525,9 @@ struct name_record *dns_name_search(struct nmb_name *question, int Time)
char *r;
BOOL dns_type = (name_type == 0x20 || name_type == 0);
struct in_addr dns_ip;
- struct subnet_record *d = find_subnet(wins_ip);
- if (d == NULL) return NULL;
+ if (wins_subnet == NULL)
+ return NULL;
DEBUG(3,("Search for %s - ", namestr(question)));
@@ -543,7 +546,7 @@ struct name_record *dns_name_search(struct nmb_name *question, int Time)
/* no luck with DNS. We could possibly recurse here XXXX */
DEBUG(3,("not found. no recursion.\n"));
/* add the fail to WINS cache of names. give it 1 hour in the cache */
- add_netbios_entry(d,qname,name_type,NB_ACTIVE,60*60,DNSFAIL,dns_ip,
+ add_netbios_entry(wins_subnet,qname,name_type,NB_ACTIVE,60*60,DNSFAIL,dns_ip,
True, True);
return NULL;
}
@@ -551,6 +554,6 @@ struct name_record *dns_name_search(struct nmb_name *question, int Time)
DEBUG(3,("found with DNS: %s\n", inet_ntoa(dns_ip)));
/* add it to our WINS cache of names. give it 2 hours in the cache */
- return add_netbios_entry(d,qname,name_type,NB_ACTIVE,2*60*60,DNS,dns_ip,
+ return add_netbios_entry(wins_subnet,qname,name_type,NB_ACTIVE,2*60*60,DNS,dns_ip,
True,True);
}