diff options
author | Luke Leighton <lkcl@samba.org> | 1999-12-12 20:03:42 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 1999-12-12 20:03:42 +0000 |
commit | 4f8a24522c683761c6f2ee23dba56f6c7913377b (patch) | |
tree | fef9baa89fc7695fe462cbace85a0f4276845d53 /source3/netlogond/netlogond.c | |
parent | 0ce128e3550794d4dbbd1def00e87c020f72c992 (diff) | |
download | samba-4f8a24522c683761c6f2ee23dba56f6c7913377b.tar.gz samba-4f8a24522c683761c6f2ee23dba56f6c7913377b.tar.bz2 samba-4f8a24522c683761c6f2ee23dba56f6c7913377b.zip |
final part of "first" phase converting over to msrpc daemon architecture.
done a minimal amout of clean-up in the Makefile, removing unnecessary
modules from the link stage. this is not complete, yet, and will
involve some changes, for example to smbd, to remove dependencies on
the password database API that shouldn't be there. for example,
smbd should not ever call getsmbpwXXX() it should call the Samr or Lsa
API.
this first implementation has minor problems with not reinstantiating
the same services as the caller. the "homes" service is a good example.
(This used to be commit caa50525220b0d0250fa139367593c2de2c12135)
Diffstat (limited to 'source3/netlogond/netlogond.c')
-rw-r--r-- | source3/netlogond/netlogond.c | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/source3/netlogond/netlogond.c b/source3/netlogond/netlogond.c new file mode 100644 index 0000000000..fb0ace784d --- /dev/null +++ b/source3/netlogond/netlogond.c @@ -0,0 +1,134 @@ +/* + Unix SMB/Netbios implementation. + Version 1.9. + Main SMB server routines + Copyright (C) Andrew Tridgell 1992-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. +*/ + +#include "includes.h" + +fstring pipe_name; + +pstring servicesf = CONFIGFILE; +extern pstring debugf; +extern BOOL append_log; +extern int DEBUGLEVEL; + +/************************************************************************* + initialise an msrpc service + *************************************************************************/ +void msrpc_service_init(void) +{ + if (!pwdb_initialise(True)) + { + exit(-1); + } + + if(!initialise_sam_password_db()) + { + exit(-1); + } + + if(!initialise_passgrp_db()) + { + exit(-1); + } + + if(!initialise_group_db()) + { + exit(-1); + } + + if(!initialise_alias_db()) + { + exit(-1); + } + + if(!initialise_builtin_db()) + { + exit(-1); + } + + if (!get_member_domain_sid()) + { + DEBUG(0,("ERROR: Samba cannot obtain PDC SID from PDC(s) %s.\n", + lp_passwordserver())); + exit(-1); + } +} + +/**************************************************************************** + reload the services file + **************************************************************************/ +BOOL reload_services(BOOL test) +{ + BOOL ret; + + if (lp_loaded()) { + pstring fname; + pstrcpy(fname,lp_configfile()); + if (file_exist(fname,NULL) && !strcsequal(fname,servicesf)) { + pstrcpy(servicesf,fname); + test = False; + } + } + + reopen_logs(); + + if (test && !lp_file_list_changed()) + return(True); + + lp_killunused(NULL); + + ret = lp_load(servicesf,False,False,True); + + /* perhaps the config filename is now set */ + if (!test) + reload_services(True); + + reopen_logs(); + + load_interfaces(); + + return(ret); +} + +/**************************************************************************** + main program +****************************************************************************/ + int main(int argc,char *argv[]) +{ +#ifdef HAVE_SET_AUTH_PARAMETERS + set_auth_parameters(argc,argv); +#endif + +#ifdef HAVE_SETLUID + /* needed for SecureWare on SCO */ + setluid(0); +#endif + + append_log = True; + + TimeInit(); + + setup_logging(argv[0],False); + fstrcpy(pipe_name, "NETLOGON"); + slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name); + add_msrpc_command_processor( pipe_name, argv[0], api_netlog_rpc ); + + return msrpc_main(argc, argv); +} |