diff options
author | Samba Release Account <samba-bugs@samba.org> | 1997-03-08 18:47:07 +0000 |
---|---|---|
committer | Samba Release Account <samba-bugs@samba.org> | 1997-03-08 18:47:07 +0000 |
commit | 3046a0d7c29ad6a5bdafe763c90aa521ac8aa93a (patch) | |
tree | 4a9d39fd41f004acc6bf91188617a3852029e553 | |
parent | ab0bdc6682815fe9878afdda6cc8119798fa2770 (diff) | |
download | samba-3046a0d7c29ad6a5bdafe763c90aa521ac8aa93a.tar.gz samba-3046a0d7c29ad6a5bdafe763c90aa521ac8aa93a.tar.bz2 samba-3046a0d7c29ad6a5bdafe763c90aa521ac8aa93a.zip |
preferred master option will force an election every 5 minutes if the
server isn't a preferred master, and DEBUG(0,(...)) this.
reason: if the os level etc parameters aren't working properly, then
a domain master browser samba server that _ought_ to be the local master
browser as well might not.
i'll modify smb.conf.5 man page etc to reflect this change.
lkcl
(This used to be commit ebaff730c9cb6d04049fd9901d46dcd758357e95)
-rw-r--r-- | source3/nameelect.c | 59 |
1 files changed, 38 insertions, 21 deletions
diff --git a/source3/nameelect.c b/source3/nameelect.c index 1c4f8e6390..9a15c0b112 100644 --- a/source3/nameelect.c +++ b/source3/nameelect.c @@ -56,33 +56,50 @@ extern uint16 nb_type; /* samba's NetBIOS name type */ ******************************************************************/ void check_master_browser(time_t t) { - static time_t lastrun=0; - struct subnet_record *d; - - if (!lastrun) lastrun = t; - if (t < lastrun + CHECK_TIME_MST_BROWSE * 60) - return; - lastrun = t; + static time_t lastrun=0; + struct subnet_record *d; - dump_workgroups(); + if (!lastrun) lastrun = t; + if (t < lastrun + CHECK_TIME_MST_BROWSE * 60) + return; + lastrun = t; - for (d = subnetlist; d; d = d->next) - { - struct work_record *work; + dump_workgroups(); - for (work = d->workgrouplist; work; work = work->next) + for (d = subnetlist; d; d = d->next) { - /* if we are not the browse master of a workgroup, and we can't - find a browser on the subnet, do something about it. */ + struct work_record *work; - if (!AM_MASTER(work)) - { - queue_netbios_packet(d,ClientNMB,NMB_QUERY,NAME_QUERY_MST_CHK, - work->work_group,0x1d,0,0,0,NULL,NULL, - True,False,d->bcast_ip,d->bcast_ip); - } + for (work = d->workgrouplist; work; work = work->next) + { + if (!AM_MASTER(work)) + { + if (lp_preferred_master()) + { + /* preferred master - not a master browser. force + becoming a master browser, hence the log message. + */ + + DEBUG(0,("%s preferred master for %s %s - force election\n", + timestring(), work->work_group, + inet_ntoa(d->bcast_ip))); + + browser_gone(work->work_group, d->bcast_ip); + } + else + { + /* if we are not the browse master of a workgroup, + and we can't find a browser on the subnet, do + something about it. + */ + + queue_netbios_packet(d,ClientNMB,NMB_QUERY,NAME_QUERY_MST_CHK, + work->work_group,0x1d,0,0,0,NULL,NULL, + True,False,d->bcast_ip,d->bcast_ip); + } + } + } } - } } |