summaryrefslogtreecommitdiff
path: root/source3/nmbd/nmbd_become_lmb.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1997-12-16 09:20:34 +0000
committerJeremy Allison <jra@samba.org>1997-12-16 09:20:34 +0000
commit16bf14adf1b78f7ec4d3d267d500258fdf399627 (patch)
tree5933e3edc94f51bce97bf9ebca498b373fdcdc2e /source3/nmbd/nmbd_become_lmb.c
parent5d4345b66de2bbf9d60e78682d820adb30b52a79 (diff)
downloadsamba-16bf14adf1b78f7ec4d3d267d500258fdf399627.tar.gz
samba-16bf14adf1b78f7ec4d3d267d500258fdf399627.tar.bz2
samba-16bf14adf1b78f7ec4d3d267d500258fdf399627.zip
Added Lanman announce patch from Jacco de Leeuw <leeuw@wins.uva.nl>.
Also added code to stop old Samba servers that announce the workgroup name as master browser name when they are a local master browser. Jeremy. (This used to be commit 3605da055737e2cc0fbfffe7772721943a5be8bd)
Diffstat (limited to 'source3/nmbd/nmbd_become_lmb.c')
-rw-r--r--source3/nmbd/nmbd_become_lmb.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/source3/nmbd/nmbd_become_lmb.c b/source3/nmbd/nmbd_become_lmb.c
index 7f54471a24..6496a2f9e5 100644
--- a/source3/nmbd/nmbd_become_lmb.c
+++ b/source3/nmbd/nmbd_become_lmb.c
@@ -115,7 +115,7 @@ in workgroup %s on subnet %s\n",
/* Forget who the local master browser was for
this workgroup. */
- *work->local_master_browser_name = '\0';
+ set_workgroup_local_master_browser_name( work, "");
/*
* Ensure the IP address of this subnet is not registered as one
@@ -333,8 +333,7 @@ on subnet %s\n", work->work_group, subrec->subnet_name));
subrec->work_changed = True;
/* Add this name to the workgroup as local master browser. */
- StrnCpy(work->local_master_browser_name, myname,
- sizeof(work->local_master_browser_name)-1);
+ set_workgroup_local_master_browser_name( work, myname);
/* Count the number of servers we have on our list. If it's
less than 10 (just a heuristic) request the servers
@@ -532,3 +531,27 @@ in workgroup %s on subnet %s\n",
become_local_master_fail1,
userdata);
}
+
+/***************************************************************
+ Utility function to set the local master browser name. Does
+ some sanity checking as old versions of Samba seem to sometimes
+ say that the master browser name for a workgroup is the same
+ as the workgroup name.
+****************************************************************/
+
+void set_workgroup_local_master_browser_name( struct work_record *work, char *newname)
+{
+ DEBUG(5,("set_workgroup_local_master_browser_name: setting local master name to '%s' \
+for workgroup %s.\n", newname, work->work_group ));
+
+ if(strequal( work->work_group, newname))
+ {
+ DEBUG(5, ("set_workgroup_local_master_browser_name: Refusing to set \
+local_master_browser_name for workgroup %s to workgroup name.\n",
+ work->work_group ));
+ return;
+ }
+
+ StrnCpy(work->local_master_browser_name, newname,
+ sizeof(work->local_master_browser_name)-1);
+}