summaryrefslogtreecommitdiff
path: root/source3/nameconf.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/nameconf.c')
-rw-r--r--source3/nameconf.c350
1 files changed, 0 insertions, 350 deletions
diff --git a/source3/nameconf.c b/source3/nameconf.c
deleted file mode 100644
index 331ec13a95..0000000000
--- a/source3/nameconf.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- NBT netbios routines and daemon - version 2
- Copyright (C) David Chappell 1996-1998
-
- 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
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Revision History:
-
- 30 July 96: David.Chappell@mail.trincoll.edu
- Expanded multiple workgroup domain master browser support.
-
-*/
-
-/*
-** nameconf.c
-** These functions dispense information from smbbrowse.conf.
-**
-**
-*/
-
-#include "includes.h"
-extern int DEBUGLEVEL;
-
-extern fstring myworkgroup;
-
-#if 0
-struct smbbrowse_parms
- {
- char *name;
- BOOL (*reader)(char *string, void *toset);
- } smbbrowse_table[] =
-{
- {"preferred master", NULL},
- {"local master", NULL},
- {"domain master", NULL}
-} ;
-#endif
-
-/*
-** Structure for the list of workgroups from smbbrowse.conf. This
-** structure should only be manipulated thru the functions in this file.
-** That is why it is not defined in a header file.
-*/
-struct smbbrowse
-{
- char work_name[16]; /* workgroup name */
- char browsing_alias[16]; /* alias for our role in this workgroup */
- struct server_identity *my_names; /* a list of server name we should appear here as */
- BOOL should_workgroup_member; /* should we try to become a member of this workgroup? */
- BOOL should_local_master; /* should we try to become a master browser? */
- BOOL should_domain_master; /* should we try to become the domain master browser? */
-} ;
-
-/* The whole list */
-static struct smbbrowse *smbbrowse_workgroups = (struct smbbrowse*)NULL;
-
-/* The size of the list */
-static int array_size = 0;
-
-/* The next available space in the list */
-static int nexttoken = 0;
-
-int get_num_workgroups(void)
-{
- return nexttoken;
-}
-
-/*
-** This makes a new workgroup structure, possibly taking an
-** old one as a model.
-*/
-static struct smbbrowse *new_workgroup(struct smbbrowse *model,
- char *workgroup_name,
- char *default_name)
-{
- struct smbbrowse *new;
-
- if( ! (array_size > nexttoken) )
- {
- array_size += 10;
- smbbrowse_workgroups = (struct smbbrowse*)realloc(smbbrowse_workgroups,
- array_size * sizeof(struct smbbrowse));
- }
-
- new = &smbbrowse_workgroups[nexttoken];
-
- if(model != (struct smbbrowse *)NULL )
- memcpy(new, model, sizeof(struct smbbrowse));
- else
- memset(new, 0, sizeof(struct smbbrowse));
-
- StrnCpy(new->work_name, workgroup_name, 15);
- strupper(new->work_name);
-
- if (strequal(myworkgroup, workgroup_name))
- StrnCpy(new->browsing_alias, default_name, 15);
- else
- sprintf(new->browsing_alias, "%.14s%x", default_name, nexttoken);
- strupper(new->browsing_alias);
-
- DEBUG(4,("wg: %s alias: %s token: %x\n",
- new->work_name, new->browsing_alias, nexttoken));
-
- nexttoken++;
- return new;
-}
-
-/*
-** If fed a workgroup name, this function returns its token number.
-** If the workgroup does not exist a new token is assigned unless
-** new workgroups are not allowed.
-*/
-int conf_workgroup_name_to_token(char *workgroup_name,char *default_name)
-{
- int idx;
-
- /* Look for an existing instance. */
- for(idx=0; idx < nexttoken; idx++)
- {
- if(strequal(workgroup_name, smbbrowse_workgroups[idx].work_name))
- {
- return idx;
- }
- }
-
- /* See if creating new ones in admissable. */
- for(idx=0; idx < nexttoken; idx++)
- {
- if(strequal("*", smbbrowse_workgroups[idx].work_name))
- {
- struct smbbrowse *w = new_workgroup(&smbbrowse_workgroups[idx],
- workgroup_name, default_name);
- w->should_workgroup_member = False;
-
- return (nexttoken - 1);
- }
- }
-
- /* Not allowed */
- DEBUG(4, ("refusing to allow new workgroup\n"));
- return -1;
-}
-
-/*
-** This is a workgroups array bounds checker.
-*/
-static int range_check(int token)
-{
- if(token < 0 || token >= nexttoken)
- {
- DEBUG(0, ("range_check(): failed\n"));
- return True;
- }
-
- return False;
-}
-
-/*
-** Given a token, return the name.
-*/
-char *conf_workgroup_name(int token)
-{
- if(range_check(token))
- return (char*)NULL;
-
- return smbbrowse_workgroups[token].work_name;
-}
-
-/*
-** Given a token, return True if we should try
-** to become a master browser.
-*/
-int conf_should_workgroup_member(int token)
- {
-
- if(range_check(token))
- return False;
-
- return smbbrowse_workgroups[token].should_workgroup_member;
- }
-
-/*
-** Given a token, return True if we should try
-** to become a master browser.
-*/
-int conf_should_local_master(int token)
- {
- if(range_check(token))
- return False;
-
- return smbbrowse_workgroups[token].should_local_master;
- }
-
-/*
-** Given a token, return True if we should try
-** to become a domain master browser.
-*/
-int conf_should_domain_master(int token)
- {
- if(range_check(token))
- return False;
-
- return smbbrowse_workgroups[token].should_domain_master;
- }
-
-/*
-** Given a token, return the name.
-*/
-char *conf_browsing_alias(int token)
- {
- if(range_check(token))
- return (char*)NULL;
-
- return smbbrowse_workgroups[token].browsing_alias;
- }
-
-/*
-** Return the server comment which should be used with the
-** browsing alias.
-*/
-char *conf_browsing_alias_comment(int token)
-{
- if(range_check(token))
- return (char*) NULL;
-
- return "Browser";
- }
-
-/*
-** Given an alias name for this server, return the name of the workgroup
-** for which it is the browsing alias.
-*/
-char *conf_alias_to_workgroup(char *alias)
-{
- int x;
-
- DEBUG(4,("alias_to_workgroup: %s", alias));
-
- for(x=0; x < nexttoken; x++)
- {
- DEBUG(4,("%s ", smbbrowse_workgroups[x].browsing_alias));
-
- if(strequal(alias, smbbrowse_workgroups[x].browsing_alias))
- {
- DEBUG(4,("OK\n"));
- return smbbrowse_workgroups[x].work_name;
- }
- }
- DEBUG(4,("not found\n"));
- return (char*)NULL;
-}
-
-/*
-** Given an alias name for this server, return the name of the workgroup
-** for which it is the browsing alias.
-*/
-int conf_alias_to_token(char *alias)
-{
- int x;
-
- for(x=0; x < nexttoken; x++)
- {
- if(strequal(alias, smbbrowse_workgroups[x].browsing_alias))
- {
- return x;
- }
- }
- return -1;
-}
-
-/*
-** Since there is no smbbrowse.conf file, we will fill in
-** the structures with information from the smb.conf file.
-*/
-static void default_smbbrowse_conf(char *default_name)
-{
- struct smbbrowse *w;
-
- /* The workgroup specified in smb.conf */
- w = new_workgroup((struct smbbrowse *)NULL, myworkgroup, default_name);
- w->should_local_master = lp_preferred_master();
- w->should_domain_master = lp_domain_master();
- w->should_workgroup_member = True;
-
- /* default action: allow any new workgroup to be added */
- w = new_workgroup((struct smbbrowse *)NULL, "*", default_name);
- w->should_local_master = False;
- w->should_domain_master = False;
- w->should_workgroup_member = False;
-}
-
-/*
-** This function is called from main().
-*/
-void read_smbbrowse_conf(char *default_name)
-{
- FILE *f = fopen(BROWSEFILE,"r");
- if (f)
- {
- while (!feof(f))
- {
- pstring line;
- char *ptr;
- int count = 0;
-
- pstring work_name;
- struct smbbrowse *w;
-
- if (!fgets_slash(line,sizeof(pstring),f)) continue;
-
- if (*line == '#') continue;
-
- strcpy(work_name,"");
-
- ptr = line;
-
- if (next_token(&ptr, work_name, NULL)) ++count;
-
- if (count <= 0) continue;
-
- w = new_workgroup((struct smbbrowse *)NULL, work_name, default_name);
- w->should_local_master = lp_local_master();
- w->should_domain_master = lp_domain_master();
- w->should_workgroup_member = True;
- }
-
- fclose(f);
- }
- else
- {
- DEBUG(2,("Can't open browse configuration file %s\n",BROWSEFILE));
- }
- default_smbbrowse_conf(default_name);
-}
-
-