summaryrefslogtreecommitdiff
path: root/source3/namedbserver.c
diff options
context:
space:
mode:
authorSamba Release Account <samba-bugs@samba.org>1996-07-17 18:33:36 +0000
committerSamba Release Account <samba-bugs@samba.org>1996-07-17 18:33:36 +0000
commit25b30c08dce8c04b7b98c02ac1de61d7aa76798f (patch)
tree5d9cebebe73e69021e3fd0b5583db3a871543969 /source3/namedbserver.c
parenta17469475973ca4e682753b6cfad7170577810fb (diff)
downloadsamba-25b30c08dce8c04b7b98c02ac1de61d7aa76798f.tar.gz
samba-25b30c08dce8c04b7b98c02ac1de61d7aa76798f.tar.bz2
samba-25b30c08dce8c04b7b98c02ac1de61d7aa76798f.zip
lots of changes to nmbd
lkcl (This used to be commit 45d3b2644733333c657c48a69719fec72881f7df)
Diffstat (limited to 'source3/namedbserver.c')
-rw-r--r--source3/namedbserver.c51
1 files changed, 34 insertions, 17 deletions
diff --git a/source3/namedbserver.c b/source3/namedbserver.c
index de0cda79cc..f695644129 100644
--- a/source3/namedbserver.c
+++ b/source3/namedbserver.c
@@ -103,6 +103,26 @@ static void add_server(struct work_record *work,struct server_record *s)
/****************************************************************************
+ find a server in a server list.
+ **************************************************************************/
+struct server_record *find_server(struct work_record *work, char *name)
+{
+ struct server_record *ret;
+
+ if (!work) return NULL;
+
+ for (ret = work->serverlist; ret; ret = ret->next)
+ {
+ if (strequal(ret->serv.name,name))
+ {
+ return ret;
+ }
+ }
+ return NULL;
+}
+
+
+/****************************************************************************
add a server entry
****************************************************************************/
struct server_record *add_server_entry(struct subnet_record *d,
@@ -115,33 +135,30 @@ struct server_record *add_server_entry(struct subnet_record *d,
struct server_record *s;
if (name[0] == '*')
- {
+ {
return (NULL);
- }
-
- for (s = work->serverlist; s; s = s->next)
- {
- if (strequal(name,s->serv.name)) break;
- }
+ }
+ s = find_server(work, name);
+
if (s && !replace)
- {
- DEBUG(4,("Not replacing %s\n",name));
- return(s);
- }
+ {
+ DEBUG(4,("Not replacing %s\n",name));
+ return(s);
+ }
if (!s || s->serv.type != servertype || !strequal(s->serv.comment, comment))
updatedlists=True;
if (!s)
- {
- newentry = True;
- s = (struct server_record *)malloc(sizeof(*s));
+ {
+ newentry = True;
+ s = (struct server_record *)malloc(sizeof(*s));
- if (!s) return(NULL);
+ if (!s) return(NULL);
- bzero((char *)s,sizeof(*s));
- }
+ bzero((char *)s,sizeof(*s));
+ }
if (d->my_interface && strequal(lp_workgroup(),work->work_group))