From ef2e26c91b80556af033d3335e55f5dfa6fff31d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 13 Aug 2003 01:53:07 +0000 Subject: first public release of samba4 code (This used to be commit b0510b5428b3461aeb9bbe3cc95f62fc73e2b97f) --- source4/param/loadparm.c | 4136 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4136 insertions(+) create mode 100644 source4/param/loadparm.c (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c new file mode 100644 index 0000000000..89ba792600 --- /dev/null +++ b/source4/param/loadparm.c @@ -0,0 +1,4136 @@ +/* + Unix SMB/CIFS implementation. + Parameter loading functions + Copyright (C) Karl Auer 1993-1998 + + Largely re-written by Andrew Tridgell, September 1994 + + Copyright (C) Simo Sorce 2001 + Copyright (C) Alexander Bokovoy 2002 + Copyright (C) Stefan (metze) Metzmacher 2002 + Copyright (C) Anthony Liguori 2003 + Copyright (C) James Myers 2003 + + 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. +*/ + +/* + * Load parameters. + * + * This module provides suitable callback functions for the params + * module. It builds the internal table of service details which is + * then used by the rest of the server. + * + * To add a parameter: + * + * 1) add it to the global or service structure definition + * 2) add it to the parm_table + * 3) add it to the list of available functions (eg: using FN_GLOBAL_STRING()) + * 4) If it's a global then initialise it in init_globals. If a local + * (ie. service) parameter then initialise it in the sDefault structure + * + * + * Notes: + * The configuration file is processed sequentially for speed. It is NOT + * accessed randomly as happens in 'real' Windows. For this reason, there + * is a fair bit of sequence-dependent code here - ie., code which assumes + * that certain things happen before others. In particular, the code which + * happens at the boundary between sections is delicately poised, so be + * careful! + * + */ + +#include "includes.h" + +BOOL in_client = False; /* Not in the client by default */ +static BOOL bLoaded = False; + +#ifndef GLOBAL_NAME +#define GLOBAL_NAME "global" +#endif + +#ifndef PRINTERS_NAME +#define PRINTERS_NAME "printers" +#endif + +#ifndef HOMES_NAME +#define HOMES_NAME "homes" +#endif + +/* some helpful bits */ +#define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && ServicePtrs[(i)]->valid) +#define VALID(i) ServicePtrs[i]->valid + +static BOOL do_parameter(const char *, const char *); + +static BOOL defaults_saved = False; + +struct param_opt { + struct param_opt *prev, *next; + char *key; + char *value; + int flags; +}; + +/* + * This structure describes global (ie., server-wide) parameters. + */ +typedef struct +{ + char *smb_ports; + char *dos_charset; + char *unix_charset; + char *display_charset; + char *szPrintcapname; + char *szEnumPortsCommand; + char *szAddPrinterCommand; + char *szDeletePrinterCommand; + char *szOs2DriverMap; + char *szLockDir; + char *szPidDir; + char *szRootdir; + char *szDefaultService; + char *szDfree; + char *szMsgCommand; + char *szHostsEquiv; + char *szServerString; + char *szAutoServices; + char *szPasswdProgram; + char *szPasswdChat; + char *szLogFile; + char *szConfigFile; + char *szSMBPasswdFile; + char *szPrivateDir; + char **szPassdbBackend; + char **szSamBackend; + char **szPreloadModules; + char *szPasswordServer; + char *szSocketOptions; + char *szRealm; + char *szADSserver; + char *szUsernameMap; + char *szLogonScript; + char *szLogonPath; + char *szLogonDrive; + char *szLogonHome; + char **szWINSservers; + char **szInterfaces; + char *szRemoteAnnounce; + char *szRemoteBrowseSync; + char *szSocketAddress; + char *szNISHomeMapName; + char *szAnnounceVersion; /* This is initialised in init_globals */ + char *szWorkgroup; + char *szNetbiosName; + char **szNetbiosAliases; + char *szNetbiosScope; + char *szDomainOtherSIDs; + char *szNameResolveOrder; + char *szPanicAction; + char *szAddUserScript; + char *szDelUserScript; + char *szAddGroupScript; + char *szDelGroupScript; + char *szAddUserToGroupScript; + char *szDelUserFromGroupScript; + char *szSetPrimaryGroupScript; + char *szAddMachineScript; + char *szShutdownScript; + char *szAbortShutdownScript; + char *szWINSHook; + char *szWINSPartners; +#ifdef WITH_UTMP + char *szUtmpDir; + char *szWtmpDir; + BOOL bUtmp; +#endif + char *szSourceEnv; + char *szWinbindUID; + char *szWinbindGID; + char *szNonUnixAccountRange; + int AlgorithmicRidBase; + char *szTemplateHomedir; + char *szTemplateShell; + char *szWinbindSeparator; + BOOL bWinbindEnumUsers; + BOOL bWinbindEnumGroups; + BOOL bWinbindUseDefaultDomain; + char *szIDMapBackend; + char *szAddShareCommand; + char *szChangeShareCommand; + char *szDeleteShareCommand; + char *szGuestaccount; + char *szManglingMethod; + int mangle_prefix; + int max_log_size; + int keepalive; + int mangled_stack; + int max_xmit; + int max_mux; + int max_open_files; + int pwordlevel; + int unamelevel; + int deadtime; + int maxprotocol; + int minprotocol; + int security; + char **AuthMethods; + BOOL paranoid_server_security; + int maxdisksize; + int lpqcachetime; + int iMaxSmbdProcesses; + BOOL bDisableSpoolss; + int iTotalPrintJobs; + int syslog; + int os_level; + int enhanced_browsing; + int time_offset; + int max_ttl; + int max_wins_ttl; + int min_wins_ttl; + int ReadSize; + int lm_announce; + int lm_interval; + int announce_as; /* This is initialised in init_globals */ + int machine_password_timeout; + int change_notify_timeout; + int stat_cache_size; + int map_to_guest; + int min_passwd_length; + int oplock_break_wait_time; + int winbind_cache_time; + int iLockSpinCount; + int iLockSpinTime; + char *szLdapMachineSuffix; + char *szLdapUserSuffix; +#ifdef WITH_LDAP_SAMCONFIG + int ldap_port; + char *szLdapServer; +#endif + char *socket_options; + int ldap_ssl; + char *szLdapSuffix; + char *szLdapFilter; + char *szLdapAdminDn; + BOOL ldap_trust_ids; + char *szAclCompat; + int ldap_passwd_sync; + BOOL bMsAddPrinterWizard; + BOOL bDNSproxy; + BOOL bWINSsupport; + BOOL bWINSproxy; + BOOL bLocalMaster; + BOOL bPreferredMaster; + BOOL bDomainMaster; + BOOL bDomainLogons; + BOOL bEncryptPasswords; + BOOL bUpdateEncrypt; + BOOL bStripDot; + BOOL bNullPasswords; + BOOL bObeyPamRestrictions; + BOOL bLoadPrinters; + BOOL bLargeReadwrite; + BOOL bReadRaw; + BOOL bWriteRaw; + BOOL bReadPrediction; + BOOL bReadbmpx; + BOOL bSyslogOnly; + BOOL bBrowseList; + BOOL bNISHomeMap; + BOOL bTimeServer; + BOOL bBindInterfacesOnly; + BOOL bPamPasswordChange; + BOOL bUnixPasswdSync; + BOOL bPasswdChatDebug; + BOOL bTimestampLogs; + BOOL bNTSmbSupport; + BOOL bNTPipeSupport; + BOOL bNTStatusSupport; + BOOL bStatCache; + BOOL bKernelOplocks; + BOOL bAllowTrustedDomains; + BOOL bLanmanAuth; + BOOL bNTLMAuth; + BOOL bUseSpnego; + BOOL bClientLanManAuth; + BOOL bClientNTLMv2Auth; + BOOL bClientUseSpnego; + BOOL bDebugHiresTimestamp; + BOOL bDebugPid; + BOOL bDebugUid; + BOOL bHostMSDfs; + BOOL bHideLocalUsers; + BOOL bUnicode; + BOOL bUseMmap; + BOOL bHostnameLookups; + BOOL bUnixExtensions; + BOOL bDisableNetbios; + BOOL bKernelChangeNotify; + int restrict_anonymous; + int name_cache_timeout; + BOOL client_signing; + struct param_opt *param_opt; +} +global; + +static global Globals; + +/* + * This structure describes a single service. + */ +typedef struct +{ + BOOL valid; + BOOL autoloaded; + char *szService; + char *szPath; + char *szUsername; + char **szInvalidUsers; + char **szValidUsers; + char **szAdminUsers; + char *szCopy; + char *szInclude; + char *szPreExec; + char *szPostExec; + char *szRootPreExec; + char *szRootPostExec; + char *szPrintcommand; + char *szLpqcommand; + char *szLprmcommand; + char *szLppausecommand; + char *szLpresumecommand; + char *szQueuepausecommand; + char *szQueueresumecommand; + char *szPrintername; + char *szDontdescend; + char **szHostsallow; + char **szHostsdeny; + char *szMagicScript; + char *szMagicOutput; + char *szMangledMap; + char *szVetoFiles; + char *szHideFiles; + char *szVetoOplockFiles; + char *comment; + char *force_user; + char *force_group; + char **readlist; + char **writelist; + char **printer_admin; + char *volume; + char *fstype; + char *szVfsObjectFile; + char *szVfsOptions; + char *szVfsPath; + char *szMSDfsProxy; + char *ntvfs_handler; + int iMinPrintSpace; + int iMaxPrintJobs; + int iMaxReportedPrintJobs; + int iWriteCacheSize; + int iCreate_mask; + int iCreate_force_mode; + int iSecurity_mask; + int iSecurity_force_mode; + int iDir_mask; + int iDir_force_mode; + int iDir_Security_mask; + int iDir_Security_force_mode; + int iMaxConnections; + int iDefaultCase; + int iPrinting; + int iOplockContentionLimit; + int iCSCPolicy; + int iBlock_size; + BOOL bPreexecClose; + BOOL bRootpreexecClose; + BOOL bCaseSensitive; + BOOL bCasePreserve; + BOOL bShortCasePreserve; + BOOL bCaseMangle; + BOOL bHideDotFiles; + BOOL bHideSpecialFiles; + BOOL bHideUnReadable; + BOOL bHideUnWriteableFiles; + BOOL bBrowseable; + BOOL bAvailable; + BOOL bRead_only; + BOOL bNo_set_dir; + BOOL bGuest_only; + BOOL bGuest_ok; + BOOL bPrint_ok; + BOOL bMap_system; + BOOL bMap_hidden; + BOOL bMap_archive; + BOOL bLocking; + BOOL bStrictLocking; + BOOL bPosixLocking; + BOOL bShareModes; + BOOL bOpLocks; + BOOL bLevel2OpLocks; + BOOL bOnlyUser; + BOOL bMangledNames; + BOOL bWidelinks; + BOOL bSymlinks; + BOOL bSyncAlways; + BOOL bStrictAllocate; + BOOL bStrictSync; + char magic_char; + BOOL *copymap; + BOOL bDeleteReadonly; + BOOL bFakeOplocks; + BOOL bDeleteVetoFiles; + BOOL bDosFilemode; + BOOL bDosFiletimes; + BOOL bDosFiletimeResolution; + BOOL bFakeDirCreateTimes; + BOOL bBlockingLocks; + BOOL bInheritPerms; + BOOL bInheritACLS; + BOOL bMSDfsRoot; + BOOL bUseClientDriver; + BOOL bDefaultDevmode; + BOOL bNTAclSupport; + BOOL bUseSendfile; + BOOL bProfileAcls; + struct param_opt *param_opt; + + char dummy[3]; /* for alignment */ +} +service; + + +/* This is a default service used to prime a services structure */ +static service sDefault = { + True, /* valid */ + False, /* not autoloaded */ + NULL, /* szService */ + NULL, /* szPath */ + NULL, /* szUsername */ + NULL, /* szInvalidUsers */ + NULL, /* szValidUsers */ + NULL, /* szAdminUsers */ + NULL, /* szCopy */ + NULL, /* szInclude */ + NULL, /* szPreExec */ + NULL, /* szPostExec */ + NULL, /* szRootPreExec */ + NULL, /* szRootPostExec */ + NULL, /* szPrintcommand */ + NULL, /* szLpqcommand */ + NULL, /* szLprmcommand */ + NULL, /* szLppausecommand */ + NULL, /* szLpresumecommand */ + NULL, /* szQueuepausecommand */ + NULL, /* szQueueresumecommand */ + NULL, /* szPrintername */ + NULL, /* szDontdescend */ + NULL, /* szHostsallow */ + NULL, /* szHostsdeny */ + NULL, /* szMagicScript */ + NULL, /* szMagicOutput */ + NULL, /* szMangledMap */ + NULL, /* szVetoFiles */ + NULL, /* szHideFiles */ + NULL, /* szVetoOplockFiles */ + NULL, /* comment */ + NULL, /* force user */ + NULL, /* force group */ + NULL, /* readlist */ + NULL, /* writelist */ + NULL, /* printer admin */ + NULL, /* volume */ + NULL, /* fstype */ + NULL, /* vfs object */ + NULL, /* vfs options */ + NULL, /* vfs path */ + NULL, /* szMSDfsProxy */ + NULL, /* ntvfs_handler */ + 0, /* iMinPrintSpace */ + 1000, /* iMaxPrintJobs */ + 0, /* iMaxReportedPrintJobs */ + 0, /* iWriteCacheSize */ + 0744, /* iCreate_mask */ + 0000, /* iCreate_force_mode */ + 0777, /* iSecurity_mask */ + 0, /* iSecurity_force_mode */ + 0755, /* iDir_mask */ + 0000, /* iDir_force_mode */ + 0777, /* iDir_Security_mask */ + 0, /* iDir_Security_force_mode */ + 0, /* iMaxConnections */ + CASE_LOWER, /* iDefaultCase */ + DEFAULT_PRINTING, /* iPrinting */ + 2, /* iOplockContentionLimit */ + 0, /* iCSCPolicy */ + 1024, /* iBlock_size */ + False, /* bPreexecClose */ + False, /* bRootpreexecClose */ + False, /* case sensitive */ + True, /* case preserve */ + True, /* short case preserve */ + False, /* case mangle */ + True, /* bHideDotFiles */ + False, /* bHideSpecialFiles */ + False, /* bHideUnReadable */ + False, /* bHideUnWriteableFiles */ + True, /* bBrowseable */ + True, /* bAvailable */ + True, /* bRead_only */ + True, /* bNo_set_dir */ + False, /* bGuest_only */ + False, /* bGuest_ok */ + False, /* bPrint_ok */ + False, /* bMap_system */ + False, /* bMap_hidden */ + True, /* bMap_archive */ + True, /* bLocking */ + True, /* bStrictLocking */ + True, /* bPosixLocking */ + True, /* bShareModes */ + True, /* bOpLocks */ + True, /* bLevel2OpLocks */ + False, /* bOnlyUser */ + True, /* bMangledNames */ + True, /* bWidelinks */ + True, /* bSymlinks */ + False, /* bSyncAlways */ + False, /* bStrictAllocate */ + False, /* bStrictSync */ + '~', /* magic char */ + NULL, /* copymap */ + False, /* bDeleteReadonly */ + False, /* bFakeOplocks */ + False, /* bDeleteVetoFiles */ + False, /* bDosFilemode */ + False, /* bDosFiletimes */ + False, /* bDosFiletimeResolution */ + False, /* bFakeDirCreateTimes */ + True, /* bBlockingLocks */ + False, /* bInheritPerms */ + False, /* bInheritACLS */ + False, /* bMSDfsRoot */ + False, /* bUseClientDriver */ + False, /* bDefaultDevmode */ + True, /* bNTAclSupport */ + False, /* bUseSendfile */ + False, /* bProfileAcls */ + + NULL, /* Parametric options */ + + "" /* dummy */ +}; + +/* local variables */ +static service **ServicePtrs = NULL; +static int iNumServices = 0; +static int iServiceIndex = 0; +static BOOL bInGlobalSection = True; +static BOOL bGlobalOnly = False; +static int server_role; +static int default_server_announce; + +#define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) + +/* prototypes for the special type handlers */ +static BOOL handle_include(const char *pszParmValue, char **ptr); +static BOOL handle_copy(const char *pszParmValue, char **ptr); +static BOOL handle_vfs_object(const char *pszParmValue, char **ptr); +static BOOL handle_source_env(const char *pszParmValue, char **ptr); +static BOOL handle_winbind_uid(const char *pszParmValue, char **ptr); +static BOOL handle_winbind_gid(const char *pszParmValue, char **ptr); +static BOOL handle_non_unix_account_range(const char *pszParmValue, char **ptr); + +static BOOL handle_ldap_machine_suffix ( const char *pszParmValue, char **ptr ); +static BOOL handle_ldap_user_suffix ( const char *pszParmValue, char **ptr ); +static BOOL handle_ldap_suffix ( const char *pszParmValue, char **ptr ); + +static BOOL handle_acl_compatibility(const char *pszParmValue, char **ptr); + +static void set_server_role(void); +static void set_default_server_announce_type(void); + +static const struct enum_list enum_protocol[] = { + {PROTOCOL_NT1, "NT1"}, + {PROTOCOL_LANMAN2, "LANMAN2"}, + {PROTOCOL_LANMAN1, "LANMAN1"}, + {PROTOCOL_CORE, "CORE"}, + {PROTOCOL_COREPLUS, "COREPLUS"}, + {PROTOCOL_COREPLUS, "CORE+"}, + {-1, NULL} +}; + +static const struct enum_list enum_security[] = { + {SEC_SHARE, "SHARE"}, + {SEC_USER, "USER"}, + {SEC_SERVER, "SERVER"}, + {SEC_DOMAIN, "DOMAIN"}, +#ifdef HAVE_ADS + {SEC_ADS, "ADS"}, +#endif + {-1, NULL} +}; + +static const struct enum_list enum_printing[] = { + {PRINT_SYSV, "sysv"}, + {PRINT_AIX, "aix"}, + {PRINT_HPUX, "hpux"}, + {PRINT_BSD, "bsd"}, + {PRINT_QNX, "qnx"}, + {PRINT_PLP, "plp"}, + {PRINT_LPRNG, "lprng"}, + {PRINT_SOFTQ, "softq"}, + {PRINT_CUPS, "cups"}, + {PRINT_LPRNT, "nt"}, + {PRINT_LPROS2, "os2"}, +#ifdef DEVELOPER + {PRINT_TEST, "test"}, + {PRINT_VLP, "vlp"}, +#endif /* DEVELOPER */ + {-1, NULL} +}; + +static const struct enum_list enum_ldap_ssl[] = { +#ifdef WITH_LDAP_SAMCONFIG + {LDAP_SSL_ON, "Yes"}, + {LDAP_SSL_ON, "yes"}, + {LDAP_SSL_ON, "on"}, + {LDAP_SSL_ON, "On"}, +#endif + {LDAP_SSL_OFF, "no"}, + {LDAP_SSL_OFF, "No"}, + {LDAP_SSL_OFF, "off"}, + {LDAP_SSL_OFF, "Off"}, + {LDAP_SSL_START_TLS, "start tls"}, + {LDAP_SSL_START_TLS, "Start_tls"}, + {-1, NULL} +}; + +static const struct enum_list enum_ldap_passwd_sync[] = { + {LDAP_PASSWD_SYNC_ON, "Yes"}, + {LDAP_PASSWD_SYNC_ON, "yes"}, + {LDAP_PASSWD_SYNC_ON, "on"}, + {LDAP_PASSWD_SYNC_ON, "On"}, + {LDAP_PASSWD_SYNC_OFF, "no"}, + {LDAP_PASSWD_SYNC_OFF, "No"}, + {LDAP_PASSWD_SYNC_OFF, "off"}, + {LDAP_PASSWD_SYNC_OFF, "Off"}, +#ifdef LDAP_EXOP_X_MODIFY_PASSWD + {LDAP_PASSWD_SYNC_ONLY, "Only"}, + {LDAP_PASSWD_SYNC_ONLY, "only"}, +#endif /* LDAP_EXOP_X_MODIFY_PASSWD */ + {-1, NULL} +}; + +/* Types of machine we can announce as. */ +#define ANNOUNCE_AS_NT_SERVER 1 +#define ANNOUNCE_AS_WIN95 2 +#define ANNOUNCE_AS_WFW 3 +#define ANNOUNCE_AS_NT_WORKSTATION 4 + +static const struct enum_list enum_announce_as[] = { + {ANNOUNCE_AS_NT_SERVER, "NT"}, + {ANNOUNCE_AS_NT_SERVER, "NT Server"}, + {ANNOUNCE_AS_NT_WORKSTATION, "NT Workstation"}, + {ANNOUNCE_AS_WIN95, "win95"}, + {ANNOUNCE_AS_WFW, "WfW"}, + {-1, NULL} +}; + +static const struct enum_list enum_case[] = { + {CASE_LOWER, "lower"}, + {CASE_UPPER, "upper"}, + {-1, NULL} +}; + +static const struct enum_list enum_bool_auto[] = { + {False, "No"}, + {False, "False"}, + {False, "0"}, + {True, "Yes"}, + {True, "True"}, + {True, "1"}, + {Auto, "Auto"}, + {-1, NULL} +}; + +/* Client-side offline caching policy types */ +#define CSC_POLICY_MANUAL 0 +#define CSC_POLICY_DOCUMENTS 1 +#define CSC_POLICY_PROGRAMS 2 +#define CSC_POLICY_DISABLE 3 + +static const struct enum_list enum_csc_policy[] = { + {CSC_POLICY_MANUAL, "manual"}, + {CSC_POLICY_DOCUMENTS, "documents"}, + {CSC_POLICY_PROGRAMS, "programs"}, + {CSC_POLICY_DISABLE, "disable"}, + {-1, NULL} +}; + +/* + Do you want session setups at user level security with a invalid + password to be rejected or allowed in as guest? WinNT rejects them + but it can be a pain as it means "net view" needs to use a password + + You have 3 choices in the setting of map_to_guest: + + "Never" means session setups with an invalid password + are rejected. This is the default. + + "Bad User" means session setups with an invalid password + are rejected, unless the username does not exist, in which case it + is treated as a guest login + + "Bad Password" means session setups with an invalid password + are treated as a guest login + + Note that map_to_guest only has an effect in user or server + level security. +*/ + +static const struct enum_list enum_map_to_guest[] = { + {NEVER_MAP_TO_GUEST, "Never"}, + {MAP_TO_GUEST_ON_BAD_USER, "Bad User"}, + {MAP_TO_GUEST_ON_BAD_PASSWORD, "Bad Password"}, + {-1, NULL} +}; + +/* Note: We do not initialise the defaults union - it is not allowed in ANSI C + * + * Note: We have a flag called FLAG_DEVELOPER but is not used at this time, it + * is implied in current control logic. This may change at some later time. A + * flag value of 0 means - show as development option only. + * + * The FLAG_HIDE is explicit. Paramters set this way do NOT appear in any edit + * screen in SWAT. This is used to exclude parameters as well as to squash all + * parameters that have been duplicated by pseudonyms. + */ +static struct parm_struct parm_table[] = { + {"Base Options", P_SEP, P_SEPARATOR}, + + {"dos charset", P_STRING, P_GLOBAL, &Globals.dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"unix charset", P_STRING, P_GLOBAL, &Globals.unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"display charset", P_STRING, P_GLOBAL, &Globals.display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_HIDE}, + {"workgroup", P_USTRING, P_GLOBAL, &Globals.szWorkgroup, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"realm", P_USTRING, P_GLOBAL, &Globals.szRealm, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"ADS server", P_STRING, P_GLOBAL, &Globals.szADSserver, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"netbios name", P_USTRING, P_GLOBAL, &Globals.szNetbiosName, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"netbios aliases", P_LIST, P_GLOBAL, &Globals.szNetbiosAliases, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"netbios scope", P_USTRING, P_GLOBAL, &Globals.szNetbiosScope, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"server string", P_STRING, P_GLOBAL, &Globals.szServerString, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"interfaces", P_LIST, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"ntvfs handler", P_STRING, P_LOCAL, &sDefault.ntvfs_handler, NULL, NULL, FLAG_ADVANCED}, + + {"Security Options", P_SEP, P_SEPARATOR}, + + {"security", P_ENUM, P_GLOBAL, &Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"auth methods", P_LIST, P_GLOBAL, &Globals.AuthMethods, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"encrypt passwords", P_BOOL, P_GLOBAL, &Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"update encrypted", P_BOOL, P_GLOBAL, &Globals.bUpdateEncrypt, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"allow trusted domains", P_BOOL, P_GLOBAL, &Globals.bAllowTrustedDomains, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"hosts equiv", P_STRING, P_GLOBAL, &Globals.szHostsEquiv, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"idmap backend", P_STRING, P_GLOBAL, &Globals.szIDMapBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"min passwd length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"min password length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"map to guest", P_ENUM, P_GLOBAL, &Globals.map_to_guest, NULL, enum_map_to_guest, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"null passwords", P_BOOL, P_GLOBAL, &Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"password server", P_STRING, P_GLOBAL, &Globals.szPasswordServer, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"sam backend", P_LIST, P_GLOBAL, &Globals.szSamBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"algorithmic rid base", P_INTEGER, P_GLOBAL, &Globals.AlgorithmicRidBase, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"root dir", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"root", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_HIDE | FLAG_DEVELOPER}, + {"guest account", P_STRING, P_GLOBAL, &Globals.szGuestaccount, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"pam password change", P_BOOL, P_GLOBAL, &Globals.bPamPasswordChange, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"passwd program", P_STRING, P_GLOBAL, &Globals.szPasswdProgram, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"passwd chat debug", P_BOOL, P_GLOBAL, &Globals.bPasswdChatDebug, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"username map", P_STRING, P_GLOBAL, &Globals.szUsernameMap, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER | FLAG_DEVELOPER}, + {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"username level", P_INTEGER, P_GLOBAL, &Globals.unamelevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"unix password sync", P_BOOL, P_GLOBAL, &Globals.bUnixPasswdSync, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"restrict anonymous", P_INTEGER, P_GLOBAL, &Globals.restrict_anonymous, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"lanman auth", P_BOOL, P_GLOBAL, &Globals.bLanmanAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ntlm auth", P_BOOL, P_GLOBAL, &Globals.bNTLMAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client NTLMv2 auth", P_BOOL, P_GLOBAL, &Globals.bClientNTLMv2Auth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client lanman auth", P_BOOL, P_GLOBAL, &Globals.bClientLanManAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"username", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"user", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_HIDE}, + {"users", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_HIDE}, + + {"invalid users", P_LIST, P_LOCAL, &sDefault.szInvalidUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"valid users", P_LIST, P_LOCAL, &sDefault.szValidUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"admin users", P_LIST, P_LOCAL, &sDefault.szAdminUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"read list", P_LIST, P_LOCAL, &sDefault.readlist, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"write list", P_LIST, P_LOCAL, &sDefault.writelist, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"printer admin", P_LIST, P_LOCAL, &sDefault.printer_admin, NULL, NULL, FLAG_GLOBAL | FLAG_PRINT}, + {"force user", P_STRING, P_LOCAL, &sDefault.force_user, NULL, NULL, FLAG_SHARE}, + {"force group", P_STRING, P_LOCAL, &sDefault.force_group, NULL, NULL, FLAG_SHARE}, + {"group", P_STRING, P_LOCAL, &sDefault.force_group, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"read only", P_BOOL, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE}, + {"write ok", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_HIDE}, + {"writeable", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_HIDE}, + {"writable", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_HIDE}, + + {"create mask", P_OCTAL, P_LOCAL, &sDefault.iCreate_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"create mode", P_OCTAL, P_LOCAL, &sDefault.iCreate_mask, NULL, NULL, FLAG_GLOBAL}, + {"force create mode", P_OCTAL, P_LOCAL, &sDefault.iCreate_force_mode, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"security mask", P_OCTAL, P_LOCAL, &sDefault.iSecurity_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"force security mode", P_OCTAL, P_LOCAL, &sDefault.iSecurity_force_mode, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"directory mask", P_OCTAL, P_LOCAL, &sDefault.iDir_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"directory mode", P_OCTAL, P_LOCAL, &sDefault.iDir_mask, NULL, NULL, FLAG_GLOBAL}, + {"force directory mode", P_OCTAL, P_LOCAL, &sDefault.iDir_force_mode, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"directory security mask", P_OCTAL, P_LOCAL, &sDefault.iDir_Security_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"force directory security mode", P_OCTAL, P_LOCAL, &sDefault.iDir_Security_force_mode, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, + {"inherit permissions", P_BOOL, P_LOCAL, &sDefault.bInheritPerms, NULL, NULL, FLAG_SHARE}, + {"inherit acls", P_BOOL, P_LOCAL, &sDefault.bInheritACLS, NULL, NULL, FLAG_SHARE}, + {"guest only", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, FLAG_SHARE}, + {"only guest", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, FLAG_HIDE}, + + {"guest ok", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"public", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL, FLAG_HIDE}, + + {"only user", P_BOOL, P_LOCAL, &sDefault.bOnlyUser, NULL, NULL, FLAG_SHARE}, + {"hosts allow", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"allow hosts", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_HIDE}, + {"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"deny hosts", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_HIDE}, + {"preload modules", P_LIST, P_GLOBAL, &Globals.szPreloadModules, NULL, NULL, FLAG_BASIC | FLAG_GLOBAL}, + + {"Logging Options", P_SEP, P_SEPARATOR}, + + {"log level", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"debuglevel", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_HIDE}, + {"syslog", P_INTEGER, P_GLOBAL, &Globals.syslog, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"syslog only", P_BOOL, P_GLOBAL, &Globals.bSyslogOnly, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"log file", P_STRING, P_GLOBAL, &Globals.szLogFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"max log size", P_INTEGER, P_GLOBAL, &Globals.max_log_size, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"timestamp logs", P_BOOL, P_GLOBAL, &Globals.bTimestampLogs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"debug timestamp", P_BOOL, P_GLOBAL, &Globals.bTimestampLogs, NULL, NULL, FLAG_DEVELOPER}, + {"debug hires timestamp", P_BOOL, P_GLOBAL, &Globals.bDebugHiresTimestamp, NULL, NULL, FLAG_DEVELOPER}, + {"debug pid", P_BOOL, P_GLOBAL, &Globals.bDebugPid, NULL, NULL, FLAG_DEVELOPER}, + {"debug uid", P_BOOL, P_GLOBAL, &Globals.bDebugUid, NULL, NULL, FLAG_DEVELOPER}, + + {"Protocol Options", P_SEP, P_SEPARATOR}, + + {"smb ports", P_STRING, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, + {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, + {"min protocol", P_ENUM, P_GLOBAL, &Globals.minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, + {"unicode", P_BOOL, P_GLOBAL, &Globals.bUnicode, NULL, NULL, FLAG_DEVELOPER}, + {"read bmpx", P_BOOL, P_GLOBAL, &Globals.bReadbmpx, NULL, NULL, FLAG_DEVELOPER}, + {"read raw", P_BOOL, P_GLOBAL, &Globals.bReadRaw, NULL, NULL, FLAG_DEVELOPER}, + {"write raw", P_BOOL, P_GLOBAL, &Globals.bWriteRaw, NULL, NULL, FLAG_DEVELOPER}, + {"disable netbios", P_BOOL, P_GLOBAL, &Globals.bDisableNetbios, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"acl compatibility", P_STRING, P_GLOBAL, &Globals.szAclCompat, handle_acl_compatibility, NULL, FLAG_SHARE | FLAG_GLOBAL | FLAG_ADVANCED}, + {"nt acl support", P_BOOL, P_LOCAL, &sDefault.bNTAclSupport, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE | FLAG_ADVANCED | FLAG_WIZARD}, + {"nt pipe support", P_BOOL, P_GLOBAL, &Globals.bNTPipeSupport, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"nt status support", P_BOOL, P_GLOBAL, &Globals.bNTStatusSupport, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"profile acls", P_BOOL, P_LOCAL, &sDefault.bProfileAcls, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE | FLAG_ADVANCED | FLAG_WIZARD}, + + {"announce version", P_STRING, P_GLOBAL, &Globals.szAnnounceVersion, NULL, NULL, FLAG_DEVELOPER}, + {"announce as", P_ENUM, P_GLOBAL, &Globals.announce_as, NULL, enum_announce_as, FLAG_DEVELOPER}, + {"max mux", P_INTEGER, P_GLOBAL, &Globals.max_mux, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"max xmit", P_INTEGER, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"name resolve order", P_STRING, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"max ttl", P_INTEGER, P_GLOBAL, &Globals.max_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"max wins ttl", P_INTEGER, P_GLOBAL, &Globals.max_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"min wins ttl", P_INTEGER, P_GLOBAL, &Globals.min_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"time server", P_BOOL, P_GLOBAL, &Globals.bTimeServer, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"unix extensions", P_BOOL, P_GLOBAL, &Globals.bUnixExtensions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"use spnego", P_BOOL, P_GLOBAL, &Globals.bUseSpnego, NULL, NULL, FLAG_DEVELOPER}, + {"client signing", P_BOOL, P_GLOBAL, &Globals.client_signing, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client use spnego", P_BOOL, P_GLOBAL, &Globals.bClientUseSpnego, NULL, NULL, FLAG_DEVELOPER}, + + {"Tuning Options", P_SEP, P_SEPARATOR}, + + {"block size", P_INTEGER, P_LOCAL, &sDefault.iBlock_size, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"change notify timeout", P_INTEGER, P_GLOBAL, &Globals.change_notify_timeout, NULL, NULL, FLAG_DEVELOPER}, + {"deadtime", P_INTEGER, P_GLOBAL, &Globals.deadtime, NULL, NULL, FLAG_DEVELOPER}, + {"keepalive", P_INTEGER, P_GLOBAL, &Globals.keepalive, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"kernel change notify", P_BOOL, P_GLOBAL, &Globals.bKernelChangeNotify, NULL, NULL, FLAG_DEVELOPER}, + + {"lpq cache time", P_INTEGER, P_GLOBAL, &Globals.lpqcachetime, NULL, NULL, FLAG_DEVELOPER}, + {"max smbd processes", P_INTEGER, P_GLOBAL, &Globals.iMaxSmbdProcesses, NULL, NULL, FLAG_DEVELOPER}, + {"max connections", P_INTEGER, P_LOCAL, &sDefault.iMaxConnections, NULL, NULL, FLAG_SHARE}, + {"paranoid server security", P_BOOL, P_GLOBAL, &Globals.paranoid_server_security, NULL, NULL, FLAG_DEVELOPER}, + {"max disk size", P_INTEGER, P_GLOBAL, &Globals.maxdisksize, NULL, NULL, FLAG_DEVELOPER}, + {"max open files", P_INTEGER, P_GLOBAL, &Globals.max_open_files, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"min print space", P_INTEGER, P_LOCAL, &sDefault.iMinPrintSpace, NULL, NULL, FLAG_PRINT}, + {"read size", P_INTEGER, P_GLOBAL, &Globals.ReadSize, NULL, NULL, FLAG_DEVELOPER}, + + {"socket options", P_STRING, P_GLOBAL, &Globals.socket_options, NULL, NULL, FLAG_DEVELOPER}, + {"stat cache size", P_INTEGER, P_GLOBAL, &Globals.stat_cache_size, NULL, NULL, FLAG_DEVELOPER}, + {"strict allocate", P_BOOL, P_LOCAL, &sDefault.bStrictAllocate, NULL, NULL, FLAG_SHARE}, + {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_SHARE}, + {"sync always", P_BOOL, P_LOCAL, &sDefault.bSyncAlways, NULL, NULL, FLAG_SHARE}, + {"use mmap", P_BOOL, P_GLOBAL, &Globals.bUseMmap, NULL, NULL, FLAG_DEVELOPER}, + {"use sendfile", P_BOOL, P_LOCAL, &sDefault.bUseSendfile, NULL, NULL, FLAG_SHARE}, + {"hostname lookups", P_BOOL, P_GLOBAL, &Globals.bHostnameLookups, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"write cache size", P_INTEGER, P_LOCAL, &sDefault.iWriteCacheSize, NULL, NULL, FLAG_SHARE}, + + {"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"Printing Options", P_SEP, P_SEPARATOR}, + + {"total print jobs", P_INTEGER, P_GLOBAL, &Globals.iTotalPrintJobs, NULL, NULL, FLAG_PRINT}, + {"max reported print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxReportedPrintJobs, NULL, NULL, FLAG_PRINT}, + {"max print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxPrintJobs, NULL, NULL, FLAG_PRINT}, + {"load printers", P_BOOL, P_GLOBAL, &Globals.bLoadPrinters, NULL, NULL, FLAG_PRINT}, + {"printcap name", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, FLAG_PRINT | FLAG_DEVELOPER}, + {"printcap", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, FLAG_HIDE}, + {"printable", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_PRINT}, + {"print ok", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_HIDE}, + {"printing", P_ENUM, P_LOCAL, &sDefault.iPrinting, NULL, enum_printing, FLAG_PRINT | FLAG_GLOBAL}, + {"print command", P_STRING, P_LOCAL, &sDefault.szPrintcommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, + {"disable spoolss", P_BOOL, P_GLOBAL, &Globals.bDisableSpoolss, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, + {"lpq command", P_STRING, P_LOCAL, &sDefault.szLpqcommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, + {"lprm command", P_STRING, P_LOCAL, &sDefault.szLprmcommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, + {"lppause command", P_STRING, P_LOCAL, &sDefault.szLppausecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, + {"lpresume command", P_STRING, P_LOCAL, &sDefault.szLpresumecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, + {"queuepause command", P_STRING, P_LOCAL, &sDefault.szQueuepausecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, + {"queueresume command", P_STRING, P_LOCAL, &sDefault.szQueueresumecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, + + {"enumports command", P_STRING, P_GLOBAL, &Globals.szEnumPortsCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"addprinter command", P_STRING, P_GLOBAL, &Globals.szAddPrinterCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"deleteprinter command", P_STRING, P_GLOBAL, &Globals.szDeletePrinterCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"show add printer wizard", P_BOOL, P_GLOBAL, &Globals.bMsAddPrinterWizard, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"os2 driver map", P_STRING, P_GLOBAL, &Globals.szOs2DriverMap, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"printer name", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_PRINT}, + {"printer", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_HIDE}, + {"use client driver", P_BOOL, P_LOCAL, &sDefault.bUseClientDriver, NULL, NULL, FLAG_PRINT}, + {"default devmode", P_BOOL, P_LOCAL, &sDefault.bDefaultDevmode, NULL, NULL, FLAG_PRINT}, + + {"Filename Handling", P_SEP, P_SEPARATOR}, + {"strip dot", P_BOOL, P_GLOBAL, &Globals.bStripDot, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"mangling method", P_STRING, P_GLOBAL, &Globals.szManglingMethod, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"mangle prefix", P_INTEGER, P_GLOBAL, &Globals.mangle_prefix, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"mangled stack", P_INTEGER, P_GLOBAL, &Globals.mangled_stack, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"default case", P_ENUM, P_LOCAL, &sDefault.iDefaultCase, NULL, enum_case, FLAG_SHARE}, + {"case sensitive", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"casesignames", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_HIDE}, + {"preserve case", P_BOOL, P_LOCAL, &sDefault.bCasePreserve, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"short preserve case", P_BOOL, P_LOCAL, &sDefault.bShortCasePreserve, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"mangle case", P_BOOL, P_LOCAL, &sDefault.bCaseMangle, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"mangling char", P_CHAR, P_LOCAL, &sDefault.magic_char, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"hide dot files", P_BOOL, P_LOCAL, &sDefault.bHideDotFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"hide special files", P_BOOL, P_LOCAL, &sDefault.bHideSpecialFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"hide unreadable", P_BOOL, P_LOCAL, &sDefault.bHideUnReadable, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"hide unwriteable files", P_BOOL, P_LOCAL, &sDefault.bHideUnWriteableFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"delete veto files", P_BOOL, P_LOCAL, &sDefault.bDeleteVetoFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"veto files", P_STRING, P_LOCAL, &sDefault.szVetoFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL }, + {"hide files", P_STRING, P_LOCAL, &sDefault.szHideFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL }, + {"veto oplock files", P_STRING, P_LOCAL, &sDefault.szVetoOplockFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL }, + {"map system", P_BOOL, P_LOCAL, &sDefault.bMap_system, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"map hidden", P_BOOL, P_LOCAL, &sDefault.bMap_hidden, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"mangled names", P_BOOL, P_LOCAL, &sDefault.bMangledNames, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"stat cache", P_BOOL, P_GLOBAL, &Globals.bStatCache, NULL, NULL, FLAG_DEVELOPER}, + + {"Domain Options", P_SEP, P_SEPARATOR}, + + {"machine password timeout", P_INTEGER, P_GLOBAL, &Globals.machine_password_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + + {"Logon Options", P_SEP, P_SEPARATOR}, + + {"add user script", P_STRING, P_GLOBAL, &Globals.szAddUserScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"delete user script", P_STRING, P_GLOBAL, &Globals.szDelUserScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"add group script", P_STRING, P_GLOBAL, &Globals.szAddGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"delete group script", P_STRING, P_GLOBAL, &Globals.szDelGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"add user to group script", P_STRING, P_GLOBAL, &Globals.szAddUserToGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"delete user from group script", P_STRING, P_GLOBAL, &Globals.szDelUserFromGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"set primary group script", P_STRING, P_GLOBAL, &Globals.szSetPrimaryGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"add machine script", P_STRING, P_GLOBAL, &Globals.szAddMachineScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"shutdown script", P_STRING, P_GLOBAL, &Globals.szShutdownScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"abort shutdown script", P_STRING, P_GLOBAL, &Globals.szAbortShutdownScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"logon script", P_STRING, P_GLOBAL, &Globals.szLogonScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"logon path", P_STRING, P_GLOBAL, &Globals.szLogonPath, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"logon drive", P_STRING, P_GLOBAL, &Globals.szLogonDrive, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"logon home", P_STRING, P_GLOBAL, &Globals.szLogonHome, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"domain logons", P_BOOL, P_GLOBAL, &Globals.bDomainLogons, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"Browse Options", P_SEP, P_SEPARATOR}, + + {"os level", P_INTEGER, P_GLOBAL, &Globals.os_level, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"lm announce", P_ENUM, P_GLOBAL, &Globals.lm_announce, NULL, enum_bool_auto, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"lm interval", P_INTEGER, P_GLOBAL, &Globals.lm_interval, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"preferred master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"prefered master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_HIDE}, + {"local master", P_BOOL, P_GLOBAL, &Globals.bLocalMaster, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"domain master", P_ENUM, P_GLOBAL, &Globals.bDomainMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"browse list", P_BOOL, P_GLOBAL, &Globals.bBrowseList, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"browseable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_HIDE}, + {"enhanced browsing", P_BOOL, P_GLOBAL, &Globals.enhanced_browsing, NULL, NULL, FLAG_DEVELOPER | FLAG_ADVANCED}, + + {"WINS Options", P_SEP, P_SEPARATOR}, + {"dns proxy", P_BOOL, P_GLOBAL, &Globals.bDNSproxy, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"wins proxy", P_BOOL, P_GLOBAL, &Globals.bWINSproxy, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"wins server", P_LIST, P_GLOBAL, &Globals.szWINSservers, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"wins support", P_BOOL, P_GLOBAL, &Globals.bWINSsupport, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"wins hook", P_STRING, P_GLOBAL, &Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"wins partners", P_STRING, P_GLOBAL, &Globals.szWINSPartners, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + + {"Locking Options", P_SEP, P_SEPARATOR}, + + {"blocking locks", P_BOOL, P_LOCAL, &sDefault.bBlockingLocks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"csc policy", P_ENUM, P_LOCAL, &sDefault.iCSCPolicy, NULL, enum_csc_policy, FLAG_SHARE | FLAG_GLOBAL}, + {"fake oplocks", P_BOOL, P_LOCAL, &sDefault.bFakeOplocks, NULL, NULL, FLAG_SHARE}, + {"kernel oplocks", P_BOOL, P_GLOBAL, &Globals.bKernelOplocks, NULL, NULL, FLAG_GLOBAL}, + {"locking", P_BOOL, P_LOCAL, &sDefault.bLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"lock spin count", P_INTEGER, P_GLOBAL, &Globals.iLockSpinCount, NULL, NULL, FLAG_GLOBAL}, + {"lock spin time", P_INTEGER, P_GLOBAL, &Globals.iLockSpinTime, NULL, NULL, FLAG_GLOBAL}, + + {"oplocks", P_BOOL, P_LOCAL, &sDefault.bOpLocks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"level2 oplocks", P_BOOL, P_LOCAL, &sDefault.bLevel2OpLocks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"oplock break wait time", P_INTEGER, P_GLOBAL, &Globals.oplock_break_wait_time, NULL, NULL, FLAG_GLOBAL}, + {"oplock contention limit", P_INTEGER, P_LOCAL, &sDefault.iOplockContentionLimit, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"posix locking", P_BOOL, P_LOCAL, &sDefault.bPosixLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"strict locking", P_BOOL, P_LOCAL, &sDefault.bStrictLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"share modes", P_BOOL, P_LOCAL, &sDefault.bShareModes, NULL, NULL, FLAG_SHARE|FLAG_GLOBAL}, + + {"Ldap Options", P_SEP, P_SEPARATOR}, + +#ifdef WITH_LDAP_SAMCONFIG + {"ldap server", P_STRING, P_GLOBAL, &Globals.szLdapServer, NULL, NULL, 0}, + {"ldap port", P_INTEGER, P_GLOBAL, &Globals.ldap_port, NULL, NULL, 0}, +#endif + {"ldap suffix", P_STRING, P_GLOBAL, &Globals.szLdapSuffix, handle_ldap_suffix, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ldap machine suffix", P_STRING, P_GLOBAL, &Globals.szLdapMachineSuffix, handle_ldap_machine_suffix, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ldap user suffix", P_STRING, P_GLOBAL, &Globals.szLdapUserSuffix, handle_ldap_user_suffix, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ldap filter", P_STRING, P_GLOBAL, &Globals.szLdapFilter, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ldap admin dn", P_STRING, P_GLOBAL, &Globals.szLdapAdminDn, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ldap ssl", P_ENUM, P_GLOBAL, &Globals.ldap_ssl, NULL, enum_ldap_ssl, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ldap passwd sync", P_ENUM, P_GLOBAL, &Globals.ldap_passwd_sync, NULL, enum_ldap_passwd_sync, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ldap trust ids", P_BOOL, P_GLOBAL, &Globals.ldap_trust_ids, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"Miscellaneous Options", P_SEP, P_SEPARATOR}, + {"add share command", P_STRING, P_GLOBAL, &Globals.szAddShareCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"change share command", P_STRING, P_GLOBAL, &Globals.szChangeShareCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"delete share command", P_STRING, P_GLOBAL, &Globals.szDeleteShareCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"config file", P_STRING, P_GLOBAL, &Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, + {"preload", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"auto services", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_HIDE}, + {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, +#ifdef WITH_UTMP + {"utmp directory", P_STRING, P_GLOBAL, &Globals.szUtmpDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"wtmp directory", P_STRING, P_GLOBAL, &Globals.szWtmpDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"utmp", P_BOOL, P_GLOBAL, &Globals.bUtmp, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, +#endif + + {"default service", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"default", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_DEVELOPER}, + {"message command", P_STRING, P_GLOBAL, &Globals.szMsgCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"dfree command", P_STRING, P_GLOBAL, &Globals.szDfree, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"remote announce", P_STRING, P_GLOBAL, &Globals.szRemoteAnnounce, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"remote browse sync", P_STRING, P_GLOBAL, &Globals.szRemoteBrowseSync, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER}, + {"homedir map", P_STRING, P_GLOBAL, &Globals.szNISHomeMapName, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"time offset", P_INTEGER, P_GLOBAL, &Globals.time_offset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"NIS homedir", P_BOOL, P_GLOBAL, &Globals.bNISHomeMap, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"-valid", P_BOOL, P_LOCAL, &sDefault.valid, NULL, NULL, FLAG_HIDE}, + + {"copy", P_STRING, P_LOCAL, &sDefault.szCopy, handle_copy, NULL, FLAG_HIDE}, + {"include", P_STRING, P_LOCAL, &sDefault.szInclude, handle_include, NULL, FLAG_HIDE}, + {"exec", P_STRING, P_LOCAL, &sDefault.szPreExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT}, + {"preexec", P_STRING, P_LOCAL, &sDefault.szPreExec, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"preexec close", P_BOOL, P_LOCAL, &sDefault.bPreexecClose, NULL, NULL, FLAG_SHARE}, + {"postexec", P_STRING, P_LOCAL, &sDefault.szPostExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT}, + {"root preexec", P_STRING, P_LOCAL, &sDefault.szRootPreExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT}, + {"root preexec close", P_BOOL, P_LOCAL, &sDefault.bRootpreexecClose, NULL, NULL, FLAG_SHARE}, + {"root postexec", P_STRING, P_LOCAL, &sDefault.szRootPostExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT}, + {"available", P_BOOL, P_LOCAL, &sDefault.bAvailable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT}, + {"volume", P_STRING, P_LOCAL, &sDefault.volume, NULL, NULL, FLAG_SHARE }, + {"fstype", P_STRING, P_LOCAL, &sDefault.fstype, NULL, NULL, FLAG_SHARE}, + {"set directory", P_BOOLREV, P_LOCAL, &sDefault.bNo_set_dir, NULL, NULL, FLAG_SHARE}, + {"source environment", P_STRING, P_GLOBAL, &Globals.szSourceEnv, handle_source_env, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"wide links", P_BOOL, P_LOCAL, &sDefault.bWidelinks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"follow symlinks", P_BOOL, P_LOCAL, &sDefault.bSymlinks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"dont descend", P_STRING, P_LOCAL, &sDefault.szDontdescend, NULL, NULL, FLAG_SHARE}, + {"magic script", P_STRING, P_LOCAL, &sDefault.szMagicScript, NULL, NULL, FLAG_SHARE}, + {"magic output", P_STRING, P_LOCAL, &sDefault.szMagicOutput, NULL, NULL, FLAG_SHARE}, + {"delete readonly", P_BOOL, P_LOCAL, &sDefault.bDeleteReadonly, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"dos filemode", P_BOOL, P_LOCAL, &sDefault.bDosFilemode, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"dos filetimes", P_BOOL, P_LOCAL, &sDefault.bDosFiletimes, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"dos filetime resolution", P_BOOL, P_LOCAL, &sDefault.bDosFiletimeResolution, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + + {"fake directory create times", P_BOOL, P_LOCAL, &sDefault.bFakeDirCreateTimes, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"panic action", P_STRING, P_GLOBAL, &Globals.szPanicAction, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"hide local users", P_BOOL, P_GLOBAL, &Globals.bHideLocalUsers, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"VFS module options", P_SEP, P_SEPARATOR}, + + {"vfs object", P_STRING, P_LOCAL, &sDefault.szVfsObjectFile, handle_vfs_object, NULL, FLAG_SHARE}, + {"vfs options", P_STRING, P_LOCAL, &sDefault.szVfsOptions, NULL, NULL, FLAG_SHARE}, + {"vfs path", P_STRING, P_LOCAL, &sDefault.szVfsPath, NULL, NULL, FLAG_SHARE}, + + + {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, + {"msdfs proxy", P_STRING, P_LOCAL, &sDefault.szMSDfsProxy, NULL, NULL, FLAG_SHARE}, + {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"Winbind options", P_SEP, P_SEPARATOR}, + + {"winbind uid", P_STRING, P_GLOBAL, &Globals.szWinbindUID, handle_winbind_uid, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"winbind gid", P_STRING, P_GLOBAL, &Globals.szWinbindGID, handle_winbind_gid, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"template homedir", P_STRING, P_GLOBAL, &Globals.szTemplateHomedir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"template shell", P_STRING, P_GLOBAL, &Globals.szTemplateShell, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"winbind cache time", P_INTEGER, P_GLOBAL, &Globals.winbind_cache_time, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"winbind enum users", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumUsers, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"winbind enum groups", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumGroups, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"winbind use default domain", P_BOOL, P_GLOBAL, &Globals.bWinbindUseDefaultDomain, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} +}; + +/*************************************************************************** + Initialise the sDefault parameter structure for the printer values. +***************************************************************************/ + +static void init_printer_values(void) +{ + /* choose defaults depending on the type of printing */ + switch (sDefault.iPrinting) { + case PRINT_BSD: + case PRINT_AIX: + case PRINT_LPRNT: + case PRINT_LPROS2: + string_set(&sDefault.szLpqcommand, "lpq -P'%p'"); + string_set(&sDefault.szLprmcommand, "lprm -P'%p' %j"); + string_set(&sDefault.szPrintcommand, + "lpr -r -P'%p' %s"); + break; + + case PRINT_LPRNG: + case PRINT_PLP: + string_set(&sDefault.szLpqcommand, "lpq -P'%p'"); + string_set(&sDefault.szLprmcommand, "lprm -P'%p' %j"); + string_set(&sDefault.szPrintcommand, + "lpr -r -P'%p' %s"); + string_set(&sDefault.szQueuepausecommand, + "lpc stop '%p'"); + string_set(&sDefault.szQueueresumecommand, + "lpc start '%p'"); + string_set(&sDefault.szLppausecommand, + "lpc hold '%p' %j"); + string_set(&sDefault.szLpresumecommand, + "lpc release '%p' %j"); + break; + + case PRINT_CUPS: +#ifdef HAVE_CUPS + string_set(&sDefault.szLpqcommand, ""); + string_set(&sDefault.szLprmcommand, ""); + string_set(&sDefault.szPrintcommand, ""); + string_set(&sDefault.szLppausecommand, ""); + string_set(&sDefault.szLpresumecommand, ""); + string_set(&sDefault.szQueuepausecommand, ""); + string_set(&sDefault.szQueueresumecommand, ""); + + string_set(&Globals.szPrintcapname, "cups"); +#else + string_set(&sDefault.szLpqcommand, + "/usr/bin/lpstat -o '%p'"); + string_set(&sDefault.szLprmcommand, + "/usr/bin/cancel '%p-%j'"); + string_set(&sDefault.szPrintcommand, + "/usr/bin/lp -d '%p' %s; rm %s"); + string_set(&sDefault.szLppausecommand, + "lp -i '%p-%j' -H hold"); + string_set(&sDefault.szLpresumecommand, + "lp -i '%p-%j' -H resume"); + string_set(&sDefault.szQueuepausecommand, + "/usr/bin/disable '%p'"); + string_set(&sDefault.szQueueresumecommand, + "/usr/bin/enable '%p'"); + string_set(&Globals.szPrintcapname, "lpstat"); +#endif /* HAVE_CUPS */ + break; + + case PRINT_SYSV: + case PRINT_HPUX: + string_set(&sDefault.szLpqcommand, "lpstat -o%p"); + string_set(&sDefault.szLprmcommand, "cancel %p-%j"); + string_set(&sDefault.szPrintcommand, + "lp -c -d%p %s; rm %s"); + string_set(&sDefault.szQueuepausecommand, + "disable %p"); + string_set(&sDefault.szQueueresumecommand, + "enable %p"); +#ifndef HPUX + string_set(&sDefault.szLppausecommand, + "lp -i %p-%j -H hold"); + string_set(&sDefault.szLpresumecommand, + "lp -i %p-%j -H resume"); +#endif /* HPUX */ + break; + + case PRINT_QNX: + string_set(&sDefault.szLpqcommand, "lpq -P%p"); + string_set(&sDefault.szLprmcommand, "lprm -P%p %j"); + string_set(&sDefault.szPrintcommand, "lp -r -P%p %s"); + break; + + case PRINT_SOFTQ: + string_set(&sDefault.szLpqcommand, "qstat -l -d%p"); + string_set(&sDefault.szLprmcommand, + "qstat -s -j%j -c"); + string_set(&sDefault.szPrintcommand, + "lp -d%p -s %s; rm %s"); + string_set(&sDefault.szLppausecommand, + "qstat -s -j%j -h"); + string_set(&sDefault.szLpresumecommand, + "qstat -s -j%j -r"); + break; +#ifdef DEVELOPER + case PRINT_TEST: + case PRINT_VLP: + string_set(&sDefault.szPrintcommand, "vlp print %p %s"); + string_set(&sDefault.szLpqcommand, "vlp lpq %p"); + string_set(&sDefault.szLprmcommand, "vlp lprm %p %j"); + string_set(&sDefault.szLppausecommand, "vlp lppause %p %j"); + string_set(&sDefault.szLpresumecommand, "vlp lpresum %p %j"); + string_set(&sDefault.szQueuepausecommand, "vlp queuepause %p"); + string_set(&sDefault.szQueueresumecommand, "vlp queueresume %p"); + break; +#endif /* DEVELOPER */ + + } +} + + +/*************************************************************************** + Initialise the global parameter structure. +***************************************************************************/ +static void init_globals(void) +{ + pstring s; + int i; + + DEBUG(3, ("Initialising global parameters\n")); + + for (i = 0; parm_table[i].label; i++) { + if ((parm_table[i].type == P_STRING || + parm_table[i].type == P_USTRING) && + parm_table[i].ptr && + !(parm_table[i].flags & FLAG_CMDLINE)) { + string_set(parm_table[i].ptr, ""); + } + } + + /* options that can be set on the command line must be initialised via + the slower do_parameter() to ensure that FLAG_CMDLINE is obeyed */ + do_parameter("socket options", DEFAULT_SOCKET_OPTIONS); + do_parameter("workgroup", DEFAULT_WORKGROUP); + do_parameter("netbios name", get_myname()); + do_parameter("max protocol", "NT1"); + do_parameter("name resolve order", "lmhosts wins host bcast"); + + init_printer_values(); + + string_set(&sDefault.fstype, FSTYPE_STRING); + string_set(&sDefault.ntvfs_handler, "default"); + + string_set(&Globals.szSMBPasswdFile, dyn_SMB_PASSWD_FILE); + string_set(&Globals.szPrivateDir, dyn_PRIVATE_DIR); + + /* use the new 'hash2' method by default, with a prefix of 1 */ + string_set(&Globals.szManglingMethod, "hash2"); + Globals.mangle_prefix = 1; + + string_set(&Globals.szGuestaccount, GUEST_ACCOUNT); + + /* using UTF8 by default allows us to support all chars */ + string_set(&Globals.unix_charset, "UTF8"); + + /* Use codepage 850 as a default for the dos character set */ + string_set(&Globals.dos_charset, "CP850"); + + /* + * Allow the default PASSWD_CHAT to be overridden in local.h. + */ + string_set(&Globals.szPasswdChat, DEFAULT_PASSWD_CHAT); + + string_set(&Globals.szPasswdProgram, ""); + string_set(&Globals.szPrintcapname, PRINTCAP_NAME); + string_set(&Globals.szPidDir, dyn_PIDDIR); + string_set(&Globals.szLockDir, dyn_LOCKDIR); + string_set(&Globals.szSocketAddress, "0.0.0.0"); + pstrcpy(s, "Samba "); + pstrcat(s, SAMBA_VERSION); + string_set(&Globals.szServerString, s); + slprintf(s, sizeof(s) - 1, "%d.%d", DEFAULT_MAJOR_VERSION, + DEFAULT_MINOR_VERSION); + string_set(&Globals.szAnnounceVersion, s); + + string_set(&Globals.szLogonDrive, ""); + /* %N is the NIS auto.home server if -DAUTOHOME is used, else same as %L */ + string_set(&Globals.szLogonHome, "\\\\%N\\%U"); + string_set(&Globals.szLogonPath, "\\\\%N\\%U\\profile"); + + string_set(&Globals.szPasswordServer, "*"); + + Globals.AlgorithmicRidBase = BASE_RID; + + Globals.bLoadPrinters = True; + Globals.mangled_stack = 50; + /* Was 65535 (0xFFFF). 0x4101 matches W2K and causes major speed improvements... */ + /* Discovered by 2 days of pain by Don McCall @ HP :-). */ + Globals.max_xmit = 0x4104; + Globals.max_mux = 50; /* This is *needed* for profile support. */ + Globals.lpqcachetime = 10; + Globals.bDisableSpoolss = False; + Globals.iMaxSmbdProcesses = 0;/* no limit specified */ + Globals.iTotalPrintJobs = 0; /* no limit specified */ + Globals.pwordlevel = 0; + Globals.unamelevel = 0; + Globals.deadtime = 0; + Globals.bLargeReadwrite = True; + Globals.max_log_size = 5000; + Globals.max_open_files = MAX_OPEN_FILES; + Globals.minprotocol = PROTOCOL_CORE; + Globals.security = SEC_USER; + Globals.paranoid_server_security = True; + Globals.bEncryptPasswords = True; + Globals.bUpdateEncrypt = False; + Globals.bReadRaw = True; + Globals.bWriteRaw = True; + Globals.bReadPrediction = False; + Globals.bReadbmpx = False; + Globals.bNullPasswords = False; + Globals.bObeyPamRestrictions = False; + Globals.bStripDot = False; + Globals.syslog = 1; + Globals.bSyslogOnly = False; + Globals.bTimestampLogs = True; + Globals.bDebugHiresTimestamp = False; + Globals.bDebugPid = False; + Globals.bDebugUid = False; + Globals.max_ttl = 60 * 60 * 24 * 3; /* 3 days default. */ + Globals.max_wins_ttl = 60 * 60 * 24 * 6; /* 6 days default. */ + Globals.min_wins_ttl = 60 * 60 * 6; /* 6 hours default. */ + Globals.machine_password_timeout = 60 * 60 * 24 * 7; /* 7 days default. */ + Globals.change_notify_timeout = 60; /* 1 minute default. */ + Globals.bKernelChangeNotify = True; /* On if we have it. */ + Globals.ReadSize = 16 * 1024; + Globals.lm_announce = 2; /* = Auto: send only if LM clients found */ + Globals.lm_interval = 60; + Globals.stat_cache_size = 50; /* Number of stat translations we'll keep */ + Globals.announce_as = ANNOUNCE_AS_NT_SERVER; +#if (defined(HAVE_NETGROUP) && defined(WITH_AUTOMOUNT)) + Globals.bNISHomeMap = False; +#ifdef WITH_NISPLUS_HOME + string_set(&Globals.szNISHomeMapName, "auto_home.org_dir"); +#else + string_set(&Globals.szNISHomeMapName, "auto.home"); +#endif +#endif + Globals.bTimeServer = False; + Globals.bBindInterfacesOnly = False; + Globals.bUnixPasswdSync = False; + Globals.bPamPasswordChange = False; + Globals.bPasswdChatDebug = False; + Globals.bUnicode = True; /* Do unicode on the wire by default */ + Globals.bNTPipeSupport = True; /* Do NT pipes by default. */ + Globals.bNTStatusSupport = True; /* Use NT status by default. */ + Globals.bStatCache = True; /* use stat cache by default */ + Globals.restrict_anonymous = 0; + Globals.bClientLanManAuth = True; /* Do use the LanMan hash if it is available */ + Globals.bLanmanAuth = True; /* Do use the LanMan hash if it is available */ + Globals.bNTLMAuth = True; /* Do use NTLMv1 if it is available (otherwise NTLMv2) */ + + Globals.map_to_guest = 0; /* By Default, "Never" */ + Globals.min_passwd_length = MINPASSWDLENGTH; /* By Default, 5. */ + Globals.oplock_break_wait_time = 0; /* By Default, 0 msecs. */ + Globals.enhanced_browsing = True; + Globals.iLockSpinCount = 3; /* Try 2 times. */ + Globals.iLockSpinTime = 10; /* usec. */ +#ifdef MMAP_BLACKLIST + Globals.bUseMmap = False; +#else + Globals.bUseMmap = True; +#endif + Globals.bUnixExtensions = False; + + /* hostname lookups can be very expensive and are broken on + a large number of sites (tridge) */ + Globals.bHostnameLookups = False; + +#ifdef WITH_LDAP_SAMCONFIG + string_set(&Globals.szLdapServer, "localhost"); + Globals.ldap_port = 636; + Globals.szPassdbBackend = str_list_make("ldapsam guest", NULL); +#else + Globals.szPassdbBackend = str_list_make("smbpasswd guest", NULL); +#endif /* WITH_LDAP_SAMCONFIG */ + + string_set(&Globals.szLdapSuffix, ""); + string_set(&Globals.szLdapMachineSuffix, ""); + string_set(&Globals.szLdapUserSuffix, ""); + + string_set(&Globals.szLdapFilter, "(&(uid=%u)(objectclass=sambaAccount))"); + string_set(&Globals.szLdapAdminDn, ""); + Globals.ldap_ssl = LDAP_SSL_ON; + Globals.ldap_passwd_sync = LDAP_PASSWD_SYNC_OFF; + +/* these parameters are set to defaults that are more appropriate + for the increasing samba install base: + + as a member of the workgroup, that will possibly become a + _local_ master browser (lm = True). this is opposed to a forced + local master browser startup (pm = True). + + doesn't provide WINS server service by default (wsupp = False), + and doesn't provide domain master browser services by default, either. + +*/ + + Globals.bMsAddPrinterWizard = True; + Globals.bPreferredMaster = Auto; /* depending on bDomainMaster */ + Globals.os_level = 20; + Globals.bLocalMaster = True; + Globals.bDomainMaster = Auto; /* depending on bDomainLogons */ + Globals.bDomainLogons = False; + Globals.bBrowseList = True; + Globals.bWINSsupport = False; + Globals.bWINSproxy = False; + + Globals.bDNSproxy = True; + + /* this just means to use them if they exist */ + Globals.bKernelOplocks = True; + + Globals.bAllowTrustedDomains = True; + + string_set(&Globals.szTemplateShell, "/bin/false"); + string_set(&Globals.szTemplateHomedir, "/home/%D/%U"); + string_set(&Globals.szWinbindSeparator, "\\"); + string_set(&Globals.szAclCompat, ""); + + Globals.winbind_cache_time = 15; + Globals.bWinbindEnumUsers = True; + Globals.bWinbindEnumGroups = True; + Globals.bWinbindUseDefaultDomain = False; + + string_set(&Globals.szIDMapBackend, "tdb"); + + Globals.name_cache_timeout = 660; /* In seconds */ + + Globals.bUseSpnego = True; + Globals.bClientUseSpnego = True; + + string_set(&Globals.smb_ports, SMB_PORTS); +} + +static TALLOC_CTX *lp_talloc; + +/******************************************************************* a + Free up temporary memory - called from the main loop. +********************************************************************/ + +void lp_talloc_free(void) +{ + if (!lp_talloc) + return; + talloc_destroy(lp_talloc); + lp_talloc = NULL; +} + +/******************************************************************* + Convenience routine to grab string parameters into temporary memory + and run standard_sub_basic on them. The buffers can be written to by + callers without affecting the source string. +********************************************************************/ + +static char *lp_string(const char *s) +{ + size_t len = s ? strlen(s) : 0; + char *ret; + + /* The follow debug is useful for tracking down memory problems + especially if you have an inner loop that is calling a lp_*() + function that returns a string. Perhaps this debug should be + present all the time? */ + +#if 0 + DEBUG(10, ("lp_string(%s)\n", s)); +#endif +#if 0 /* until REWRITE done to make thread-safe */ + if (!lp_talloc) + lp_talloc = talloc_init("lp_talloc"); + + ret = (char *)talloc(lp_talloc, len + 100); /* leave room for substitution */ + + if (!ret) + return NULL; + + if (!s) + *ret = 0; + else + StrnCpy(ret, s, len); + + if (trim_string(ret, "\"", "\"")) { + if (strchr(ret,'"') != NULL) + StrnCpy(ret, s, len); + } + + standard_sub_basic(ret,len+100); + return (ret); +#endif + return s; +} + +/* + In this section all the functions that are used to access the + parameters from the rest of the program are defined +*/ + +#define FN_GLOBAL_STRING(fn_name,ptr) \ + char *fn_name(void) {return(lp_string(*(char **)(ptr) ? *(char **)(ptr) : ""));} +#define FN_GLOBAL_CONST_STRING(fn_name,ptr) \ + const char *fn_name(void) {return(*(const char **)(ptr) ? *(const char **)(ptr) : "");} +#define FN_GLOBAL_LIST(fn_name,ptr) \ + const char **fn_name(void) {return(*(const char ***)(ptr));} +#define FN_GLOBAL_BOOL(fn_name,ptr) \ + BOOL fn_name(void) {return(*(BOOL *)(ptr));} +#define FN_GLOBAL_CHAR(fn_name,ptr) \ + char fn_name(void) {return(*(char *)(ptr));} +#define FN_GLOBAL_INTEGER(fn_name,ptr) \ + int fn_name(void) {return(*(int *)(ptr));} + +#define FN_LOCAL_STRING(fn_name,val) \ + char *fn_name(int i) {return(lp_string((LP_SNUM_OK(i) && ServicePtrs[(i)]->val) ? ServicePtrs[(i)]->val : sDefault.val));} +#define FN_LOCAL_CONST_STRING(fn_name,val) \ + const char *fn_name(int i) {return (const char *)((LP_SNUM_OK(i) && ServicePtrs[(i)]->val) ? ServicePtrs[(i)]->val : sDefault.val);} +#define FN_LOCAL_LIST(fn_name,val) \ + const char **fn_name(int i) {return(const char **)(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} +#define FN_LOCAL_BOOL(fn_name,val) \ + BOOL fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} +#define FN_LOCAL_CHAR(fn_name,val) \ + char fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} +#define FN_LOCAL_INTEGER(fn_name,val) \ + int fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} + +FN_GLOBAL_STRING(lp_smb_ports, &Globals.smb_ports) +FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) +FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) +FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) +FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) +FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) +FN_GLOBAL_STRING(lp_smb_passwd_file, &Globals.szSMBPasswdFile) +FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) +FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) +FN_GLOBAL_STRING(lp_printcapname, &Globals.szPrintcapname) +FN_GLOBAL_STRING(lp_enumports_cmd, &Globals.szEnumPortsCommand) +FN_GLOBAL_STRING(lp_addprinter_cmd, &Globals.szAddPrinterCommand) +FN_GLOBAL_STRING(lp_deleteprinter_cmd, &Globals.szDeletePrinterCommand) +FN_GLOBAL_STRING(lp_os2_driver_map, &Globals.szOs2DriverMap) +FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) +FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) +FN_GLOBAL_STRING(lp_mangling_method, &Globals.szManglingMethod) +FN_GLOBAL_INTEGER(lp_mangle_prefix, &Globals.mangle_prefix) +#ifdef WITH_UTMP +FN_GLOBAL_STRING(lp_utmpdir, &Globals.szUtmpDir) +FN_GLOBAL_STRING(lp_wtmpdir, &Globals.szWtmpDir) +FN_GLOBAL_BOOL(lp_utmp, &Globals.bUtmp) +#endif +FN_GLOBAL_STRING(lp_rootdir, &Globals.szRootdir) +FN_GLOBAL_STRING(lp_source_environment, &Globals.szSourceEnv) +FN_GLOBAL_STRING(lp_defaultservice, &Globals.szDefaultService) +FN_GLOBAL_STRING(lp_msg_command, &Globals.szMsgCommand) +FN_GLOBAL_STRING(lp_dfree_command, &Globals.szDfree) +FN_GLOBAL_STRING(lp_hosts_equiv, &Globals.szHostsEquiv) +FN_GLOBAL_STRING(lp_auto_services, &Globals.szAutoServices) +FN_GLOBAL_STRING(lp_passwd_program, &Globals.szPasswdProgram) +FN_GLOBAL_STRING(lp_passwd_chat, &Globals.szPasswdChat) +FN_GLOBAL_STRING(lp_passwordserver, &Globals.szPasswordServer) +FN_GLOBAL_STRING(lp_name_resolve_order, &Globals.szNameResolveOrder) +FN_GLOBAL_STRING(lp_realm, &Globals.szRealm) +FN_GLOBAL_STRING(lp_ads_server, &Globals.szADSserver) +FN_GLOBAL_STRING(lp_username_map, &Globals.szUsernameMap) +FN_GLOBAL_STRING(lp_socket_options, &Globals.socket_options) +FN_GLOBAL_STRING(lp_workgroup, &Globals.szWorkgroup) +FN_GLOBAL_STRING(lp_netbios_name, &Globals.szNetbiosName) +FN_GLOBAL_STRING(lp_netbios_scope, &Globals.szNetbiosScope) +FN_GLOBAL_CONST_STRING(lp_logon_script, &Globals.szLogonScript) +FN_GLOBAL_CONST_STRING(lp_logon_path, &Globals.szLogonPath) +FN_GLOBAL_CONST_STRING(lp_logon_drive, &Globals.szLogonDrive) +FN_GLOBAL_CONST_STRING(lp_logon_home, &Globals.szLogonHome) +FN_GLOBAL_STRING(lp_remote_announce, &Globals.szRemoteAnnounce) +FN_GLOBAL_STRING(lp_remote_browse_sync, &Globals.szRemoteBrowseSync) +FN_GLOBAL_LIST(lp_wins_server_list, &Globals.szWINSservers) +FN_GLOBAL_LIST(lp_interfaces, &Globals.szInterfaces) +FN_GLOBAL_STRING(lp_socket_address, &Globals.szSocketAddress) +FN_GLOBAL_STRING(lp_nis_home_map_name, &Globals.szNISHomeMapName) +static FN_GLOBAL_STRING(lp_announce_version, &Globals.szAnnounceVersion) +FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases) +FN_GLOBAL_LIST(lp_passdb_backend, &Globals.szPassdbBackend) +FN_GLOBAL_LIST(lp_sam_backend, &Globals.szSamBackend) +FN_GLOBAL_LIST(lp_preload_modules, &Globals.szPreloadModules) +FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) +FN_GLOBAL_STRING(lp_adduser_script, &Globals.szAddUserScript) +FN_GLOBAL_STRING(lp_deluser_script, &Globals.szDelUserScript) + +FN_GLOBAL_CONST_STRING(lp_guestaccount, &Globals.szGuestaccount) +FN_GLOBAL_STRING(lp_addgroup_script, &Globals.szAddGroupScript) +FN_GLOBAL_STRING(lp_delgroup_script, &Globals.szDelGroupScript) +FN_GLOBAL_STRING(lp_addusertogroup_script, &Globals.szAddUserToGroupScript) +FN_GLOBAL_STRING(lp_deluserfromgroup_script, &Globals.szDelUserFromGroupScript) +FN_GLOBAL_STRING(lp_setprimarygroup_script, &Globals.szSetPrimaryGroupScript) + +FN_GLOBAL_STRING(lp_addmachine_script, &Globals.szAddMachineScript) + +FN_GLOBAL_STRING(lp_shutdown_script, &Globals.szShutdownScript) +FN_GLOBAL_STRING(lp_abort_shutdown_script, &Globals.szAbortShutdownScript) + +FN_GLOBAL_STRING(lp_wins_hook, &Globals.szWINSHook) +FN_GLOBAL_STRING(lp_wins_partners, &Globals.szWINSPartners) +FN_GLOBAL_STRING(lp_template_homedir, &Globals.szTemplateHomedir) +FN_GLOBAL_STRING(lp_template_shell, &Globals.szTemplateShell) +FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) +FN_GLOBAL_STRING(lp_acl_compatibility, &Globals.szAclCompat) +FN_GLOBAL_BOOL(lp_winbind_enum_users, &Globals.bWinbindEnumUsers) +FN_GLOBAL_BOOL(lp_winbind_enum_groups, &Globals.bWinbindEnumGroups) +FN_GLOBAL_BOOL(lp_winbind_use_default_domain, &Globals.bWinbindUseDefaultDomain) +FN_GLOBAL_STRING(lp_idmap_backend, &Globals.szIDMapBackend) + +#ifdef WITH_LDAP_SAMCONFIG +FN_GLOBAL_STRING(lp_ldap_server, &Globals.szLdapServer) +FN_GLOBAL_INTEGER(lp_ldap_port, &Globals.ldap_port) +#endif +FN_GLOBAL_STRING(lp_ldap_suffix, &Globals.szLdapSuffix) +FN_GLOBAL_STRING(lp_ldap_machine_suffix, &Globals.szLdapMachineSuffix) +FN_GLOBAL_STRING(lp_ldap_user_suffix, &Globals.szLdapUserSuffix) +FN_GLOBAL_STRING(lp_ldap_filter, &Globals.szLdapFilter) +FN_GLOBAL_STRING(lp_ldap_admin_dn, &Globals.szLdapAdminDn) +FN_GLOBAL_INTEGER(lp_ldap_ssl, &Globals.ldap_ssl) +FN_GLOBAL_INTEGER(lp_ldap_passwd_sync, &Globals.ldap_passwd_sync) +FN_GLOBAL_BOOL(lp_ldap_trust_ids, &Globals.ldap_trust_ids) +FN_GLOBAL_STRING(lp_add_share_cmd, &Globals.szAddShareCommand) +FN_GLOBAL_STRING(lp_change_share_cmd, &Globals.szChangeShareCommand) +FN_GLOBAL_STRING(lp_delete_share_cmd, &Globals.szDeleteShareCommand) + +FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) +FN_GLOBAL_BOOL(lp_ms_add_printer_wizard, &Globals.bMsAddPrinterWizard) +FN_GLOBAL_BOOL(lp_dns_proxy, &Globals.bDNSproxy) +FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) +FN_GLOBAL_BOOL(lp_we_are_a_wins_server, &Globals.bWINSsupport) +FN_GLOBAL_BOOL(lp_wins_proxy, &Globals.bWINSproxy) +FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) +FN_GLOBAL_BOOL(lp_domain_logons, &Globals.bDomainLogons) +FN_GLOBAL_BOOL(lp_load_printers, &Globals.bLoadPrinters) +FN_GLOBAL_BOOL(lp_readprediction, &Globals.bReadPrediction) +FN_GLOBAL_BOOL(lp_readbmpx, &Globals.bReadbmpx) +FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw) +FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite) +FN_GLOBAL_BOOL(lp_writeraw, &Globals.bWriteRaw) +FN_GLOBAL_BOOL(lp_null_passwords, &Globals.bNullPasswords) +FN_GLOBAL_BOOL(lp_obey_pam_restrictions, &Globals.bObeyPamRestrictions) +FN_GLOBAL_BOOL(lp_strip_dot, &Globals.bStripDot) +FN_GLOBAL_BOOL(lp_encrypted_passwords, &Globals.bEncryptPasswords) +FN_GLOBAL_BOOL(lp_update_encrypted, &Globals.bUpdateEncrypt) +FN_GLOBAL_BOOL(lp_syslog_only, &Globals.bSyslogOnly) +FN_GLOBAL_BOOL(lp_timestamp_logs, &Globals.bTimestampLogs) +FN_GLOBAL_BOOL(lp_debug_hires_timestamp, &Globals.bDebugHiresTimestamp) +FN_GLOBAL_BOOL(lp_debug_pid, &Globals.bDebugPid) +FN_GLOBAL_BOOL(lp_debug_uid, &Globals.bDebugUid) +FN_GLOBAL_BOOL(lp_browse_list, &Globals.bBrowseList) +FN_GLOBAL_BOOL(lp_nis_home_map, &Globals.bNISHomeMap) +static FN_GLOBAL_BOOL(lp_time_server, &Globals.bTimeServer) +FN_GLOBAL_BOOL(lp_bind_interfaces_only, &Globals.bBindInterfacesOnly) +FN_GLOBAL_BOOL(lp_pam_password_change, &Globals.bPamPasswordChange) +FN_GLOBAL_BOOL(lp_unix_password_sync, &Globals.bUnixPasswdSync) +FN_GLOBAL_BOOL(lp_passwd_chat_debug, &Globals.bPasswdChatDebug) +FN_GLOBAL_BOOL(lp_unicode, &Globals.bUnicode) +FN_GLOBAL_BOOL(lp_nt_pipe_support, &Globals.bNTPipeSupport) +FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport) +FN_GLOBAL_BOOL(lp_stat_cache, &Globals.bStatCache) +FN_GLOBAL_BOOL(lp_allow_trusted_domains, &Globals.bAllowTrustedDomains) +FN_GLOBAL_INTEGER(lp_restrict_anonymous, &Globals.restrict_anonymous) +FN_GLOBAL_BOOL(lp_lanman_auth, &Globals.bLanmanAuth) +FN_GLOBAL_BOOL(lp_ntlm_auth, &Globals.bNTLMAuth) +FN_GLOBAL_BOOL(lp_client_lanman_auth, &Globals.bClientLanManAuth) +FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, &Globals.bClientNTLMv2Auth) +FN_GLOBAL_BOOL(lp_host_msdfs, &Globals.bHostMSDfs) +FN_GLOBAL_BOOL(lp_kernel_oplocks, &Globals.bKernelOplocks) +FN_GLOBAL_BOOL(lp_enhanced_browsing, &Globals.enhanced_browsing) +FN_GLOBAL_BOOL(lp_use_mmap, &Globals.bUseMmap) +FN_GLOBAL_BOOL(lp_unix_extensions, &Globals.bUnixExtensions) +FN_GLOBAL_BOOL(lp_use_spnego, &Globals.bUseSpnego) +FN_GLOBAL_BOOL(lp_client_use_spnego, &Globals.bClientUseSpnego) +FN_GLOBAL_BOOL(lp_hostname_lookups, &Globals.bHostnameLookups) +FN_GLOBAL_BOOL(lp_kernel_change_notify, &Globals.bKernelChangeNotify) +FN_GLOBAL_INTEGER(lp_os_level, &Globals.os_level) +FN_GLOBAL_INTEGER(lp_max_ttl, &Globals.max_ttl) +FN_GLOBAL_INTEGER(lp_max_wins_ttl, &Globals.max_wins_ttl) +FN_GLOBAL_INTEGER(lp_min_wins_ttl, &Globals.min_wins_ttl) +FN_GLOBAL_INTEGER(lp_max_log_size, &Globals.max_log_size) +FN_GLOBAL_INTEGER(lp_max_open_files, &Globals.max_open_files) +FN_GLOBAL_INTEGER(lp_maxxmit, &Globals.max_xmit) +FN_GLOBAL_INTEGER(lp_time_offset, &Globals.time_offset) +FN_GLOBAL_INTEGER(lp_maxmux, &Globals.max_mux) +FN_GLOBAL_INTEGER(lp_passwordlevel, &Globals.pwordlevel) +FN_GLOBAL_INTEGER(lp_usernamelevel, &Globals.unamelevel) +FN_GLOBAL_INTEGER(lp_readsize, &Globals.ReadSize) +FN_GLOBAL_INTEGER(lp_deadtime, &Globals.deadtime) +FN_GLOBAL_INTEGER(lp_keepalive, &Globals.keepalive) +FN_GLOBAL_INTEGER(lp_maxprotocol, &Globals.maxprotocol) +FN_GLOBAL_INTEGER(lp_minprotocol, &Globals.minprotocol) +FN_GLOBAL_INTEGER(lp_security, &Globals.security) +FN_GLOBAL_LIST(lp_auth_methods, &Globals.AuthMethods) +FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) +FN_GLOBAL_INTEGER(lp_maxdisksize, &Globals.maxdisksize) +FN_GLOBAL_INTEGER(lp_lpqcachetime, &Globals.lpqcachetime) +FN_GLOBAL_INTEGER(lp_max_smbd_processes, &Globals.iMaxSmbdProcesses) +FN_GLOBAL_INTEGER(lp_disable_spoolss, &Globals.bDisableSpoolss) +FN_GLOBAL_INTEGER(lp_totalprintjobs, &Globals.iTotalPrintJobs) +FN_GLOBAL_INTEGER(lp_syslog, &Globals.syslog) +static FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) +FN_GLOBAL_INTEGER(lp_lm_announce, &Globals.lm_announce) +FN_GLOBAL_INTEGER(lp_lm_interval, &Globals.lm_interval) +FN_GLOBAL_INTEGER(lp_machine_password_timeout, &Globals.machine_password_timeout) +FN_GLOBAL_INTEGER(lp_change_notify_timeout, &Globals.change_notify_timeout) +FN_GLOBAL_INTEGER(lp_stat_cache_size, &Globals.stat_cache_size) +FN_GLOBAL_INTEGER(lp_map_to_guest, &Globals.map_to_guest) +FN_GLOBAL_INTEGER(lp_min_passwd_length, &Globals.min_passwd_length) +FN_GLOBAL_INTEGER(lp_oplock_break_wait_time, &Globals.oplock_break_wait_time) +FN_GLOBAL_INTEGER(lp_lock_spin_count, &Globals.iLockSpinCount) +FN_GLOBAL_INTEGER(lp_lock_sleep_time, &Globals.iLockSpinTime) +FN_LOCAL_STRING(lp_preexec, szPreExec) +FN_LOCAL_STRING(lp_postexec, szPostExec) +FN_LOCAL_STRING(lp_rootpreexec, szRootPreExec) +FN_LOCAL_STRING(lp_rootpostexec, szRootPostExec) +FN_LOCAL_STRING(lp_servicename, szService) +FN_LOCAL_CONST_STRING(lp_const_servicename, szService) +FN_LOCAL_STRING(lp_pathname, szPath) +FN_LOCAL_STRING(lp_dontdescend, szDontdescend) +FN_LOCAL_STRING(lp_username, szUsername) +FN_LOCAL_LIST(lp_invalid_users, szInvalidUsers) +FN_LOCAL_LIST(lp_valid_users, szValidUsers) +FN_LOCAL_LIST(lp_admin_users, szAdminUsers) +FN_LOCAL_STRING(lp_printcommand, szPrintcommand) +FN_LOCAL_STRING(lp_lpqcommand, szLpqcommand) +FN_LOCAL_STRING(lp_lprmcommand, szLprmcommand) +FN_LOCAL_STRING(lp_lppausecommand, szLppausecommand) +FN_LOCAL_STRING(lp_lpresumecommand, szLpresumecommand) +FN_LOCAL_STRING(lp_queuepausecommand, szQueuepausecommand) +FN_LOCAL_STRING(lp_queueresumecommand, szQueueresumecommand) +static FN_LOCAL_STRING(_lp_printername, szPrintername) +FN_LOCAL_LIST(lp_hostsallow, szHostsallow) +FN_LOCAL_LIST(lp_hostsdeny, szHostsdeny) +FN_LOCAL_STRING(lp_magicscript, szMagicScript) +FN_LOCAL_STRING(lp_magicoutput, szMagicOutput) +FN_LOCAL_STRING(lp_comment, comment) +FN_LOCAL_STRING(lp_force_user, force_user) +FN_LOCAL_STRING(lp_force_group, force_group) +FN_LOCAL_LIST(lp_readlist, readlist) +FN_LOCAL_LIST(lp_writelist, writelist) +FN_LOCAL_LIST(lp_printer_admin, printer_admin) +FN_LOCAL_STRING(lp_fstype, fstype) +FN_LOCAL_STRING(lp_vfsobj, szVfsObjectFile) +FN_LOCAL_STRING(lp_vfs_options, szVfsOptions) +FN_LOCAL_STRING(lp_vfs_path, szVfsPath) +FN_LOCAL_STRING(lp_msdfs_proxy, szMSDfsProxy) +static FN_LOCAL_STRING(lp_volume, volume) +FN_LOCAL_STRING(lp_mangled_map, szMangledMap) +FN_LOCAL_STRING(lp_veto_files, szVetoFiles) +FN_LOCAL_STRING(lp_hide_files, szHideFiles) +FN_LOCAL_STRING(lp_veto_oplocks, szVetoOplockFiles) +FN_LOCAL_STRING(lp_ntvfs_handler, ntvfs_handler) +FN_LOCAL_BOOL(lp_msdfs_root, bMSDfsRoot) +FN_LOCAL_BOOL(lp_autoloaded, autoloaded) +FN_LOCAL_BOOL(lp_preexec_close, bPreexecClose) +FN_LOCAL_BOOL(lp_rootpreexec_close, bRootpreexecClose) +FN_LOCAL_BOOL(lp_casesensitive, bCaseSensitive) +FN_LOCAL_BOOL(lp_preservecase, bCasePreserve) +FN_LOCAL_BOOL(lp_shortpreservecase, bShortCasePreserve) +FN_LOCAL_BOOL(lp_casemangle, bCaseMangle) +FN_LOCAL_BOOL(lp_hide_dot_files, bHideDotFiles) +FN_LOCAL_BOOL(lp_hide_special_files, bHideSpecialFiles) +FN_LOCAL_BOOL(lp_hideunreadable, bHideUnReadable) +FN_LOCAL_BOOL(lp_hideunwriteable_files, bHideUnWriteableFiles) +FN_LOCAL_BOOL(lp_browseable, bBrowseable) +FN_LOCAL_BOOL(lp_readonly, bRead_only) +FN_LOCAL_BOOL(lp_no_set_dir, bNo_set_dir) +FN_LOCAL_BOOL(lp_guest_ok, bGuest_ok) +FN_LOCAL_BOOL(lp_guest_only, bGuest_only) +FN_LOCAL_BOOL(lp_print_ok, bPrint_ok) +FN_LOCAL_BOOL(lp_map_hidden, bMap_hidden) +FN_LOCAL_BOOL(lp_map_archive, bMap_archive) +FN_LOCAL_BOOL(lp_locking, bLocking) +FN_LOCAL_BOOL(lp_strict_locking, bStrictLocking) +FN_LOCAL_BOOL(lp_posix_locking, bPosixLocking) +FN_LOCAL_BOOL(lp_share_modes, bShareModes) +FN_LOCAL_BOOL(lp_oplocks, bOpLocks) +FN_LOCAL_BOOL(lp_level2_oplocks, bLevel2OpLocks) +FN_LOCAL_BOOL(lp_onlyuser, bOnlyUser) +FN_LOCAL_BOOL(lp_manglednames, bMangledNames) +FN_LOCAL_BOOL(lp_widelinks, bWidelinks) +FN_LOCAL_BOOL(lp_symlinks, bSymlinks) +FN_LOCAL_BOOL(lp_syncalways, bSyncAlways) +FN_LOCAL_BOOL(lp_strict_allocate, bStrictAllocate) +FN_LOCAL_BOOL(lp_strict_sync, bStrictSync) +FN_LOCAL_BOOL(lp_map_system, bMap_system) +FN_LOCAL_BOOL(lp_delete_readonly, bDeleteReadonly) +FN_LOCAL_BOOL(lp_fake_oplocks, bFakeOplocks) +FN_LOCAL_BOOL(lp_recursive_veto_delete, bDeleteVetoFiles) +FN_LOCAL_BOOL(lp_dos_filemode, bDosFilemode) +FN_LOCAL_BOOL(lp_dos_filetimes, bDosFiletimes) +FN_LOCAL_BOOL(lp_dos_filetime_resolution, bDosFiletimeResolution) +FN_LOCAL_BOOL(lp_fake_dir_create_times, bFakeDirCreateTimes) +FN_LOCAL_BOOL(lp_blocking_locks, bBlockingLocks) +FN_LOCAL_BOOL(lp_inherit_perms, bInheritPerms) +FN_LOCAL_BOOL(lp_inherit_acls, bInheritACLS) +FN_LOCAL_BOOL(lp_use_client_driver, bUseClientDriver) +FN_LOCAL_BOOL(lp_default_devmode, bDefaultDevmode) +FN_LOCAL_BOOL(lp_nt_acl_support, bNTAclSupport) +FN_LOCAL_BOOL(lp_use_sendfile, bUseSendfile) +FN_LOCAL_BOOL(lp_profile_acls, bProfileAcls) +FN_LOCAL_INTEGER(lp_create_mask, iCreate_mask) +FN_LOCAL_INTEGER(lp_force_create_mode, iCreate_force_mode) +FN_LOCAL_INTEGER(lp_security_mask, iSecurity_mask) +FN_LOCAL_INTEGER(lp_force_security_mode, iSecurity_force_mode) +FN_LOCAL_INTEGER(lp_dir_mask, iDir_mask) +FN_LOCAL_INTEGER(lp_force_dir_mode, iDir_force_mode) +FN_LOCAL_INTEGER(lp_dir_security_mask, iDir_Security_mask) +FN_LOCAL_INTEGER(lp_force_dir_security_mode, iDir_Security_force_mode) +FN_LOCAL_INTEGER(lp_max_connections, iMaxConnections) +FN_LOCAL_INTEGER(lp_defaultcase, iDefaultCase) +FN_LOCAL_INTEGER(lp_minprintspace, iMinPrintSpace) +FN_LOCAL_INTEGER(lp_printing, iPrinting) +FN_LOCAL_INTEGER(lp_max_reported_jobs, iMaxReportedPrintJobs) +FN_LOCAL_INTEGER(lp_oplock_contention_limit, iOplockContentionLimit) +FN_LOCAL_INTEGER(lp_csc_policy, iCSCPolicy) +FN_LOCAL_INTEGER(lp_write_cache_size, iWriteCacheSize) +FN_LOCAL_INTEGER(lp_block_size, iBlock_size) +FN_LOCAL_CHAR(lp_magicchar, magic_char) +FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time) +FN_GLOBAL_BOOL(lp_hide_local_users, &Globals.bHideLocalUsers) +FN_GLOBAL_INTEGER(lp_algorithmic_rid_base, &Globals.AlgorithmicRidBase) +FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout) +FN_GLOBAL_BOOL(lp_client_signing, &Globals.client_signing) + +/* local prototypes */ + +static int map_parameter(const char *pszParmName); +static BOOL set_boolean(BOOL *pb, const char *pszParmValue); +static int getservicebyname(const char *pszServiceName, + service * pserviceDest); +static void copy_service(service * pserviceDest, + service * pserviceSource, BOOL *pcopymapDest); +static BOOL service_ok(int iService); +static BOOL do_section(const char *pszSectionName); +static void init_copymap(service * pservice); + +/* This is a helper function for parametrical options support. */ +/* It returns a pointer to parametrical option value if it exists or NULL otherwise */ +/* Actual parametrical functions are quite simple */ +static const char *get_parametrics(int lookup_service, const char *type, const char *option) +{ + char *vfskey; + struct param_opt *data; + + if (lookup_service >= iNumServices) return NULL; + + data = (lookup_service < 0) ? + Globals.param_opt : ServicePtrs[lookup_service]->param_opt; + + asprintf(&vfskey, "%s:%s", type, option); + strlower(vfskey); + + while (data) { + if (strcmp(data->key, vfskey) == 0) { + free(vfskey); + return data->value; + } + data = data->next; + } + + if (lookup_service >= 0) { + /* Try to fetch the same option but from globals */ + /* but only if we are not already working with Globals */ + data = Globals.param_opt; + while (data) { + if (strcmp(data->key, vfskey) == 0) { + free(vfskey); + return data->value; + } + data = data->next; + } + } + + free(vfskey); + + return NULL; +} + + +/******************************************************************* +convenience routine to return int parameters. +********************************************************************/ +static int lp_int(const char *s) +{ + + if (!s) { + DEBUG(0,("lp_int(%s): is called with NULL!\n",s)); + return (-1); + } + + return atoi(s); +} + +/******************************************************************* +convenience routine to return unsigned long parameters. +********************************************************************/ +static int lp_ulong(const char *s) +{ + + if (!s) { + DEBUG(0,("lp_int(%s): is called with NULL!\n",s)); + return (-1); + } + + return strtoul(s, NULL, 10); +} + +/******************************************************************* +convenience routine to return boolean parameters. +********************************************************************/ +static BOOL lp_bool(const char *s) +{ + BOOL ret = False; + + if (!s) { + DEBUG(0,("lp_bool(%s): is called with NULL!\n",s)); + return False; + } + + if (!set_boolean(&ret,s)) { + DEBUG(0,("lp_bool(%s): value is not boolean!\n",s)); + return False; + } + + return ret; +} + +/******************************************************************* +convenience routine to return enum parameters. +********************************************************************/ +static int lp_enum(const char *s,const struct enum_list *_enum) +{ + int i; + + if (!s || !_enum) { + DEBUG(0,("lp_enum(%s,enum): is called with NULL!\n",s)); + return False; + } + + for (i=0; _enum[i].name; i++) { + if (strcasecmp(_enum[i].name,s)==0) + return _enum[i].value; + } + + DEBUG(0,("lp_enum(%s,enum): value is not in enum_list!\n",s)); + return (-1); +} + +/* Return parametric option from a given service. Type is a part of option before ':' */ +/* Parametric option has following syntax: 'Type: option = value' */ +/* Returned value is allocated in 'lp_talloc' context */ + +char *lp_parm_string(int lookup_service, const char *type, const char *option) +{ + const char *value = get_parametrics(lookup_service, type, option); + + if (value) + return lp_string(value); + + return NULL; +} + +/* Return parametric option from a given service. Type is a part of option before ':' */ +/* Parametric option has following syntax: 'Type: option = value' */ +/* Returned value is allocated in 'lp_talloc' context */ + +char **lp_parm_string_list(int lookup_service, const char *type, const char *option, + const char *separator) +{ + const char *value = get_parametrics(lookup_service, type, option); + + if (value) + return str_list_make(value, separator); + + return NULL; +} + +/* Return parametric option from a given service. Type is a part of option before ':' */ +/* Parametric option has following syntax: 'Type: option = value' */ + +int lp_parm_int(int lookup_service, const char *type, const char *option) +{ + const char *value = get_parametrics(lookup_service, type, option); + + if (value) + return lp_int(value); + + return (-1); +} + +/* Return parametric option from a given service. Type is a part of option before ':' */ +/* Parametric option has following syntax: 'Type: option = value' */ + +unsigned long lp_parm_ulong(int lookup_service, const char *type, const char *option) +{ + const char *value = get_parametrics(lookup_service, type, option); + + if (value) + return lp_ulong(value); + + return (0); +} + +/* Return parametric option from a given service. Type is a part of option before ':' */ +/* Parametric option has following syntax: 'Type: option = value' */ + +BOOL lp_parm_bool(int lookup_service, const char *type, const char *option, BOOL default_v) +{ + const char *value = get_parametrics(lookup_service, type, option); + + if (value) + return lp_bool(value); + + return default_v; +} + +/* Return parametric option from a given service. Type is a part of option before ':' */ +/* Parametric option has following syntax: 'Type: option = value' */ + +int lp_parm_enum(int lookup_service, const char *type, const char *option, + const struct enum_list *_enum) +{ + const char *value = get_parametrics(lookup_service, type, option); + + if (value) + return lp_enum(value, _enum); + + return (-1); +} + + +/*************************************************************************** + Initialise a service to the defaults. +***************************************************************************/ + +static void init_service(service * pservice) +{ + memset((char *)pservice, '\0', sizeof(service)); + copy_service(pservice, &sDefault, NULL); +} + +/*************************************************************************** + Free the dynamically allocated parts of a service struct. +***************************************************************************/ + +static void free_service(service *pservice) +{ + int i; + struct param_opt *data, *pdata; + if (!pservice) + return; + + if (pservice->szService) + DEBUG(5, ("free_service: Freeing service %s\n", + pservice->szService)); + + string_free(&pservice->szService); + SAFE_FREE(pservice->copymap); + + for (i = 0; parm_table[i].label; i++) { + if ((parm_table[i].type == P_STRING || + parm_table[i].type == P_USTRING) && + parm_table[i].class == P_LOCAL) + string_free((char **) + (((char *)pservice) + + PTR_DIFF(parm_table[i].ptr, &sDefault))); + else if (parm_table[i].type == P_LIST && + parm_table[i].class == P_LOCAL) + str_list_free((char ***) + (((char *)pservice) + + PTR_DIFF(parm_table[i].ptr, &sDefault))); + } + + DEBUG(5,("Freeing parametrics:\n")); + data = pservice->param_opt; + while (data) { + DEBUG(5,("[%s = %s]\n", data->key, data->value)); + string_free(&data->key); + string_free(&data->value); + pdata = data->next; + SAFE_FREE(data); + data = pdata; + } + + ZERO_STRUCTP(pservice); +} + +/*************************************************************************** + Add a new service to the services array initialising it with the given + service. +***************************************************************************/ + +static int add_a_service(const service *pservice, const char *name) +{ + int i; + service tservice; + int num_to_alloc = iNumServices + 1; + struct param_opt *data, *pdata; + + tservice = *pservice; + + /* it might already exist */ + if (name) { + i = getservicebyname(name, NULL); + if (i >= 0) { + /* Clean all parametric options for service */ + /* They will be added during parsing again */ + data = ServicePtrs[i]->param_opt; + while (data) { + string_free(&data->key); + string_free(&data->value); + pdata = data->next; + SAFE_FREE(data); + data = pdata; + } + ServicePtrs[i]->param_opt = NULL; + return (i); + } + } + + /* find an invalid one */ + for (i = 0; i < iNumServices; i++) + if (!ServicePtrs[i]->valid) + break; + + /* if not, then create one */ + if (i == iNumServices) { + service **tsp; + + tsp = (service **) Realloc(ServicePtrs, + sizeof(service *) * + num_to_alloc); + + if (!tsp) { + DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n")); + return (-1); + } + else { + ServicePtrs = tsp; + ServicePtrs[iNumServices] = + (service *) malloc(sizeof(service)); + } + if (!ServicePtrs[iNumServices]) { + DEBUG(0,("add_a_service: out of memory!\n")); + return (-1); + } + + iNumServices++; + } else + free_service(ServicePtrs[i]); + + ServicePtrs[i]->valid = True; + + init_service(ServicePtrs[i]); + copy_service(ServicePtrs[i], &tservice, NULL); + if (name) + string_set(&ServicePtrs[i]->szService, name); + return (i); +} + +/*************************************************************************** + Add a new home service, with the specified home directory, defaults coming + from service ifrom. +***************************************************************************/ + +BOOL lp_add_home(const char *pszHomename, int iDefaultService, + const char *user, const char *pszHomedir) +{ + int i; + pstring newHomedir; + + i = add_a_service(ServicePtrs[iDefaultService], pszHomename); + + if (i < 0) + return (False); + + if (!(*(ServicePtrs[iDefaultService]->szPath)) + || strequal(ServicePtrs[iDefaultService]->szPath, lp_pathname(-1))) { + pstrcpy(newHomedir, pszHomedir); + } else { + pstrcpy(newHomedir, lp_pathname(iDefaultService)); + string_sub(newHomedir,"%H", pszHomedir, sizeof(newHomedir)); + } + + string_set(&ServicePtrs[i]->szPath, newHomedir); + + if (!(*(ServicePtrs[i]->comment))) { + pstring comment; + slprintf(comment, sizeof(comment) - 1, + "Home directory of %s", user); + string_set(&ServicePtrs[i]->comment, comment); + } + ServicePtrs[i]->bAvailable = sDefault.bAvailable; + ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; + + DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", pszHomename, + user, newHomedir)); + + return (True); +} + +/*************************************************************************** + Add a new service, based on an old one. +***************************************************************************/ + +int lp_add_service(const char *pszService, int iDefaultService) +{ + return (add_a_service(ServicePtrs[iDefaultService], pszService)); +} + +/*************************************************************************** + Add the IPC service. +***************************************************************************/ + +static BOOL lp_add_ipc(const char *ipc_name, BOOL guest_ok) +{ + pstring comment; + int i = add_a_service(&sDefault, ipc_name); + + if (i < 0) + return (False); + + slprintf(comment, sizeof(comment) - 1, + "IPC Service (%s)", Globals.szServerString); + + string_set(&ServicePtrs[i]->szPath, tmpdir()); + string_set(&ServicePtrs[i]->szUsername, ""); + string_set(&ServicePtrs[i]->comment, comment); + string_set(&ServicePtrs[i]->fstype, "IPC"); + ServicePtrs[i]->iMaxConnections = 0; + ServicePtrs[i]->bAvailable = True; + ServicePtrs[i]->bRead_only = True; + ServicePtrs[i]->bGuest_only = False; + ServicePtrs[i]->bGuest_ok = guest_ok; + ServicePtrs[i]->bPrint_ok = False; + ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; + + DEBUG(3, ("adding IPC service\n")); + + return (True); +} + +/*************************************************************************** + Add a new printer service, with defaults coming from service iFrom. +***************************************************************************/ + +BOOL lp_add_printer(const char *pszPrintername, int iDefaultService) +{ + const char *comment = "From Printcap"; + int i = add_a_service(ServicePtrs[iDefaultService], pszPrintername); + + if (i < 0) + return (False); + + /* note that we do NOT default the availability flag to True - */ + /* we take it from the default service passed. This allows all */ + /* dynamic printers to be disabled by disabling the [printers] */ + /* entry (if/when the 'available' keyword is implemented!). */ + + /* the printer name is set to the service name. */ + string_set(&ServicePtrs[i]->szPrintername, pszPrintername); + string_set(&ServicePtrs[i]->comment, comment); + ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; + /* Printers cannot be read_only. */ + ServicePtrs[i]->bRead_only = False; + /* No share modes on printer services. */ + ServicePtrs[i]->bShareModes = False; + /* No oplocks on printer services. */ + ServicePtrs[i]->bOpLocks = False; + /* Printer services must be printable. */ + ServicePtrs[i]->bPrint_ok = True; + + DEBUG(3, ("adding printer service %s\n", pszPrintername)); + + update_server_announce_as_printserver(); + + return (True); +} + +/*************************************************************************** + Map a parameter's string representation to something we can use. + Returns False if the parameter string is not recognised, else TRUE. +***************************************************************************/ + +static int map_parameter(const char *pszParmName) +{ + int iIndex; + + if (*pszParmName == '-') + return (-1); + + for (iIndex = 0; parm_table[iIndex].label; iIndex++) + if (strwicmp(parm_table[iIndex].label, pszParmName) == 0) + return (iIndex); + + /* Warn only if it isn't parametric option */ + if (strchr(pszParmName, ':') == NULL) + DEBUG(0, ("Unknown parameter encountered: \"%s\"\n", pszParmName)); + /* We do return 'fail' for parametric options as well because they are + stored in different storage + */ + return (-1); +} + +/*************************************************************************** + Set a boolean variable from the text value stored in the passed string. + Returns True in success, False if the passed string does not correctly + represent a boolean. +***************************************************************************/ + +static BOOL set_boolean(BOOL *pb, const char *pszParmValue) +{ + BOOL bRetval; + + bRetval = True; + if (strwicmp(pszParmValue, "yes") == 0 || + strwicmp(pszParmValue, "true") == 0 || + strwicmp(pszParmValue, "1") == 0) + *pb = True; + else if (strwicmp(pszParmValue, "no") == 0 || + strwicmp(pszParmValue, "False") == 0 || + strwicmp(pszParmValue, "0") == 0) + *pb = False; + else { + DEBUG(0, + ("ERROR: Badly formed boolean in configuration file: \"%s\".\n", + pszParmValue)); + bRetval = False; + } + return (bRetval); +} + +/*************************************************************************** +Find a service by name. Otherwise works like get_service. +***************************************************************************/ + +static int getservicebyname(const char *pszServiceName, service * pserviceDest) +{ + int iService; + + for (iService = iNumServices - 1; iService >= 0; iService--) + if (VALID(iService) && + strwicmp(ServicePtrs[iService]->szService, pszServiceName) == 0) { + if (pserviceDest != NULL) + copy_service(pserviceDest, ServicePtrs[iService], NULL); + break; + } + + return (iService); +} + +/*************************************************************************** + Copy a service structure to another. + If pcopymapDest is NULL then copy all fields +***************************************************************************/ + +static void copy_service(service * pserviceDest, service * pserviceSource, BOOL *pcopymapDest) +{ + int i; + BOOL bcopyall = (pcopymapDest == NULL); + struct param_opt *data, *pdata, *paramo; + BOOL not_added; + + for (i = 0; parm_table[i].label; i++) + if (parm_table[i].ptr && parm_table[i].class == P_LOCAL && + (bcopyall || pcopymapDest[i])) { + void *def_ptr = parm_table[i].ptr; + void *src_ptr = + ((char *)pserviceSource) + PTR_DIFF(def_ptr, + &sDefault); + void *dest_ptr = + ((char *)pserviceDest) + PTR_DIFF(def_ptr, + &sDefault); + + switch (parm_table[i].type) { + case P_BOOL: + case P_BOOLREV: + *(BOOL *)dest_ptr = *(BOOL *)src_ptr; + break; + + case P_INTEGER: + case P_ENUM: + case P_OCTAL: + *(int *)dest_ptr = *(int *)src_ptr; + break; + + case P_CHAR: + *(char *)dest_ptr = *(char *)src_ptr; + break; + + case P_STRING: + string_set(dest_ptr, + *(char **)src_ptr); + break; + + case P_USTRING: + string_set(dest_ptr, + *(char **)src_ptr); + strupper(*(char **)dest_ptr); + break; + case P_LIST: + str_list_copy((char ***)dest_ptr, *(const char ***)src_ptr); + break; + default: + break; + } + } + + if (bcopyall) { + init_copymap(pserviceDest); + if (pserviceSource->copymap) + memcpy((void *)pserviceDest->copymap, + (void *)pserviceSource->copymap, + sizeof(BOOL) * NUMPARAMETERS); + } + + data = pserviceSource->param_opt; + while (data) { + not_added = True; + pdata = pserviceDest->param_opt; + /* Traverse destination */ + while (pdata) { + /* If we already have same option, override it */ + if (strcmp(pdata->key, data->key) == 0) { + string_free(&pdata->value); + pdata->value = strdup(data->value); + not_added = False; + break; + } + pdata = pdata->next; + } + if (not_added) { + paramo = smb_xmalloc(sizeof(*paramo)); + paramo->key = strdup(data->key); + paramo->value = strdup(data->value); + DLIST_ADD(pserviceDest->param_opt, paramo); + } + data = data->next; + } +} + +/*************************************************************************** +Check a service for consistency. Return False if the service is in any way +incomplete or faulty, else True. +***************************************************************************/ + +static BOOL service_ok(int iService) +{ + BOOL bRetval; + + bRetval = True; + if (ServicePtrs[iService]->szService[0] == '\0') { + DEBUG(0, ("The following message indicates an internal error:\n")); + DEBUG(0, ("No service name in service entry.\n")); + bRetval = False; + } + + /* The [printers] entry MUST be printable. I'm all for flexibility, but */ + /* I can't see why you'd want a non-printable printer service... */ + if (strwicmp(ServicePtrs[iService]->szService, PRINTERS_NAME) == 0) { + if (!ServicePtrs[iService]->bPrint_ok) { + DEBUG(0, ("WARNING: [%s] service MUST be printable!\n", + ServicePtrs[iService]->szService)); + ServicePtrs[iService]->bPrint_ok = True; + } + /* [printers] service must also be non-browsable. */ + if (ServicePtrs[iService]->bBrowseable) + ServicePtrs[iService]->bBrowseable = False; + } + + if (ServicePtrs[iService]->szPath[0] == '\0' && + strwicmp(ServicePtrs[iService]->szService, HOMES_NAME) != 0) { + DEBUG(0, ("No path in service %s - using %s\n", + ServicePtrs[iService]->szService, tmpdir())); + string_set(&ServicePtrs[iService]->szPath, tmpdir()); + } + + /* If a service is flagged unavailable, log the fact at level 0. */ + if (!ServicePtrs[iService]->bAvailable) + DEBUG(1, ("NOTE: Service %s is flagged unavailable.\n", + ServicePtrs[iService]->szService)); + + return (bRetval); +} + +static struct file_lists { + struct file_lists *next; + char *name; + char *subfname; + time_t modtime; +} *file_lists = NULL; + +/******************************************************************* + Keep a linked list of all config files so we know when one has changed + it's date and needs to be reloaded. +********************************************************************/ + +static void add_to_file_list(const char *fname, const char *subfname) +{ + struct file_lists *f = file_lists; + + while (f) { + if (f->name && !strcmp(f->name, fname)) + break; + f = f->next; + } + + if (!f) { + f = (struct file_lists *)malloc(sizeof(file_lists[0])); + if (!f) + return; + f->next = file_lists; + f->name = strdup(fname); + if (!f->name) { + SAFE_FREE(f); + return; + } + f->subfname = strdup(subfname); + if (!f->subfname) { + SAFE_FREE(f); + return; + } + file_lists = f; + f->modtime = file_modtime(subfname); + } else { + time_t t = file_modtime(subfname); + if (t) + f->modtime = t; + } +} + +/******************************************************************* + Check if a config file has changed date. +********************************************************************/ + +BOOL lp_file_list_changed(void) +{ + struct file_lists *f = file_lists; + DEBUG(6, ("lp_file_list_changed()\n")); + + while (f) { + pstring n2; + time_t mod_time; + + pstrcpy(n2, f->name); + standard_sub_basic(n2,sizeof(n2)); + + DEBUGADD(6, ("file %s -> %s last mod_time: %s\n", + f->name, n2, ctime(&f->modtime))); + + mod_time = file_modtime(n2); + + if (mod_time && ((f->modtime != mod_time) || (f->subfname == NULL) || (strcmp(n2, f->subfname) != 0))) { + DEBUGADD(6, + ("file %s modified: %s\n", n2, + ctime(&mod_time))); + f->modtime = mod_time; + SAFE_FREE(f->subfname); + f->subfname = strdup(n2); + return (True); + } + f = f->next; + } + return (False); +} + + +/*************************************************************************** + Do the work of sourcing in environment variable/value pairs. +***************************************************************************/ + +static BOOL source_env(char **lines) +{ + char *varval; + size_t len; + int i; + char *p; + + for (i = 0; lines[i]; i++) { + char *line = lines[i]; + + if ((len = strlen(line)) == 0) + continue; + + if (line[len - 1] == '\n') + line[--len] = '\0'; + + if ((varval = malloc(len + 1)) == NULL) { + DEBUG(0, ("source_env: Not enough memory!\n")); + return (False); + } + + DEBUG(4, ("source_env: Adding to environment: %s\n", line)); + strncpy(varval, line, len); + varval[len] = '\0'; + + p = strchr_m(line, (int)'='); + if (p == NULL) { + DEBUG(4, ("source_env: missing '=': %s\n", line)); + continue; + } + + if (putenv(varval)) { + DEBUG(0, ("source_env: Failed to put environment variable %s\n", + varval)); + continue; + } + + *p = '\0'; + p++; + DEBUG(4, ("source_env: getting var %s = %s\n", line, getenv(line))); + } + + DEBUG(4, ("source_env: returning successfully\n")); + return (True); +} + +/*************************************************************************** + Handle the source environment operation. +***************************************************************************/ + +static BOOL handle_source_env(const char *pszParmValue, char **ptr) +{ + pstring fname; + char *p = fname; + BOOL result; + char **lines; + + pstrcpy(fname, pszParmValue); + + standard_sub_basic(fname,sizeof(fname)); + + string_set(ptr, pszParmValue); + + DEBUG(4, ("handle_source_env: checking env type\n")); + + /* + * Filename starting with '|' means popen and read from stdin. + */ + + if (*p == '|') + lines = file_lines_pload(p + 1, NULL); + else + lines = file_lines_load(fname, NULL); + + if (!lines) { + DEBUG(0, ("handle_source_env: Failed to open file %s, Error was %s\n", + fname, strerror(errno))); + return (False); + } + + result = source_env(lines); + file_lines_free(lines); + + return (result); +} + +/*************************************************************************** + Handle the interpretation of the vfs object parameter. +*************************************************************************/ + +static BOOL handle_vfs_object(const char *pszParmValue, char **ptr) +{ + /* Set string value */ + + string_set(ptr, pszParmValue); + + /* Do any other initialisation required for vfs. Note that + anything done here may have linking repercussions in nmbd. */ + + return True; +} + +/*************************************************************************** + Handle the include operation. +***************************************************************************/ + +static BOOL handle_include(const char *pszParmValue, char **ptr) +{ + pstring fname; + pstrcpy(fname, pszParmValue); + + standard_sub_basic(fname,sizeof(fname)); + + add_to_file_list(pszParmValue, fname); + + string_set(ptr, fname); + + if (file_exist(fname, NULL)) + return (pm_process(fname, do_section, do_parameter)); + + DEBUG(2, ("Can't find include file %s\n", fname)); + + return (False); +} + +/*************************************************************************** + Handle the interpretation of the copy parameter. +***************************************************************************/ + +static BOOL handle_copy(const char *pszParmValue, char **ptr) +{ + BOOL bRetval; + int iTemp; + service serviceTemp; + + string_set(ptr, pszParmValue); + + init_service(&serviceTemp); + + bRetval = False; + + DEBUG(3, ("Copying service from service %s\n", pszParmValue)); + + if ((iTemp = getservicebyname(pszParmValue, &serviceTemp)) >= 0) { + if (iTemp == iServiceIndex) { + DEBUG(0, ("Can't copy service %s - unable to copy self!\n", pszParmValue)); + } else { + copy_service(ServicePtrs[iServiceIndex], + &serviceTemp, + ServicePtrs[iServiceIndex]->copymap); + bRetval = True; + } + } else { + DEBUG(0, ("Unable to copy service - source not found: %s\n", pszParmValue)); + bRetval = False; + } + + free_service(&serviceTemp); + return (bRetval); +} + +/*************************************************************************** + Handle winbind/non unix account uid and gid allocation parameters. The format of these + parameters is: + + [global] + + winbind uid = 1000-1999 + winbind gid = 700-899 + + We only do simple parsing checks here. The strings are parsed into useful + structures in the winbind daemon code. + +***************************************************************************/ + +/* Some lp_ routines to return winbind [ug]id information */ + +static uid_t winbind_uid_low, winbind_uid_high; +static gid_t winbind_gid_low, winbind_gid_high; +static uint32 non_unix_account_low, non_unix_account_high; + +BOOL lp_winbind_uid(uid_t *low, uid_t *high) +{ + if (winbind_uid_low == 0 || winbind_uid_high == 0) + return False; + + if (low) + *low = winbind_uid_low; + + if (high) + *high = winbind_uid_high; + + return True; +} + +BOOL lp_winbind_gid(gid_t *low, gid_t *high) +{ + if (winbind_gid_low == 0 || winbind_gid_high == 0) + return False; + + if (low) + *low = winbind_gid_low; + + if (high) + *high = winbind_gid_high; + + return True; +} + +BOOL lp_non_unix_account_range(uint32 *low, uint32 *high) +{ + if (non_unix_account_low == 0 || non_unix_account_high == 0) + return False; + + if (low) + *low = non_unix_account_low; + + if (high) + *high = non_unix_account_high; + + return True; +} + +/* Do some simple checks on "winbind [ug]id" parameter values */ + +static BOOL handle_winbind_uid(const char *pszParmValue, char **ptr) +{ + uint32 low, high; + + if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low) + return False; + + /* Parse OK */ + + string_set(ptr, pszParmValue); + + winbind_uid_low = low; + winbind_uid_high = high; + + return True; +} + +static BOOL handle_winbind_gid(const char *pszParmValue, char **ptr) +{ + uint32 low, high; + + if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low) + return False; + + /* Parse OK */ + + string_set(ptr, pszParmValue); + + winbind_gid_low = low; + winbind_gid_high = high; + + return True; +} + +/*************************************************************************** + Do some simple checks on "non unix account range" parameter values. +***************************************************************************/ + +static BOOL handle_non_unix_account_range(const char *pszParmValue, char **ptr) +{ + uint32 low, high; + + if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low) + return False; + + /* Parse OK */ + + string_set(ptr, pszParmValue); + + non_unix_account_low = low; + non_unix_account_high = high; + + return True; +} + +/*************************************************************************** + Handle the ldap machine suffix option. +***************************************************************************/ + +static BOOL handle_ldap_machine_suffix( const char *pszParmValue, char **ptr) +{ + pstring suffix; + + pstrcpy(suffix, pszParmValue); + + if (! *Globals.szLdapSuffix ) { + string_set( ptr, suffix ); + return True; + } + + if (! strstr(suffix, Globals.szLdapSuffix) ) { + if ( *pszParmValue ) + pstrcat(suffix, ","); + pstrcat(suffix, Globals.szLdapSuffix); + } + string_set( ptr, suffix ); + return True; +} + +/*************************************************************************** + Handle the ldap user suffix option. +***************************************************************************/ + +static BOOL handle_ldap_user_suffix( const char *pszParmValue, char **ptr) +{ + pstring suffix; + + pstrcpy(suffix, pszParmValue); + + if (! *Globals.szLdapSuffix ) { + string_set( ptr, suffix ); + return True; + } + + if (! strstr(suffix, Globals.szLdapSuffix) ) { + if ( *pszParmValue ) + pstrcat(suffix, ","); + pstrcat(suffix, Globals.szLdapSuffix); + } + string_set( ptr, suffix ); + return True; +} + +/*************************************************************************** + Handle setting ldap suffix and determines whether ldap machine suffix needs + to be set as well. +***************************************************************************/ + +static BOOL handle_ldap_suffix( const char *pszParmValue, char **ptr) +{ + pstring suffix; + pstring user_suffix; + pstring machine_suffix; + + pstrcpy(suffix, pszParmValue); + + if (! *Globals.szLdapMachineSuffix ) + string_set(&Globals.szLdapMachineSuffix, suffix); + if (! *Globals.szLdapUserSuffix ) + string_set(&Globals.szLdapUserSuffix, suffix); + + if (! strstr(Globals.szLdapMachineSuffix, suffix)) { + pstrcpy(machine_suffix, Globals.szLdapMachineSuffix); + if ( *Globals.szLdapMachineSuffix ) + pstrcat(machine_suffix, ","); + pstrcat(machine_suffix, suffix); + string_set(&Globals.szLdapMachineSuffix, machine_suffix); + } + + if (! strstr(Globals.szLdapUserSuffix, suffix)) { + pstrcpy(user_suffix, Globals.szLdapUserSuffix); + if ( *Globals.szLdapUserSuffix ) + pstrcat(user_suffix, ","); + pstrcat(user_suffix, suffix); + string_set(&Globals.szLdapUserSuffix, user_suffix); + } + + string_set(ptr, suffix); + + return True; +} + +static BOOL handle_acl_compatibility(const char *pszParmValue, char **ptr) +{ + if (strequal(pszParmValue, "auto")) + string_set(ptr, ""); + else if (strequal(pszParmValue, "winnt")) + string_set(ptr, "winnt"); + else if (strequal(pszParmValue, "win2k")) + string_set(ptr, "win2k"); + else + return False; + + return True; +} +/*************************************************************************** + Initialise a copymap. +***************************************************************************/ + +static void init_copymap(service * pservice) +{ + int i; + SAFE_FREE(pservice->copymap); + pservice->copymap = (BOOL *)malloc(sizeof(BOOL) * NUMPARAMETERS); + if (!pservice->copymap) + DEBUG(0, + ("Couldn't allocate copymap!! (size %d)\n", + (int)NUMPARAMETERS)); + else + for (i = 0; i < NUMPARAMETERS; i++) + pservice->copymap[i] = True; +} + +/*************************************************************************** + Return the local pointer to a parameter given the service number and the + pointer into the default structure. +***************************************************************************/ + +void *lp_local_ptr(int snum, void *ptr) +{ + return (void *)(((char *)ServicePtrs[snum]) + PTR_DIFF(ptr, &sDefault)); +} + + +/*************************************************************************** + Process a parametric option +***************************************************************************/ +static BOOL lp_do_parameter_parametric(int snum, const char *pszParmName, const char *pszParmValue, int flags) +{ + struct param_opt *paramo, *data; + char *name; + + name = strdup(pszParmName); + if (!name) return False; + + string_sub(name, " ", "", 0); + strlower(name); + + if (snum < 0) { + data = Globals.param_opt; + } else { + data = ServicePtrs[snum]->param_opt; + } + + /* Traverse destination */ + for (paramo=data; paramo; paramo=paramo->next) { + /* If we already have the option set, override it unless + it was a command line option and the new one isn't */ + if (strcmp(paramo->key, name) == 0) { + if ((paramo->flags & FLAG_CMDLINE) && + !(flags & FLAG_CMDLINE)) { + return True; + } + + free(paramo->value); + paramo->value = strdup(pszParmValue); + paramo->flags = flags; + free(name); + return True; + } + } + + paramo = smb_xmalloc(sizeof(*paramo)); + paramo->key = strdup(name); + paramo->value = strdup(pszParmValue); + paramo->flags = flags; + if (snum < 0) { + DLIST_ADD(Globals.param_opt, paramo); + } else { + DLIST_ADD(ServicePtrs[snum]->param_opt, paramo); + } + + free(name); + + return True; +} + +/*************************************************************************** + Process a parameter for a particular service number. If snum < 0 + then assume we are in the globals. +***************************************************************************/ +BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue) +{ + int parmnum, i; + void *parm_ptr = NULL; /* where we are going to store the result */ + void *def_ptr = NULL; + + parmnum = map_parameter(pszParmName); + + if (parmnum < 0) { + if (strchr(pszParmName, ':')) { + return lp_do_parameter_parametric(snum, pszParmName, pszParmValue, 0); + } + DEBUG(0, ("Ignoring unknown parameter \"%s\"\n", pszParmName)); + return (True); + } + + if (parm_table[parmnum].flags & FLAG_DEPRECATED) { + DEBUG(1, ("WARNING: The \"%s\" option is deprecated\n", + pszParmName)); + } + + /* if the flag has been set on the command line, then don't allow override, + but don't report an error */ + if (parm_table[parmnum].flags & FLAG_CMDLINE) { + return True; + } + + def_ptr = parm_table[parmnum].ptr; + + /* we might point at a service, the default service or a global */ + if (snum < 0) { + parm_ptr = def_ptr; + } else { + if (parm_table[parmnum].class == P_GLOBAL) { + DEBUG(0, + ("Global parameter %s found in service section!\n", + pszParmName)); + return (True); + } + parm_ptr = + ((char *)ServicePtrs[snum]) + PTR_DIFF(def_ptr, + &sDefault); + } + + if (snum >= 0) { + if (!ServicePtrs[snum]->copymap) + init_copymap(ServicePtrs[snum]); + + /* this handles the aliases - set the copymap for other entries with + the same data pointer */ + for (i = 0; parm_table[i].label; i++) + if (parm_table[i].ptr == parm_table[parmnum].ptr) + ServicePtrs[snum]->copymap[i] = False; + } + + /* if it is a special case then go ahead */ + if (parm_table[parmnum].special) { + parm_table[parmnum].special(pszParmValue, (char **)parm_ptr); + return (True); + } + + /* now switch on the type of variable it is */ + switch (parm_table[parmnum].type) + { + case P_BOOL: + set_boolean(parm_ptr, pszParmValue); + break; + + case P_BOOLREV: + set_boolean(parm_ptr, pszParmValue); + *(BOOL *)parm_ptr = !*(BOOL *)parm_ptr; + break; + + case P_INTEGER: + *(int *)parm_ptr = atoi(pszParmValue); + break; + + case P_CHAR: + *(char *)parm_ptr = *pszParmValue; + break; + + case P_OCTAL: + sscanf(pszParmValue, "%o", (int *)parm_ptr); + break; + + case P_LIST: + *(char ***)parm_ptr = str_list_make(pszParmValue, NULL); + break; + + case P_STRING: + string_set(parm_ptr, pszParmValue); + break; + + case P_USTRING: + string_set(parm_ptr, pszParmValue); + strupper(*(char **)parm_ptr); + break; + + case P_ENUM: + for (i = 0; parm_table[parmnum].enum_list[i].name; i++) { + if (strequal + (pszParmValue, + parm_table[parmnum].enum_list[i].name)) { + *(int *)parm_ptr = + parm_table[parmnum]. + enum_list[i].value; + break; + } + } + break; + case P_SEP: + break; + } + + return (True); +} + +/*************************************************************************** + Process a parameter. +***************************************************************************/ + +static BOOL do_parameter(const char *pszParmName, const char *pszParmValue) +{ + if (!bInGlobalSection && bGlobalOnly) + return (True); + + DEBUGADD(4, ("doing parameter %s = %s\n", pszParmName, pszParmValue)); + + return (lp_do_parameter(bInGlobalSection ? -2 : iServiceIndex, + pszParmName, pszParmValue)); +} + + +/* + set a parameter from the commandline - this is called from command line parameter + parsing code. It sets the parameter then marks the parameter as unable to be modified + by smb.conf processing +*/ +BOOL lp_set_cmdline(const char *pszParmName, const char *pszParmValue) +{ + int parmnum = map_parameter(pszParmName); + + if (parmnum < 0 && strchr(pszParmName, ':')) { + /* set a parametric option */ + return lp_do_parameter_parametric(-1, pszParmName, pszParmValue, FLAG_CMDLINE); + } + + /* reset the CMDLINE flag in case this has been called before */ + parm_table[parmnum].flags &= ~FLAG_CMDLINE; + + if (!lp_do_parameter(-2, pszParmName, pszParmValue)) { + return False; + } + + parm_table[parmnum].flags |= FLAG_CMDLINE; + return True; +} + +/*************************************************************************** + Print a parameter of the specified type. +***************************************************************************/ + +static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) +{ + int i; + switch (p->type) + { + case P_ENUM: + for (i = 0; p->enum_list[i].name; i++) { + if (*(int *)ptr == p->enum_list[i].value) { + fprintf(f, "%s", + p->enum_list[i].name); + break; + } + } + break; + + case P_BOOL: + fprintf(f, "%s", BOOLSTR(*(BOOL *)ptr)); + break; + + case P_BOOLREV: + fprintf(f, "%s", BOOLSTR(!*(BOOL *)ptr)); + break; + + case P_INTEGER: + fprintf(f, "%d", *(int *)ptr); + break; + + case P_CHAR: + fprintf(f, "%c", *(char *)ptr); + break; + + case P_OCTAL: + fprintf(f, "%s", octal_string(*(int *)ptr)); + break; + + case P_LIST: + if ((char ***)ptr && *(char ***)ptr) { + char **list = *(char ***)ptr; + + for (; *list; list++) + fprintf(f, "%s%s", *list, + ((*(list+1))?", ":"")); + } + break; + + case P_STRING: + case P_USTRING: + if (*(char **)ptr) { + fprintf(f, "%s", *(char **)ptr); + } + break; + case P_SEP: + break; + } +} + +/*************************************************************************** + Check if two parameters are equal. +***************************************************************************/ + +static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) +{ + switch (type) { + case P_BOOL: + case P_BOOLREV: + return (*((BOOL *)ptr1) == *((BOOL *)ptr2)); + + case P_INTEGER: + case P_ENUM: + case P_OCTAL: + return (*((int *)ptr1) == *((int *)ptr2)); + + case P_CHAR: + return (*((char *)ptr1) == *((char *)ptr2)); + + case P_LIST: + return str_list_compare(*(char ***)ptr1, *(char ***)ptr2); + + case P_STRING: + case P_USTRING: + { + char *p1 = *(char **)ptr1, *p2 = *(char **)ptr2; + if (p1 && !*p1) + p1 = NULL; + if (p2 && !*p2) + p2 = NULL; + return (p1 == p2 || strequal(p1, p2)); + } + case P_SEP: + break; + } + return (False); +} + +/*************************************************************************** + Process a new section (service). At this stage all sections are services. + Later we'll have special sections that permit server parameters to be set. + Returns True on success, False on failure. +***************************************************************************/ + +static BOOL do_section(const char *pszSectionName) +{ + BOOL bRetval; + BOOL isglobal = ((strwicmp(pszSectionName, GLOBAL_NAME) == 0) || + (strwicmp(pszSectionName, GLOBAL_NAME2) == 0)); + bRetval = False; + + /* if we've just struck a global section, note the fact. */ + bInGlobalSection = isglobal; + + /* check for multiple global sections */ + if (bInGlobalSection) { + DEBUG(3, ("Processing section \"[%s]\"\n", pszSectionName)); + return (True); + } + + if (!bInGlobalSection && bGlobalOnly) + return (True); + + /* if we have a current service, tidy it up before moving on */ + bRetval = True; + + if (iServiceIndex >= 0) + bRetval = service_ok(iServiceIndex); + + /* if all is still well, move to the next record in the services array */ + if (bRetval) { + /* We put this here to avoid an odd message order if messages are */ + /* issued by the post-processing of a previous section. */ + DEBUG(2, ("Processing section \"[%s]\"\n", pszSectionName)); + + if ((iServiceIndex = add_a_service(&sDefault, pszSectionName)) + < 0) { + DEBUG(0, ("Failed to add a new service\n")); + return (False); + } + } + + return (bRetval); +} + + +/*************************************************************************** + Determine if a partcular base parameter is currentl set to the default value. +***************************************************************************/ + +static BOOL is_default(int i) +{ + if (!defaults_saved) + return False; + switch (parm_table[i].type) { + case P_LIST: + return str_list_compare (parm_table[i].def.lvalue, + *(char ***)parm_table[i].ptr); + case P_STRING: + case P_USTRING: + return strequal(parm_table[i].def.svalue, + *(char **)parm_table[i].ptr); + case P_BOOL: + case P_BOOLREV: + return parm_table[i].def.bvalue == + *(BOOL *)parm_table[i].ptr; + case P_CHAR: + return parm_table[i].def.cvalue == + *(char *)parm_table[i].ptr; + case P_INTEGER: + case P_OCTAL: + case P_ENUM: + return parm_table[i].def.ivalue == + *(int *)parm_table[i].ptr; + case P_SEP: + break; + } + return False; +} + +/*************************************************************************** +Display the contents of the global structure. +***************************************************************************/ + +static void dump_globals(FILE *f) +{ + int i; + struct param_opt *data; + + fprintf(f, "# Global parameters\n[global]\n"); + + for (i = 0; parm_table[i].label; i++) + if (parm_table[i].class == P_GLOBAL && + parm_table[i].ptr && + (i == 0 || (parm_table[i].ptr != parm_table[i - 1].ptr))) { + if (defaults_saved && is_default(i)) + continue; + fprintf(f, "\t%s = ", parm_table[i].label); + print_parameter(&parm_table[i], parm_table[i].ptr, f); + fprintf(f, "\n"); + } + if (Globals.param_opt != NULL) { + data = Globals.param_opt; + while(data) { + fprintf(f, "\t%s = %s\n", data->key, data->value); + data = data->next; + } + } + +} + +/*************************************************************************** + Return True if a local parameter is currently set to the global default. +***************************************************************************/ + +BOOL lp_is_default(int snum, struct parm_struct *parm) +{ + int pdiff = PTR_DIFF(parm->ptr, &sDefault); + + return equal_parameter(parm->type, + ((char *)ServicePtrs[snum]) + pdiff, + ((char *)&sDefault) + pdiff); +} + +/*************************************************************************** + Display the contents of a single services record. +***************************************************************************/ + +static void dump_a_service(service * pService, FILE * f) +{ + int i; + struct param_opt *data; + + if (pService != &sDefault) + fprintf(f, "\n[%s]\n", pService->szService); + + for (i = 0; parm_table[i].label; i++) + if (parm_table[i].class == P_LOCAL && + parm_table[i].ptr && + (*parm_table[i].label != '-') && + (i == 0 || (parm_table[i].ptr != parm_table[i - 1].ptr))) { + int pdiff = PTR_DIFF(parm_table[i].ptr, &sDefault); + + if (pService == &sDefault) { + if (defaults_saved && is_default(i)) + continue; + } else { + if (equal_parameter(parm_table[i].type, + ((char *)pService) + + pdiff, + ((char *)&sDefault) + + pdiff)) + continue; + } + + fprintf(f, "\t%s = ", parm_table[i].label); + print_parameter(&parm_table[i], + ((char *)pService) + pdiff, f); + fprintf(f, "\n"); + } + if (pService->param_opt != NULL) { + data = pService->param_opt; + while(data) { + fprintf(f, "\t%s = %s\n", data->key, data->value); + data = data->next; + } + } +} + + +/*************************************************************************** + Return info about the next service in a service. snum==-1 gives the globals. + Return NULL when out of parameters. +***************************************************************************/ + +struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters) +{ + if (snum == -1) { + /* do the globals */ + for (; parm_table[*i].label; (*i)++) { + if (parm_table[*i].class == P_SEPARATOR) + return &parm_table[(*i)++]; + + if (!parm_table[*i].ptr + || (*parm_table[*i].label == '-')) + continue; + + if ((*i) > 0 + && (parm_table[*i].ptr == + parm_table[(*i) - 1].ptr)) + continue; + + return &parm_table[(*i)++]; + } + } else { + service *pService = ServicePtrs[snum]; + + for (; parm_table[*i].label; (*i)++) { + if (parm_table[*i].class == P_SEPARATOR) + return &parm_table[(*i)++]; + + if (parm_table[*i].class == P_LOCAL && + parm_table[*i].ptr && + (*parm_table[*i].label != '-') && + ((*i) == 0 || + (parm_table[*i].ptr != + parm_table[(*i) - 1].ptr))) + { + int pdiff = + PTR_DIFF(parm_table[*i].ptr, + &sDefault); + + if (allparameters || + !equal_parameter(parm_table[*i].type, + ((char *)pService) + + pdiff, + ((char *)&sDefault) + + pdiff)) + { + return &parm_table[(*i)++]; + } + } + } + } + + return NULL; +} + + +#if 0 +/*************************************************************************** + Display the contents of a single copy structure. +***************************************************************************/ +static void dump_copy_map(BOOL *pcopymap) +{ + int i; + if (!pcopymap) + return; + + printf("\n\tNon-Copied parameters:\n"); + + for (i = 0; parm_table[i].label; i++) + if (parm_table[i].class == P_LOCAL && + parm_table[i].ptr && !pcopymap[i] && + (i == 0 || (parm_table[i].ptr != parm_table[i - 1].ptr))) + { + printf("\t\t%s\n", parm_table[i].label); + } +} +#endif + +/*************************************************************************** + Return TRUE if the passed service number is within range. +***************************************************************************/ + +BOOL lp_snum_ok(int iService) +{ + return (LP_SNUM_OK(iService) && ServicePtrs[iService]->bAvailable); +} + +/*************************************************************************** + Auto-load some home services. +***************************************************************************/ + +static void lp_add_auto_services(char *str) +{ + char *s; + char *p; + int homes; + + if (!str) + return; + + s = strdup(str); + if (!s) + return; + + homes = lp_servicenumber(HOMES_NAME); + + for (p = strtok(s, LIST_SEP); p; p = strtok(NULL, LIST_SEP)) { + char *home = get_user_home_dir(p); + + if (lp_servicenumber(p) >= 0) + continue; + + if (home && homes >= 0) + lp_add_home(p, homes, p, home); + } + SAFE_FREE(s); +} + +/*************************************************************************** + Auto-load one printer. +***************************************************************************/ + +void lp_add_one_printer(char *name, char *comment) +{ + int printers = lp_servicenumber(PRINTERS_NAME); + int i; + + if (lp_servicenumber(name) < 0) { + lp_add_printer(name, printers); + if ((i = lp_servicenumber(name)) >= 0) { + string_set(&ServicePtrs[i]->comment, comment); + ServicePtrs[i]->autoloaded = True; + } + } +} + +/*************************************************************************** + Announce ourselves as a print server. +***************************************************************************/ + +void update_server_announce_as_printserver(void) +{ + default_server_announce |= SV_TYPE_PRINTQ_SERVER; +} + +/*************************************************************************** + Have we loaded a services file yet? +***************************************************************************/ + +BOOL lp_loaded(void) +{ + return (bLoaded); +} + +/*************************************************************************** + Unload unused services. +***************************************************************************/ + +void lp_killunused(struct server_context *smb, BOOL (*snumused) (struct server_context *, int)) +{ + int i; + for (i = 0; i < iNumServices; i++) { + if (!VALID(i)) + continue; + + if (!snumused || !snumused(smb, i)) { + ServicePtrs[i]->valid = False; + free_service(ServicePtrs[i]); + } + } +} + +/*************************************************************************** + Unload a service. +***************************************************************************/ + +void lp_killservice(int iServiceIn) +{ + if (VALID(iServiceIn)) { + ServicePtrs[iServiceIn]->valid = False; + free_service(ServicePtrs[iServiceIn]); + } +} + +/*************************************************************************** + Save the curent values of all global and sDefault parameters into the + defaults union. This allows swat and testparm to show only the + changed (ie. non-default) parameters. +***************************************************************************/ + +static void lp_save_defaults(void) +{ + int i; + for (i = 0; parm_table[i].label; i++) { + if (i > 0 && parm_table[i].ptr == parm_table[i - 1].ptr) + continue; + switch (parm_table[i].type) { + case P_LIST: + str_list_copy(&(parm_table[i].def.lvalue), + *(const char ***)parm_table[i].ptr); + break; + case P_STRING: + case P_USTRING: + if (parm_table[i].ptr) { + parm_table[i].def.svalue = strdup(*(char **)parm_table[i].ptr); + } else { + parm_table[i].def.svalue = NULL; + } + break; + case P_BOOL: + case P_BOOLREV: + parm_table[i].def.bvalue = + *(BOOL *)parm_table[i].ptr; + break; + case P_CHAR: + parm_table[i].def.cvalue = + *(char *)parm_table[i].ptr; + break; + case P_INTEGER: + case P_OCTAL: + case P_ENUM: + parm_table[i].def.ivalue = + *(int *)parm_table[i].ptr; + break; + case P_SEP: + break; + } + } + defaults_saved = True; +} + +/******************************************************************* + Set the server type we will announce as via nmbd. +********************************************************************/ + +static void set_server_role(void) +{ + server_role = ROLE_STANDALONE; + + switch (lp_security()) { + case SEC_SHARE: + if (lp_domain_logons()) + DEBUG(0, ("Server's Role (logon server) conflicts with share-level security\n")); + break; + case SEC_SERVER: + case SEC_DOMAIN: + case SEC_ADS: + if (lp_domain_logons()) { + server_role = ROLE_DOMAIN_PDC; + break; + } + server_role = ROLE_DOMAIN_MEMBER; + break; + case SEC_USER: + if (lp_domain_logons()) { + + if (Globals.bDomainMaster) /* auto or yes */ + server_role = ROLE_DOMAIN_PDC; + else + server_role = ROLE_DOMAIN_BDC; + } + break; + default: + DEBUG(0, ("Server's Role undefined due to unknown security mode\n")); + break; + } + + DEBUG(10, ("set_server_role: role = ")); + + switch(server_role) { + case ROLE_STANDALONE: + DEBUGADD(10, ("ROLE_STANDALONE\n")); + break; + case ROLE_DOMAIN_MEMBER: + DEBUGADD(10, ("ROLE_DOMAIN_MEMBER\n")); + break; + case ROLE_DOMAIN_BDC: + DEBUGADD(10, ("ROLE_DOMAIN_BDC\n")); + break; + case ROLE_DOMAIN_PDC: + DEBUGADD(10, ("ROLE_DOMAIN_PDC\n")); + break; + } +} + +/*************************************************************************** + Load the services array from the services file. Return True on success, + False on failure. +***************************************************************************/ + +BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, + BOOL add_ipc) +{ + pstring n2; + BOOL bRetval; + struct param_opt *data; + + pstrcpy(n2, pszFname); + standard_sub_basic(n2,sizeof(n2)); + + add_to_file_list(pszFname, n2); + + bRetval = False; + + DEBUG(0, ("lp_load: refreshing parameters from %s\n", pszFname)); + + bInGlobalSection = True; + bGlobalOnly = global_only; + + init_globals(); + + if (save_defaults) + { + lp_save_defaults(); + } + + if (Globals.param_opt != NULL) { + struct param_opt *next; + for (data=Globals.param_opt; data; data=next) { + next = data->next; + if (data->flags & FLAG_CMDLINE) continue; + free(data->key); + free(data->value); + DLIST_REMOVE(Globals.param_opt, data); + free(data); + } + } + + /* We get sections first, so have to start 'behind' to make up */ + iServiceIndex = -1; + bRetval = pm_process(n2, do_section, do_parameter); + + /* finish up the last section */ + DEBUG(4, ("pm_process() returned %s\n", BOOLSTR(bRetval))); + if (bRetval) + if (iServiceIndex >= 0) + bRetval = service_ok(iServiceIndex); + + lp_add_auto_services(lp_auto_services()); + + if (add_ipc) { + /* When 'restrict anonymous = 2' guest connections to ipc$ + are denied */ + lp_add_ipc("IPC$", (lp_restrict_anonymous() < 2)); + lp_add_ipc("ADMIN$", False); + } + + set_server_role(); + set_default_server_announce_type(); + + bLoaded = True; + + /* Now we check bWINSsupport and set szWINSserver to 127.0.0.1 */ + /* if bWINSsupport is true and we are in the client */ + if (in_client && Globals.bWINSsupport) { + lp_do_parameter(-1, "wins server", "127.0.0.1"); + } + + init_iconv(); + + return (bRetval); +} + +/*************************************************************************** + Reset the max number of services. +***************************************************************************/ + +void lp_resetnumservices(void) +{ + iNumServices = 0; +} + +/*************************************************************************** + Return the max number of services. +***************************************************************************/ + +int lp_numservices(void) +{ + return (iNumServices); +} + +/*************************************************************************** +Display the contents of the services array in human-readable form. +***************************************************************************/ + +void lp_dump(FILE *f, BOOL show_defaults, int maxtoprint) +{ + int iService; + + if (show_defaults) + defaults_saved = False; + + dump_globals(f); + + dump_a_service(&sDefault, f); + + for (iService = 0; iService < maxtoprint; iService++) + lp_dump_one(f, show_defaults, iService); +} + +/*************************************************************************** +Display the contents of one service in human-readable form. +***************************************************************************/ + +void lp_dump_one(FILE * f, BOOL show_defaults, int snum) +{ + if (VALID(snum)) { + if (ServicePtrs[snum]->szService[0] == '\0') + return; + dump_a_service(ServicePtrs[snum], f); + } +} + +/*************************************************************************** +Return the number of the service with the given name, or -1 if it doesn't +exist. Note that this is a DIFFERENT ANIMAL from the internal function +getservicebyname()! This works ONLY if all services have been loaded, and +does not copy the found service. +***************************************************************************/ + +int lp_servicenumber(const char *pszServiceName) +{ + int iService; + fstring serviceName; + + + for (iService = iNumServices - 1; iService >= 0; iService--) { + if (VALID(iService) && ServicePtrs[iService]->szService) { + /* + * The substitution here is used to support %U is + * service names + */ + fstrcpy(serviceName, ServicePtrs[iService]->szService); + standard_sub_basic(serviceName,sizeof(serviceName)); + if (strequal(serviceName, pszServiceName)) + break; + } + } + + if (iService < 0) + DEBUG(7,("lp_servicenumber: couldn't find %s\n", pszServiceName)); + + return (iService); +} + +/******************************************************************* + A useful volume label function. +********************************************************************/ +char *volume_label(int snum) +{ + char *ret = lp_volume(snum); + if (!*ret) + return lp_servicename(snum); + return (ret); +} + + +/******************************************************************* + Set the server type we will announce as via nmbd. +********************************************************************/ + +static void set_default_server_announce_type(void) +{ + default_server_announce = 0; + default_server_announce |= SV_TYPE_WORKSTATION; + default_server_announce |= SV_TYPE_SERVER; + default_server_announce |= SV_TYPE_SERVER_UNIX; + + switch (lp_announce_as()) { + case ANNOUNCE_AS_NT_SERVER: + default_server_announce |= SV_TYPE_SERVER_NT; + /* fall through... */ + case ANNOUNCE_AS_NT_WORKSTATION: + default_server_announce |= SV_TYPE_NT; + break; + case ANNOUNCE_AS_WIN95: + default_server_announce |= SV_TYPE_WIN95_PLUS; + break; + case ANNOUNCE_AS_WFW: + default_server_announce |= SV_TYPE_WFW; + break; + default: + break; + } + + switch (lp_server_role()) { + case ROLE_DOMAIN_MEMBER: + default_server_announce |= SV_TYPE_DOMAIN_MEMBER; + break; + case ROLE_DOMAIN_PDC: + default_server_announce |= SV_TYPE_DOMAIN_CTRL; + break; + case ROLE_DOMAIN_BDC: + default_server_announce |= SV_TYPE_DOMAIN_BAKCTRL; + break; + case ROLE_STANDALONE: + default: + break; + } + if (lp_time_server()) + default_server_announce |= SV_TYPE_TIME_SOURCE; + + if (lp_host_msdfs()) + default_server_announce |= SV_TYPE_DFS_SERVER; +} + +/*********************************************************** + returns role of Samba server +************************************************************/ + +int lp_server_role(void) +{ + return server_role; +} + +/*********************************************************** + If we are PDC then prefer us as DMB +************************************************************/ + +BOOL lp_domain_master(void) +{ + if (Globals.bDomainMaster == Auto) + return (lp_server_role() == ROLE_DOMAIN_PDC); + + return Globals.bDomainMaster; +} + +/*********************************************************** + If we are DMB then prefer us as LMB +************************************************************/ + +BOOL lp_preferred_master(void) +{ + if (Globals.bPreferredMaster == Auto) + return (lp_local_master() && lp_domain_master()); + + return Globals.bPreferredMaster; +} + +/******************************************************************* + Remove a service. +********************************************************************/ + +void lp_remove_service(int snum) +{ + ServicePtrs[snum]->valid = False; +} + +/******************************************************************* + Copy a service. +********************************************************************/ + +void lp_copy_service(int snum, const char *new_name) +{ + char *oldname = lp_servicename(snum); + do_section(new_name); + if (snum >= 0) { + snum = lp_servicenumber(new_name); + if (snum >= 0) + lp_do_parameter(snum, "copy", oldname); + } +} + + +/******************************************************************* + Get the default server type we will announce as via nmbd. +********************************************************************/ + +int lp_default_server_announce(void) +{ + return default_server_announce; +} + +/******************************************************************* + Split the announce version into major and minor numbers. +********************************************************************/ + +int lp_major_announce_version(void) +{ + static BOOL got_major = False; + static int major_version = DEFAULT_MAJOR_VERSION; + char *vers; + char *p; + + if (got_major) + return major_version; + + got_major = True; + if ((vers = lp_announce_version()) == NULL) + return major_version; + + if ((p = strchr_m(vers, '.')) == 0) + return major_version; + + *p = '\0'; + major_version = atoi(vers); + return major_version; +} + +int lp_minor_announce_version(void) +{ + static BOOL got_minor = False; + static int minor_version = DEFAULT_MINOR_VERSION; + char *vers; + char *p; + + if (got_minor) + return minor_version; + + got_minor = True; + if ((vers = lp_announce_version()) == NULL) + return minor_version; + + if ((p = strchr_m(vers, '.')) == 0) + return minor_version; + + p++; + minor_version = atoi(p); + return minor_version; +} + +const char *lp_printername(int snum) +{ + const char *ret = _lp_printername(snum); + if (ret == NULL || (ret != NULL && *ret == '\0')) + ret = lp_const_servicename(snum); + + return ret; +} + + +/******************************************************************* + Return the max print jobs per queue. +********************************************************************/ + +int lp_maxprintjobs(int snum) +{ + int maxjobs = LP_SNUM_OK(snum) ? ServicePtrs[snum]->iMaxPrintJobs : sDefault.iMaxPrintJobs; + if (maxjobs <= 0 || maxjobs >= PRINT_MAX_JOBID) + maxjobs = PRINT_MAX_JOBID - 1; + + return maxjobs; +} -- cgit From dbe7b0c402f1d447c6eb4f7f35ad58d2fc2eae49 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 15 Aug 2003 19:09:52 +0000 Subject: fix handling of parametric smb.conf parms with embedded spaces (This used to be commit dad7d285abe853653e72ba2e5ed03092061e9d65) --- source4/param/loadparm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 89ba792600..456a57c6fa 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -3011,10 +3011,13 @@ static BOOL lp_do_parameter_parametric(int snum, const char *pszParmName, const struct param_opt *paramo, *data; char *name; + while (isspace(*pszParmName)) { + pszParmName++; + } + name = strdup(pszParmName); if (!name) return False; - string_sub(name, " ", "", 0); strlower(name); if (snum < 0) { -- cgit From af780b0f01488e025b9257aa2f9aa34d42087745 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 18 Sep 2003 01:34:59 +0000 Subject: Quieten a compiler warning. (This used to be commit 9edf634569d89b152fc73eae70245cbf338b498d) --- source4/param/loadparm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 456a57c6fa..9aceaaa12a 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1481,8 +1481,10 @@ void lp_talloc_free(void) static char *lp_string(const char *s) { +#if 0 /* until REWRITE done to make thread-safe */ size_t len = s ? strlen(s) : 0; char *ret; +#endif /* The follow debug is useful for tracking down memory problems especially if you have an inner loop that is calling a lp_*() @@ -1492,6 +1494,7 @@ static char *lp_string(const char *s) #if 0 DEBUG(10, ("lp_string(%s)\n", s)); #endif + #if 0 /* until REWRITE done to make thread-safe */ if (!lp_talloc) lp_talloc = talloc_init("lp_talloc"); -- cgit From c123c8454142d17d2884ae9dd951b7f2a0b1a343 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 26 Nov 2003 02:08:41 +0000 Subject: fixed some memory leaks in the dcerpc use of ntlmssp signing (This used to be commit abbc9993b8f7eb9f57e079db1d0b170d0b9aa443) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 9aceaaa12a..6ec4842c6d 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -3801,7 +3801,7 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, bRetval = False; - DEBUG(0, ("lp_load: refreshing parameters from %s\n", pszFname)); + DEBUG(2, ("lp_load: refreshing parameters from %s\n", pszFname)); bInGlobalSection = True; bGlobalOnly = global_only; -- cgit From 7efa19cd2285617dcb39d67a81a821b5119c3748 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 17 Dec 2003 02:06:44 +0000 Subject: added a smb.conf flag "rpc big endian" that tells our rpc server to send packets in bigendian format. (This used to be commit 44df662960e662a55a9f27627f838771503a7a59) --- source4/param/loadparm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 6ec4842c6d..aff4a4f12a 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -278,6 +278,7 @@ typedef struct BOOL bUnixExtensions; BOOL bDisableNetbios; BOOL bKernelChangeNotify; + BOOL bRpcBigEndian; int restrict_anonymous; int name_cache_timeout; BOOL client_signing; @@ -869,6 +870,7 @@ static struct parm_struct parm_table[] = { {"use spnego", P_BOOL, P_GLOBAL, &Globals.bUseSpnego, NULL, NULL, FLAG_DEVELOPER}, {"client signing", P_BOOL, P_GLOBAL, &Globals.client_signing, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"client use spnego", P_BOOL, P_GLOBAL, &Globals.bClientUseSpnego, NULL, NULL, FLAG_DEVELOPER}, + {"rpc big endian", P_BOOL, P_GLOBAL, &Globals.bRpcBigEndian, NULL, NULL, FLAG_DEVELOPER}, {"Tuning Options", P_SEP, P_SEPARATOR}, @@ -1700,6 +1702,7 @@ FN_GLOBAL_BOOL(lp_use_spnego, &Globals.bUseSpnego) FN_GLOBAL_BOOL(lp_client_use_spnego, &Globals.bClientUseSpnego) FN_GLOBAL_BOOL(lp_hostname_lookups, &Globals.bHostnameLookups) FN_GLOBAL_BOOL(lp_kernel_change_notify, &Globals.bKernelChangeNotify) +FN_GLOBAL_BOOL(lp_rpc_big_endian, &Globals.bRpcBigEndian) FN_GLOBAL_INTEGER(lp_os_level, &Globals.os_level) FN_GLOBAL_INTEGER(lp_max_ttl, &Globals.max_ttl) FN_GLOBAL_INTEGER(lp_max_wins_ttl, &Globals.max_wins_ttl) -- cgit From 7e6cf43756b7643e2f0ee7ada5076f36f3a24bb7 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 8 Jan 2004 22:55:27 +0000 Subject: This patch adds a better dcerpc server infastructure. 1.) We now register endpoint servers add startup via register_backend() and later use the smb.conf 'dcerpc endpoint servers' parameter to setup the dcesrv_context 2.) each endpoint server can register at context creation time as much interfaces as it wants (multiple interfaces on one endpoint are supported!) (NOTE: there's a difference between 'endpoint server' and 'endpoint'! for details look at rpc_server/dcesrv_server.h) 3.) one endpoint can have a security descriptor registered to it self this will be checked in the future when a client wants to connect to an smb pipe endpoint. 4.) we now have a 'remote' endpoint server, which works like the ntvfs_cifs module it takes this options in the [globals] section: dcerpc remote:interfaces = srvsvc, winreg, w32time, epmapper dcerpc remote:binding = ... dcerpc remote:user = ... dcerpc remote:password = ... 5.) we currently have tree endpoint servers: epmapper, rpcecho and remote the default for the 'dcerpc endpiont servers = epmapper, rpcecho' for testing you can also do dcerpc endpoint servers = rpcecho, remote, epmapper dcerpc remote:interfaces = srvsvc, samr, netlogon 6,) please notice the the epmapper now only returns NO_ENTRIES (but I think we'll find a solution for this too:-) 7.) also there're some other stuff left, but step by step :-) This patch also includes updates for the register_subsystem() , ntvfs_init(), and some other funtions to check for duplicate subsystem registration metze (hmmm, my first large commit...I hope it works as supposed :-) (This used to be commit 917e45dafd5be4c2cd90ff425b8d6f8403122349) --- source4/param/loadparm.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index aff4a4f12a..9052fe4409 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -151,6 +151,7 @@ typedef struct char *szAbortShutdownScript; char *szWINSHook; char *szWINSPartners; + char **dcerpc_ep_servers; #ifdef WITH_UTMP char *szUtmpDir; char *szWtmpDir; @@ -738,6 +739,7 @@ static struct parm_struct parm_table[] = { {"interfaces", P_LIST, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"ntvfs handler", P_STRING, P_LOCAL, &sDefault.ntvfs_handler, NULL, NULL, FLAG_ADVANCED}, + {"dcerpc endpoint servers", P_LIST, P_GLOBAL, &Globals.dcerpc_ep_servers, NULL, NULL, FLAG_ADVANCED}, {"Security Options", P_SEP, P_SEPARATOR}, @@ -1270,6 +1272,8 @@ static void init_globals(void) string_set(&sDefault.fstype, FSTYPE_STRING); string_set(&sDefault.ntvfs_handler, "default"); + Globals.dcerpc_ep_servers = str_list_make("epmapper rpcecho", NULL); + string_set(&Globals.szSMBPasswdFile, dyn_SMB_PASSWD_FILE); string_set(&Globals.szPrivateDir, dyn_PRIVATE_DIR); @@ -1571,6 +1575,7 @@ FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) FN_GLOBAL_STRING(lp_mangling_method, &Globals.szManglingMethod) FN_GLOBAL_INTEGER(lp_mangle_prefix, &Globals.mangle_prefix) +FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) #ifdef WITH_UTMP FN_GLOBAL_STRING(lp_utmpdir, &Globals.szUtmpDir) FN_GLOBAL_STRING(lp_wtmpdir, &Globals.szWtmpDir) -- cgit From e06687eb174d5ca785a6c67fa63a99ea019182c4 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 28 Jan 2004 12:47:52 +0000 Subject: merge the version.h autogeneration stuff from 3.0 metze (This used to be commit 24dc237e109f6dce69814b22e0fb7878a7f6bfa8) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 9052fe4409..41470cf3f1 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1300,7 +1300,7 @@ static void init_globals(void) string_set(&Globals.szLockDir, dyn_LOCKDIR); string_set(&Globals.szSocketAddress, "0.0.0.0"); pstrcpy(s, "Samba "); - pstrcat(s, SAMBA_VERSION); + pstrcat(s, SAMBA_VERSION_STRING); string_set(&Globals.szServerString, s); slprintf(s, sizeof(s) - 1, "%d.%d", DEFAULT_MAJOR_VERSION, DEFAULT_MINOR_VERSION); -- cgit From 1aceddaec4abd9d52c28e77957a7212706ad66ff Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 29 Jan 2004 09:47:39 +0000 Subject: remove a lot of unused smb.conf options I think we should remove a view more, but step by step:-) metze (This used to be commit 534ccc5332d16c395847885e3b793d10b67b9855) --- source4/param/loadparm.c | 667 ++--------------------------------------------- 1 file changed, 16 insertions(+), 651 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 41470cf3f1..64b316bbbd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -94,16 +94,10 @@ typedef struct char *unix_charset; char *display_charset; char *szPrintcapname; - char *szEnumPortsCommand; - char *szAddPrinterCommand; - char *szDeletePrinterCommand; - char *szOs2DriverMap; char *szLockDir; char *szPidDir; char *szRootdir; char *szDefaultService; - char *szDfree; - char *szMsgCommand; char *szHostsEquiv; char *szServerString; char *szAutoServices; @@ -114,13 +108,11 @@ typedef struct char *szSMBPasswdFile; char *szPrivateDir; char **szPassdbBackend; - char **szSamBackend; char **szPreloadModules; char *szPasswordServer; char *szSocketOptions; char *szRealm; char *szADSserver; - char *szUsernameMap; char *szLogonScript; char *szLogonPath; char *szLogonDrive; @@ -130,7 +122,6 @@ typedef struct char *szRemoteAnnounce; char *szRemoteBrowseSync; char *szSocketAddress; - char *szNISHomeMapName; char *szAnnounceVersion; /* This is initialised in init_globals */ char *szWorkgroup; char *szNetbiosName; @@ -139,25 +130,11 @@ typedef struct char *szDomainOtherSIDs; char *szNameResolveOrder; char *szPanicAction; - char *szAddUserScript; - char *szDelUserScript; - char *szAddGroupScript; - char *szDelGroupScript; - char *szAddUserToGroupScript; - char *szDelUserFromGroupScript; - char *szSetPrimaryGroupScript; + char *szAddUserScript; char *szAddMachineScript; - char *szShutdownScript; - char *szAbortShutdownScript; char *szWINSHook; char *szWINSPartners; char **dcerpc_ep_servers; -#ifdef WITH_UTMP - char *szUtmpDir; - char *szWtmpDir; - BOOL bUtmp; -#endif - char *szSourceEnv; char *szWinbindUID; char *szWinbindGID; char *szNonUnixAccountRange; @@ -169,48 +146,28 @@ typedef struct BOOL bWinbindEnumGroups; BOOL bWinbindUseDefaultDomain; char *szIDMapBackend; - char *szAddShareCommand; - char *szChangeShareCommand; - char *szDeleteShareCommand; char *szGuestaccount; - char *szManglingMethod; - int mangle_prefix; - int max_log_size; - int keepalive; int mangled_stack; - int max_xmit; int max_mux; - int max_open_files; int pwordlevel; int unamelevel; - int deadtime; int maxprotocol; int minprotocol; int security; char **AuthMethods; BOOL paranoid_server_security; - int maxdisksize; int lpqcachetime; - int iMaxSmbdProcesses; BOOL bDisableSpoolss; - int iTotalPrintJobs; - int syslog; int os_level; int enhanced_browsing; int time_offset; int max_ttl; int max_wins_ttl; int min_wins_ttl; - int ReadSize; int lm_announce; int lm_interval; int announce_as; /* This is initialised in init_globals */ int machine_password_timeout; - int change_notify_timeout; - int stat_cache_size; - int map_to_guest; - int min_passwd_length; - int oplock_break_wait_time; int winbind_cache_time; int iLockSpinCount; int iLockSpinTime; @@ -226,9 +183,7 @@ typedef struct char *szLdapFilter; char *szLdapAdminDn; BOOL ldap_trust_ids; - char *szAclCompat; int ldap_passwd_sync; - BOOL bMsAddPrinterWizard; BOOL bDNSproxy; BOOL bWINSsupport; BOOL bWINSproxy; @@ -238,39 +193,24 @@ typedef struct BOOL bDomainLogons; BOOL bEncryptPasswords; BOOL bUpdateEncrypt; - BOOL bStripDot; BOOL bNullPasswords; BOOL bObeyPamRestrictions; BOOL bLoadPrinters; BOOL bLargeReadwrite; BOOL bReadRaw; BOOL bWriteRaw; - BOOL bReadPrediction; - BOOL bReadbmpx; - BOOL bSyslogOnly; - BOOL bBrowseList; - BOOL bNISHomeMap; BOOL bTimeServer; BOOL bBindInterfacesOnly; BOOL bPamPasswordChange; BOOL bUnixPasswdSync; - BOOL bPasswdChatDebug; - BOOL bTimestampLogs; BOOL bNTSmbSupport; - BOOL bNTPipeSupport; BOOL bNTStatusSupport; - BOOL bStatCache; - BOOL bKernelOplocks; BOOL bAllowTrustedDomains; BOOL bLanmanAuth; BOOL bNTLMAuth; BOOL bUseSpnego; BOOL bClientLanManAuth; BOOL bClientNTLMv2Auth; - BOOL bClientUseSpnego; - BOOL bDebugHiresTimestamp; - BOOL bDebugPid; - BOOL bDebugUid; BOOL bHostMSDfs; BOOL bHideLocalUsers; BOOL bUnicode; @@ -278,11 +218,9 @@ typedef struct BOOL bHostnameLookups; BOOL bUnixExtensions; BOOL bDisableNetbios; - BOOL bKernelChangeNotify; BOOL bRpcBigEndian; int restrict_anonymous; int name_cache_timeout; - BOOL client_signing; struct param_opt *param_opt; } global; @@ -304,10 +242,6 @@ typedef struct char **szAdminUsers; char *szCopy; char *szInclude; - char *szPreExec; - char *szPostExec; - char *szRootPreExec; - char *szRootPostExec; char *szPrintcommand; char *szLpqcommand; char *szLprmcommand; @@ -316,62 +250,21 @@ typedef struct char *szQueuepausecommand; char *szQueueresumecommand; char *szPrintername; - char *szDontdescend; char **szHostsallow; char **szHostsdeny; - char *szMagicScript; - char *szMagicOutput; - char *szMangledMap; - char *szVetoFiles; - char *szHideFiles; - char *szVetoOplockFiles; char *comment; - char *force_user; - char *force_group; - char **readlist; - char **writelist; - char **printer_admin; char *volume; char *fstype; - char *szVfsObjectFile; - char *szVfsOptions; - char *szVfsPath; char *szMSDfsProxy; char *ntvfs_handler; int iMinPrintSpace; int iMaxPrintJobs; - int iMaxReportedPrintJobs; - int iWriteCacheSize; - int iCreate_mask; - int iCreate_force_mode; - int iSecurity_mask; - int iSecurity_force_mode; - int iDir_mask; - int iDir_force_mode; - int iDir_Security_mask; - int iDir_Security_force_mode; int iMaxConnections; - int iDefaultCase; int iPrinting; - int iOplockContentionLimit; int iCSCPolicy; - int iBlock_size; - BOOL bPreexecClose; - BOOL bRootpreexecClose; - BOOL bCaseSensitive; - BOOL bCasePreserve; - BOOL bShortCasePreserve; - BOOL bCaseMangle; - BOOL bHideDotFiles; - BOOL bHideSpecialFiles; - BOOL bHideUnReadable; - BOOL bHideUnWriteableFiles; - BOOL bBrowseable; BOOL bAvailable; + BOOL bBrowseable; BOOL bRead_only; - BOOL bNo_set_dir; - BOOL bGuest_only; - BOOL bGuest_ok; BOOL bPrint_ok; BOOL bMap_system; BOOL bMap_hidden; @@ -379,34 +272,14 @@ typedef struct BOOL bLocking; BOOL bStrictLocking; BOOL bPosixLocking; - BOOL bShareModes; BOOL bOpLocks; BOOL bLevel2OpLocks; BOOL bOnlyUser; - BOOL bMangledNames; - BOOL bWidelinks; - BOOL bSymlinks; - BOOL bSyncAlways; - BOOL bStrictAllocate; - BOOL bStrictSync; - char magic_char; + BOOL bGuest_only; + BOOL bGuest_ok; BOOL *copymap; - BOOL bDeleteReadonly; - BOOL bFakeOplocks; - BOOL bDeleteVetoFiles; - BOOL bDosFilemode; - BOOL bDosFiletimes; - BOOL bDosFiletimeResolution; - BOOL bFakeDirCreateTimes; - BOOL bBlockingLocks; - BOOL bInheritPerms; - BOOL bInheritACLS; BOOL bMSDfsRoot; - BOOL bUseClientDriver; - BOOL bDefaultDevmode; - BOOL bNTAclSupport; - BOOL bUseSendfile; - BOOL bProfileAcls; + BOOL bShareModes; struct param_opt *param_opt; char dummy[3]; /* for alignment */ @@ -426,10 +299,6 @@ static service sDefault = { NULL, /* szAdminUsers */ NULL, /* szCopy */ NULL, /* szInclude */ - NULL, /* szPreExec */ - NULL, /* szPostExec */ - NULL, /* szRootPreExec */ - NULL, /* szRootPostExec */ NULL, /* szPrintcommand */ NULL, /* szLpqcommand */ NULL, /* szLprmcommand */ @@ -438,62 +307,21 @@ static service sDefault = { NULL, /* szQueuepausecommand */ NULL, /* szQueueresumecommand */ NULL, /* szPrintername */ - NULL, /* szDontdescend */ NULL, /* szHostsallow */ NULL, /* szHostsdeny */ - NULL, /* szMagicScript */ - NULL, /* szMagicOutput */ - NULL, /* szMangledMap */ - NULL, /* szVetoFiles */ - NULL, /* szHideFiles */ - NULL, /* szVetoOplockFiles */ NULL, /* comment */ - NULL, /* force user */ - NULL, /* force group */ - NULL, /* readlist */ - NULL, /* writelist */ - NULL, /* printer admin */ NULL, /* volume */ NULL, /* fstype */ - NULL, /* vfs object */ - NULL, /* vfs options */ - NULL, /* vfs path */ NULL, /* szMSDfsProxy */ NULL, /* ntvfs_handler */ 0, /* iMinPrintSpace */ 1000, /* iMaxPrintJobs */ - 0, /* iMaxReportedPrintJobs */ - 0, /* iWriteCacheSize */ - 0744, /* iCreate_mask */ - 0000, /* iCreate_force_mode */ - 0777, /* iSecurity_mask */ - 0, /* iSecurity_force_mode */ - 0755, /* iDir_mask */ - 0000, /* iDir_force_mode */ - 0777, /* iDir_Security_mask */ - 0, /* iDir_Security_force_mode */ 0, /* iMaxConnections */ - CASE_LOWER, /* iDefaultCase */ DEFAULT_PRINTING, /* iPrinting */ - 2, /* iOplockContentionLimit */ 0, /* iCSCPolicy */ - 1024, /* iBlock_size */ - False, /* bPreexecClose */ - False, /* bRootpreexecClose */ - False, /* case sensitive */ - True, /* case preserve */ - True, /* short case preserve */ - False, /* case mangle */ - True, /* bHideDotFiles */ - False, /* bHideSpecialFiles */ - False, /* bHideUnReadable */ - False, /* bHideUnWriteableFiles */ - True, /* bBrowseable */ True, /* bAvailable */ + True, /* bBrowseable */ True, /* bRead_only */ - True, /* bNo_set_dir */ - False, /* bGuest_only */ - False, /* bGuest_ok */ False, /* bPrint_ok */ False, /* bMap_system */ False, /* bMap_hidden */ @@ -501,35 +329,14 @@ static service sDefault = { True, /* bLocking */ True, /* bStrictLocking */ True, /* bPosixLocking */ - True, /* bShareModes */ True, /* bOpLocks */ True, /* bLevel2OpLocks */ False, /* bOnlyUser */ - True, /* bMangledNames */ - True, /* bWidelinks */ - True, /* bSymlinks */ - False, /* bSyncAlways */ - False, /* bStrictAllocate */ - False, /* bStrictSync */ - '~', /* magic char */ + False, /* bGuest_only */ + False, /* bGuest_ok */ NULL, /* copymap */ - False, /* bDeleteReadonly */ - False, /* bFakeOplocks */ - False, /* bDeleteVetoFiles */ - False, /* bDosFilemode */ - False, /* bDosFiletimes */ - False, /* bDosFiletimeResolution */ - False, /* bFakeDirCreateTimes */ - True, /* bBlockingLocks */ - False, /* bInheritPerms */ - False, /* bInheritACLS */ False, /* bMSDfsRoot */ - False, /* bUseClientDriver */ - False, /* bDefaultDevmode */ - True, /* bNTAclSupport */ - False, /* bUseSendfile */ - False, /* bProfileAcls */ - + True, /* bShareModes */ NULL, /* Parametric options */ "" /* dummy */ @@ -549,8 +356,6 @@ static int default_server_announce; /* prototypes for the special type handlers */ static BOOL handle_include(const char *pszParmValue, char **ptr); static BOOL handle_copy(const char *pszParmValue, char **ptr); -static BOOL handle_vfs_object(const char *pszParmValue, char **ptr); -static BOOL handle_source_env(const char *pszParmValue, char **ptr); static BOOL handle_winbind_uid(const char *pszParmValue, char **ptr); static BOOL handle_winbind_gid(const char *pszParmValue, char **ptr); static BOOL handle_non_unix_account_range(const char *pszParmValue, char **ptr); @@ -559,8 +364,6 @@ static BOOL handle_ldap_machine_suffix ( const char *pszParmValue, char **ptr ); static BOOL handle_ldap_user_suffix ( const char *pszParmValue, char **ptr ); static BOOL handle_ldap_suffix ( const char *pszParmValue, char **ptr ); -static BOOL handle_acl_compatibility(const char *pszParmValue, char **ptr); - static void set_server_role(void); static void set_default_server_announce_type(void); @@ -750,16 +553,12 @@ static struct parm_struct parm_table[] = { {"allow trusted domains", P_BOOL, P_GLOBAL, &Globals.bAllowTrustedDomains, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"hosts equiv", P_STRING, P_GLOBAL, &Globals.szHostsEquiv, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"idmap backend", P_STRING, P_GLOBAL, &Globals.szIDMapBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"min passwd length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"min password length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"map to guest", P_ENUM, P_GLOBAL, &Globals.map_to_guest, NULL, enum_map_to_guest, FLAG_ADVANCED | FLAG_DEVELOPER}, {"null passwords", P_BOOL, P_GLOBAL, &Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"password server", P_STRING, P_GLOBAL, &Globals.szPasswordServer, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"sam backend", P_LIST, P_GLOBAL, &Globals.szSamBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"algorithmic rid base", P_INTEGER, P_GLOBAL, &Globals.AlgorithmicRidBase, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -770,8 +569,6 @@ static struct parm_struct parm_table[] = { {"pam password change", P_BOOL, P_GLOBAL, &Globals.bPamPasswordChange, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"passwd program", P_STRING, P_GLOBAL, &Globals.szPasswdProgram, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"passwd chat debug", P_BOOL, P_GLOBAL, &Globals.bPasswdChatDebug, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"username map", P_STRING, P_GLOBAL, &Globals.szUsernameMap, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER | FLAG_DEVELOPER}, {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"username level", P_INTEGER, P_GLOBAL, &Globals.unamelevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"unix password sync", P_BOOL, P_GLOBAL, &Globals.bUnixPasswdSync, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -788,58 +585,24 @@ static struct parm_struct parm_table[] = { {"invalid users", P_LIST, P_LOCAL, &sDefault.szInvalidUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, {"valid users", P_LIST, P_LOCAL, &sDefault.szValidUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, {"admin users", P_LIST, P_LOCAL, &sDefault.szAdminUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"read list", P_LIST, P_LOCAL, &sDefault.readlist, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"write list", P_LIST, P_LOCAL, &sDefault.writelist, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"printer admin", P_LIST, P_LOCAL, &sDefault.printer_admin, NULL, NULL, FLAG_GLOBAL | FLAG_PRINT}, - {"force user", P_STRING, P_LOCAL, &sDefault.force_user, NULL, NULL, FLAG_SHARE}, - {"force group", P_STRING, P_LOCAL, &sDefault.force_group, NULL, NULL, FLAG_SHARE}, - {"group", P_STRING, P_LOCAL, &sDefault.force_group, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"read only", P_BOOL, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE}, - {"write ok", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_HIDE}, - {"writeable", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_HIDE}, - {"writable", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_HIDE}, - - {"create mask", P_OCTAL, P_LOCAL, &sDefault.iCreate_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"create mode", P_OCTAL, P_LOCAL, &sDefault.iCreate_mask, NULL, NULL, FLAG_GLOBAL}, - {"force create mode", P_OCTAL, P_LOCAL, &sDefault.iCreate_force_mode, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"security mask", P_OCTAL, P_LOCAL, &sDefault.iSecurity_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"force security mode", P_OCTAL, P_LOCAL, &sDefault.iSecurity_force_mode, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"directory mask", P_OCTAL, P_LOCAL, &sDefault.iDir_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"directory mode", P_OCTAL, P_LOCAL, &sDefault.iDir_mask, NULL, NULL, FLAG_GLOBAL}, - {"force directory mode", P_OCTAL, P_LOCAL, &sDefault.iDir_force_mode, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"directory security mask", P_OCTAL, P_LOCAL, &sDefault.iDir_Security_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"force directory security mode", P_OCTAL, P_LOCAL, &sDefault.iDir_Security_force_mode, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"inherit permissions", P_BOOL, P_LOCAL, &sDefault.bInheritPerms, NULL, NULL, FLAG_SHARE}, - {"inherit acls", P_BOOL, P_LOCAL, &sDefault.bInheritACLS, NULL, NULL, FLAG_SHARE}, + {"guest only", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, FLAG_SHARE}, - {"only guest", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, FLAG_HIDE}, {"guest ok", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"public", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL, FLAG_HIDE}, - + {"only user", P_BOOL, P_LOCAL, &sDefault.bOnlyUser, NULL, NULL, FLAG_SHARE}, {"hosts allow", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"allow hosts", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_HIDE}, {"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"deny hosts", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_HIDE}, {"preload modules", P_LIST, P_GLOBAL, &Globals.szPreloadModules, NULL, NULL, FLAG_BASIC | FLAG_GLOBAL}, {"Logging Options", P_SEP, P_SEPARATOR}, {"log level", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"debuglevel", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_HIDE}, - {"syslog", P_INTEGER, P_GLOBAL, &Globals.syslog, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"syslog only", P_BOOL, P_GLOBAL, &Globals.bSyslogOnly, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"log file", P_STRING, P_GLOBAL, &Globals.szLogFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"max log size", P_INTEGER, P_GLOBAL, &Globals.max_log_size, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"timestamp logs", P_BOOL, P_GLOBAL, &Globals.bTimestampLogs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"debug timestamp", P_BOOL, P_GLOBAL, &Globals.bTimestampLogs, NULL, NULL, FLAG_DEVELOPER}, - {"debug hires timestamp", P_BOOL, P_GLOBAL, &Globals.bDebugHiresTimestamp, NULL, NULL, FLAG_DEVELOPER}, - {"debug pid", P_BOOL, P_GLOBAL, &Globals.bDebugPid, NULL, NULL, FLAG_DEVELOPER}, - {"debug uid", P_BOOL, P_GLOBAL, &Globals.bDebugUid, NULL, NULL, FLAG_DEVELOPER}, - {"Protocol Options", P_SEP, P_SEPARATOR}, {"smb ports", P_STRING, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -847,22 +610,16 @@ static struct parm_struct parm_table[] = { {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, {"min protocol", P_ENUM, P_GLOBAL, &Globals.minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, {"unicode", P_BOOL, P_GLOBAL, &Globals.bUnicode, NULL, NULL, FLAG_DEVELOPER}, - {"read bmpx", P_BOOL, P_GLOBAL, &Globals.bReadbmpx, NULL, NULL, FLAG_DEVELOPER}, {"read raw", P_BOOL, P_GLOBAL, &Globals.bReadRaw, NULL, NULL, FLAG_DEVELOPER}, {"write raw", P_BOOL, P_GLOBAL, &Globals.bWriteRaw, NULL, NULL, FLAG_DEVELOPER}, {"disable netbios", P_BOOL, P_GLOBAL, &Globals.bDisableNetbios, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"acl compatibility", P_STRING, P_GLOBAL, &Globals.szAclCompat, handle_acl_compatibility, NULL, FLAG_SHARE | FLAG_GLOBAL | FLAG_ADVANCED}, - {"nt acl support", P_BOOL, P_LOCAL, &sDefault.bNTAclSupport, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE | FLAG_ADVANCED | FLAG_WIZARD}, - {"nt pipe support", P_BOOL, P_GLOBAL, &Globals.bNTPipeSupport, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"nt status support", P_BOOL, P_GLOBAL, &Globals.bNTStatusSupport, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"profile acls", P_BOOL, P_LOCAL, &sDefault.bProfileAcls, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE | FLAG_ADVANCED | FLAG_WIZARD}, - + {"announce version", P_STRING, P_GLOBAL, &Globals.szAnnounceVersion, NULL, NULL, FLAG_DEVELOPER}, {"announce as", P_ENUM, P_GLOBAL, &Globals.announce_as, NULL, enum_announce_as, FLAG_DEVELOPER}, {"max mux", P_INTEGER, P_GLOBAL, &Globals.max_mux, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"max xmit", P_INTEGER, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - + {"name resolve order", P_STRING, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"max ttl", P_INTEGER, P_GLOBAL, &Globals.max_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"max wins ttl", P_INTEGER, P_GLOBAL, &Globals.max_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -870,43 +627,23 @@ static struct parm_struct parm_table[] = { {"time server", P_BOOL, P_GLOBAL, &Globals.bTimeServer, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"unix extensions", P_BOOL, P_GLOBAL, &Globals.bUnixExtensions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"use spnego", P_BOOL, P_GLOBAL, &Globals.bUseSpnego, NULL, NULL, FLAG_DEVELOPER}, - {"client signing", P_BOOL, P_GLOBAL, &Globals.client_signing, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client use spnego", P_BOOL, P_GLOBAL, &Globals.bClientUseSpnego, NULL, NULL, FLAG_DEVELOPER}, {"rpc big endian", P_BOOL, P_GLOBAL, &Globals.bRpcBigEndian, NULL, NULL, FLAG_DEVELOPER}, {"Tuning Options", P_SEP, P_SEPARATOR}, - - {"block size", P_INTEGER, P_LOCAL, &sDefault.iBlock_size, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"change notify timeout", P_INTEGER, P_GLOBAL, &Globals.change_notify_timeout, NULL, NULL, FLAG_DEVELOPER}, - {"deadtime", P_INTEGER, P_GLOBAL, &Globals.deadtime, NULL, NULL, FLAG_DEVELOPER}, - {"keepalive", P_INTEGER, P_GLOBAL, &Globals.keepalive, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"kernel change notify", P_BOOL, P_GLOBAL, &Globals.bKernelChangeNotify, NULL, NULL, FLAG_DEVELOPER}, - + {"lpq cache time", P_INTEGER, P_GLOBAL, &Globals.lpqcachetime, NULL, NULL, FLAG_DEVELOPER}, - {"max smbd processes", P_INTEGER, P_GLOBAL, &Globals.iMaxSmbdProcesses, NULL, NULL, FLAG_DEVELOPER}, {"max connections", P_INTEGER, P_LOCAL, &sDefault.iMaxConnections, NULL, NULL, FLAG_SHARE}, {"paranoid server security", P_BOOL, P_GLOBAL, &Globals.paranoid_server_security, NULL, NULL, FLAG_DEVELOPER}, - {"max disk size", P_INTEGER, P_GLOBAL, &Globals.maxdisksize, NULL, NULL, FLAG_DEVELOPER}, - {"max open files", P_INTEGER, P_GLOBAL, &Globals.max_open_files, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"min print space", P_INTEGER, P_LOCAL, &sDefault.iMinPrintSpace, NULL, NULL, FLAG_PRINT}, - {"read size", P_INTEGER, P_GLOBAL, &Globals.ReadSize, NULL, NULL, FLAG_DEVELOPER}, {"socket options", P_STRING, P_GLOBAL, &Globals.socket_options, NULL, NULL, FLAG_DEVELOPER}, - {"stat cache size", P_INTEGER, P_GLOBAL, &Globals.stat_cache_size, NULL, NULL, FLAG_DEVELOPER}, - {"strict allocate", P_BOOL, P_LOCAL, &sDefault.bStrictAllocate, NULL, NULL, FLAG_SHARE}, - {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_SHARE}, - {"sync always", P_BOOL, P_LOCAL, &sDefault.bSyncAlways, NULL, NULL, FLAG_SHARE}, {"use mmap", P_BOOL, P_GLOBAL, &Globals.bUseMmap, NULL, NULL, FLAG_DEVELOPER}, - {"use sendfile", P_BOOL, P_LOCAL, &sDefault.bUseSendfile, NULL, NULL, FLAG_SHARE}, {"hostname lookups", P_BOOL, P_GLOBAL, &Globals.bHostnameLookups, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"write cache size", P_INTEGER, P_LOCAL, &sDefault.iWriteCacheSize, NULL, NULL, FLAG_SHARE}, {"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"Printing Options", P_SEP, P_SEPARATOR}, - {"total print jobs", P_INTEGER, P_GLOBAL, &Globals.iTotalPrintJobs, NULL, NULL, FLAG_PRINT}, - {"max reported print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxReportedPrintJobs, NULL, NULL, FLAG_PRINT}, {"max print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxPrintJobs, NULL, NULL, FLAG_PRINT}, {"load printers", P_BOOL, P_GLOBAL, &Globals.bLoadPrinters, NULL, NULL, FLAG_PRINT}, {"printcap name", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, FLAG_PRINT | FLAG_DEVELOPER}, @@ -922,45 +659,16 @@ static struct parm_struct parm_table[] = { {"lpresume command", P_STRING, P_LOCAL, &sDefault.szLpresumecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, {"queuepause command", P_STRING, P_LOCAL, &sDefault.szQueuepausecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, {"queueresume command", P_STRING, P_LOCAL, &sDefault.szQueueresumecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, - - {"enumports command", P_STRING, P_GLOBAL, &Globals.szEnumPortsCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"addprinter command", P_STRING, P_GLOBAL, &Globals.szAddPrinterCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"deleteprinter command", P_STRING, P_GLOBAL, &Globals.szDeletePrinterCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"show add printer wizard", P_BOOL, P_GLOBAL, &Globals.bMsAddPrinterWizard, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"os2 driver map", P_STRING, P_GLOBAL, &Globals.szOs2DriverMap, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"printer name", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_PRINT}, {"printer", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_HIDE}, - {"use client driver", P_BOOL, P_LOCAL, &sDefault.bUseClientDriver, NULL, NULL, FLAG_PRINT}, - {"default devmode", P_BOOL, P_LOCAL, &sDefault.bDefaultDevmode, NULL, NULL, FLAG_PRINT}, {"Filename Handling", P_SEP, P_SEPARATOR}, - {"strip dot", P_BOOL, P_GLOBAL, &Globals.bStripDot, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"mangling method", P_STRING, P_GLOBAL, &Globals.szManglingMethod, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"mangle prefix", P_INTEGER, P_GLOBAL, &Globals.mangle_prefix, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"mangled stack", P_INTEGER, P_GLOBAL, &Globals.mangled_stack, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"default case", P_ENUM, P_LOCAL, &sDefault.iDefaultCase, NULL, enum_case, FLAG_SHARE}, - {"case sensitive", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"casesignames", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_HIDE}, - {"preserve case", P_BOOL, P_LOCAL, &sDefault.bCasePreserve, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"short preserve case", P_BOOL, P_LOCAL, &sDefault.bShortCasePreserve, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"mangle case", P_BOOL, P_LOCAL, &sDefault.bCaseMangle, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"mangling char", P_CHAR, P_LOCAL, &sDefault.magic_char, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"hide dot files", P_BOOL, P_LOCAL, &sDefault.bHideDotFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"hide special files", P_BOOL, P_LOCAL, &sDefault.bHideSpecialFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"hide unreadable", P_BOOL, P_LOCAL, &sDefault.bHideUnReadable, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"hide unwriteable files", P_BOOL, P_LOCAL, &sDefault.bHideUnWriteableFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"delete veto files", P_BOOL, P_LOCAL, &sDefault.bDeleteVetoFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"veto files", P_STRING, P_LOCAL, &sDefault.szVetoFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL }, - {"hide files", P_STRING, P_LOCAL, &sDefault.szHideFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL }, - {"veto oplock files", P_STRING, P_LOCAL, &sDefault.szVetoOplockFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL }, {"map system", P_BOOL, P_LOCAL, &sDefault.bMap_system, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"map hidden", P_BOOL, P_LOCAL, &sDefault.bMap_hidden, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"mangled names", P_BOOL, P_LOCAL, &sDefault.bMangledNames, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"stat cache", P_BOOL, P_GLOBAL, &Globals.bStatCache, NULL, NULL, FLAG_DEVELOPER}, {"Domain Options", P_SEP, P_SEPARATOR}, @@ -969,15 +677,7 @@ static struct parm_struct parm_table[] = { {"Logon Options", P_SEP, P_SEPARATOR}, {"add user script", P_STRING, P_GLOBAL, &Globals.szAddUserScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"delete user script", P_STRING, P_GLOBAL, &Globals.szDelUserScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"add group script", P_STRING, P_GLOBAL, &Globals.szAddGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"delete group script", P_STRING, P_GLOBAL, &Globals.szDelGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"add user to group script", P_STRING, P_GLOBAL, &Globals.szAddUserToGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"delete user from group script", P_STRING, P_GLOBAL, &Globals.szDelUserFromGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"set primary group script", P_STRING, P_GLOBAL, &Globals.szSetPrimaryGroupScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"add machine script", P_STRING, P_GLOBAL, &Globals.szAddMachineScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"shutdown script", P_STRING, P_GLOBAL, &Globals.szShutdownScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"abort shutdown script", P_STRING, P_GLOBAL, &Globals.szAbortShutdownScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"logon script", P_STRING, P_GLOBAL, &Globals.szLogonScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"logon path", P_STRING, P_GLOBAL, &Globals.szLogonPath, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -994,7 +694,6 @@ static struct parm_struct parm_table[] = { {"prefered master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_HIDE}, {"local master", P_BOOL, P_GLOBAL, &Globals.bLocalMaster, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"domain master", P_ENUM, P_GLOBAL, &Globals.bDomainMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"browse list", P_BOOL, P_GLOBAL, &Globals.bBrowseList, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"browseable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_HIDE}, {"enhanced browsing", P_BOOL, P_GLOBAL, &Globals.enhanced_browsing, NULL, NULL, FLAG_DEVELOPER | FLAG_ADVANCED}, @@ -1010,18 +709,13 @@ static struct parm_struct parm_table[] = { {"Locking Options", P_SEP, P_SEPARATOR}, - {"blocking locks", P_BOOL, P_LOCAL, &sDefault.bBlockingLocks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"csc policy", P_ENUM, P_LOCAL, &sDefault.iCSCPolicy, NULL, enum_csc_policy, FLAG_SHARE | FLAG_GLOBAL}, - {"fake oplocks", P_BOOL, P_LOCAL, &sDefault.bFakeOplocks, NULL, NULL, FLAG_SHARE}, - {"kernel oplocks", P_BOOL, P_GLOBAL, &Globals.bKernelOplocks, NULL, NULL, FLAG_GLOBAL}, {"locking", P_BOOL, P_LOCAL, &sDefault.bLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"lock spin count", P_INTEGER, P_GLOBAL, &Globals.iLockSpinCount, NULL, NULL, FLAG_GLOBAL}, {"lock spin time", P_INTEGER, P_GLOBAL, &Globals.iLockSpinTime, NULL, NULL, FLAG_GLOBAL}, {"oplocks", P_BOOL, P_LOCAL, &sDefault.bOpLocks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"level2 oplocks", P_BOOL, P_LOCAL, &sDefault.bLevel2OpLocks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"oplock break wait time", P_INTEGER, P_GLOBAL, &Globals.oplock_break_wait_time, NULL, NULL, FLAG_GLOBAL}, - {"oplock contention limit", P_INTEGER, P_LOCAL, &sDefault.iOplockContentionLimit, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"posix locking", P_BOOL, P_LOCAL, &sDefault.bPosixLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"strict locking", P_BOOL, P_LOCAL, &sDefault.bStrictLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"share modes", P_BOOL, P_LOCAL, &sDefault.bShareModes, NULL, NULL, FLAG_SHARE|FLAG_GLOBAL}, @@ -1042,9 +736,6 @@ static struct parm_struct parm_table[] = { {"ldap trust ids", P_BOOL, P_GLOBAL, &Globals.ldap_trust_ids, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"Miscellaneous Options", P_SEP, P_SEPARATOR}, - {"add share command", P_STRING, P_GLOBAL, &Globals.szAddShareCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"change share command", P_STRING, P_GLOBAL, &Globals.szChangeShareCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"delete share command", P_STRING, P_GLOBAL, &Globals.szDeleteShareCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"config file", P_STRING, P_GLOBAL, &Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, {"preload", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -1052,60 +743,25 @@ static struct parm_struct parm_table[] = { {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_HIDE}, {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, -#ifdef WITH_UTMP - {"utmp directory", P_STRING, P_GLOBAL, &Globals.szUtmpDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"wtmp directory", P_STRING, P_GLOBAL, &Globals.szWtmpDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"utmp", P_BOOL, P_GLOBAL, &Globals.bUtmp, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, -#endif {"default service", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"default", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_DEVELOPER}, - {"message command", P_STRING, P_GLOBAL, &Globals.szMsgCommand, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"dfree command", P_STRING, P_GLOBAL, &Globals.szDfree, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"remote announce", P_STRING, P_GLOBAL, &Globals.szRemoteAnnounce, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"remote browse sync", P_STRING, P_GLOBAL, &Globals.szRemoteBrowseSync, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER}, - {"homedir map", P_STRING, P_GLOBAL, &Globals.szNISHomeMapName, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"time offset", P_INTEGER, P_GLOBAL, &Globals.time_offset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"NIS homedir", P_BOOL, P_GLOBAL, &Globals.bNISHomeMap, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"-valid", P_BOOL, P_LOCAL, &sDefault.valid, NULL, NULL, FLAG_HIDE}, {"copy", P_STRING, P_LOCAL, &sDefault.szCopy, handle_copy, NULL, FLAG_HIDE}, {"include", P_STRING, P_LOCAL, &sDefault.szInclude, handle_include, NULL, FLAG_HIDE}, - {"exec", P_STRING, P_LOCAL, &sDefault.szPreExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT}, - {"preexec", P_STRING, P_LOCAL, &sDefault.szPreExec, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"preexec close", P_BOOL, P_LOCAL, &sDefault.bPreexecClose, NULL, NULL, FLAG_SHARE}, - {"postexec", P_STRING, P_LOCAL, &sDefault.szPostExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT}, - {"root preexec", P_STRING, P_LOCAL, &sDefault.szRootPreExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT}, - {"root preexec close", P_BOOL, P_LOCAL, &sDefault.bRootpreexecClose, NULL, NULL, FLAG_SHARE}, - {"root postexec", P_STRING, P_LOCAL, &sDefault.szRootPostExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT}, {"available", P_BOOL, P_LOCAL, &sDefault.bAvailable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT}, {"volume", P_STRING, P_LOCAL, &sDefault.volume, NULL, NULL, FLAG_SHARE }, {"fstype", P_STRING, P_LOCAL, &sDefault.fstype, NULL, NULL, FLAG_SHARE}, - {"set directory", P_BOOLREV, P_LOCAL, &sDefault.bNo_set_dir, NULL, NULL, FLAG_SHARE}, - {"source environment", P_STRING, P_GLOBAL, &Globals.szSourceEnv, handle_source_env, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"wide links", P_BOOL, P_LOCAL, &sDefault.bWidelinks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"follow symlinks", P_BOOL, P_LOCAL, &sDefault.bSymlinks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"dont descend", P_STRING, P_LOCAL, &sDefault.szDontdescend, NULL, NULL, FLAG_SHARE}, - {"magic script", P_STRING, P_LOCAL, &sDefault.szMagicScript, NULL, NULL, FLAG_SHARE}, - {"magic output", P_STRING, P_LOCAL, &sDefault.szMagicOutput, NULL, NULL, FLAG_SHARE}, - {"delete readonly", P_BOOL, P_LOCAL, &sDefault.bDeleteReadonly, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"dos filemode", P_BOOL, P_LOCAL, &sDefault.bDosFilemode, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"dos filetimes", P_BOOL, P_LOCAL, &sDefault.bDosFiletimes, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"dos filetime resolution", P_BOOL, P_LOCAL, &sDefault.bDosFiletimeResolution, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - - {"fake directory create times", P_BOOL, P_LOCAL, &sDefault.bFakeDirCreateTimes, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"panic action", P_STRING, P_GLOBAL, &Globals.szPanicAction, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"hide local users", P_BOOL, P_GLOBAL, &Globals.bHideLocalUsers, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"VFS module options", P_SEP, P_SEPARATOR}, - - {"vfs object", P_STRING, P_LOCAL, &sDefault.szVfsObjectFile, handle_vfs_object, NULL, FLAG_SHARE}, - {"vfs options", P_STRING, P_LOCAL, &sDefault.szVfsOptions, NULL, NULL, FLAG_SHARE}, - {"vfs path", P_STRING, P_LOCAL, &sDefault.szVfsPath, NULL, NULL, FLAG_SHARE}, - - {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, {"msdfs proxy", P_STRING, P_LOCAL, &sDefault.szMSDfsProxy, NULL, NULL, FLAG_SHARE}, {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -1278,8 +934,6 @@ static void init_globals(void) string_set(&Globals.szPrivateDir, dyn_PRIVATE_DIR); /* use the new 'hash2' method by default, with a prefix of 1 */ - string_set(&Globals.szManglingMethod, "hash2"); - Globals.mangle_prefix = 1; string_set(&Globals.szGuestaccount, GUEST_ACCOUNT); @@ -1317,20 +971,12 @@ static void init_globals(void) Globals.bLoadPrinters = True; Globals.mangled_stack = 50; - /* Was 65535 (0xFFFF). 0x4101 matches W2K and causes major speed improvements... */ - /* Discovered by 2 days of pain by Don McCall @ HP :-). */ - Globals.max_xmit = 0x4104; Globals.max_mux = 50; /* This is *needed* for profile support. */ Globals.lpqcachetime = 10; Globals.bDisableSpoolss = False; - Globals.iMaxSmbdProcesses = 0;/* no limit specified */ - Globals.iTotalPrintJobs = 0; /* no limit specified */ Globals.pwordlevel = 0; Globals.unamelevel = 0; - Globals.deadtime = 0; Globals.bLargeReadwrite = True; - Globals.max_log_size = 5000; - Globals.max_open_files = MAX_OPEN_FILES; Globals.minprotocol = PROTOCOL_CORE; Globals.security = SEC_USER; Globals.paranoid_server_security = True; @@ -1338,53 +984,27 @@ static void init_globals(void) Globals.bUpdateEncrypt = False; Globals.bReadRaw = True; Globals.bWriteRaw = True; - Globals.bReadPrediction = False; - Globals.bReadbmpx = False; Globals.bNullPasswords = False; Globals.bObeyPamRestrictions = False; - Globals.bStripDot = False; - Globals.syslog = 1; - Globals.bSyslogOnly = False; - Globals.bTimestampLogs = True; - Globals.bDebugHiresTimestamp = False; - Globals.bDebugPid = False; - Globals.bDebugUid = False; Globals.max_ttl = 60 * 60 * 24 * 3; /* 3 days default. */ Globals.max_wins_ttl = 60 * 60 * 24 * 6; /* 6 days default. */ Globals.min_wins_ttl = 60 * 60 * 6; /* 6 hours default. */ Globals.machine_password_timeout = 60 * 60 * 24 * 7; /* 7 days default. */ - Globals.change_notify_timeout = 60; /* 1 minute default. */ - Globals.bKernelChangeNotify = True; /* On if we have it. */ - Globals.ReadSize = 16 * 1024; Globals.lm_announce = 2; /* = Auto: send only if LM clients found */ Globals.lm_interval = 60; - Globals.stat_cache_size = 50; /* Number of stat translations we'll keep */ Globals.announce_as = ANNOUNCE_AS_NT_SERVER; -#if (defined(HAVE_NETGROUP) && defined(WITH_AUTOMOUNT)) - Globals.bNISHomeMap = False; -#ifdef WITH_NISPLUS_HOME - string_set(&Globals.szNISHomeMapName, "auto_home.org_dir"); -#else - string_set(&Globals.szNISHomeMapName, "auto.home"); -#endif -#endif + Globals.bTimeServer = False; Globals.bBindInterfacesOnly = False; Globals.bUnixPasswdSync = False; Globals.bPamPasswordChange = False; - Globals.bPasswdChatDebug = False; Globals.bUnicode = True; /* Do unicode on the wire by default */ - Globals.bNTPipeSupport = True; /* Do NT pipes by default. */ Globals.bNTStatusSupport = True; /* Use NT status by default. */ - Globals.bStatCache = True; /* use stat cache by default */ Globals.restrict_anonymous = 0; Globals.bClientLanManAuth = True; /* Do use the LanMan hash if it is available */ Globals.bLanmanAuth = True; /* Do use the LanMan hash if it is available */ Globals.bNTLMAuth = True; /* Do use NTLMv1 if it is available (otherwise NTLMv2) */ - Globals.map_to_guest = 0; /* By Default, "Never" */ - Globals.min_passwd_length = MINPASSWDLENGTH; /* By Default, 5. */ - Globals.oplock_break_wait_time = 0; /* By Default, 0 msecs. */ Globals.enhanced_browsing = True; Globals.iLockSpinCount = 3; /* Try 2 times. */ Globals.iLockSpinTime = 10; /* usec. */ @@ -1428,27 +1048,21 @@ static void init_globals(void) */ - Globals.bMsAddPrinterWizard = True; Globals.bPreferredMaster = Auto; /* depending on bDomainMaster */ Globals.os_level = 20; Globals.bLocalMaster = True; Globals.bDomainMaster = Auto; /* depending on bDomainLogons */ Globals.bDomainLogons = False; - Globals.bBrowseList = True; Globals.bWINSsupport = False; Globals.bWINSproxy = False; Globals.bDNSproxy = True; - /* this just means to use them if they exist */ - Globals.bKernelOplocks = True; - Globals.bAllowTrustedDomains = True; string_set(&Globals.szTemplateShell, "/bin/false"); string_set(&Globals.szTemplateHomedir, "/home/%D/%U"); string_set(&Globals.szWinbindSeparator, "\\"); - string_set(&Globals.szAclCompat, ""); Globals.winbind_cache_time = 15; Globals.bWinbindEnumUsers = True; @@ -1460,7 +1074,6 @@ static void init_globals(void) Globals.name_cache_timeout = 660; /* In seconds */ Globals.bUseSpnego = True; - Globals.bClientUseSpnego = True; string_set(&Globals.smb_ports, SMB_PORTS); } @@ -1567,25 +1180,11 @@ FN_GLOBAL_STRING(lp_smb_passwd_file, &Globals.szSMBPasswdFile) FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) FN_GLOBAL_STRING(lp_printcapname, &Globals.szPrintcapname) -FN_GLOBAL_STRING(lp_enumports_cmd, &Globals.szEnumPortsCommand) -FN_GLOBAL_STRING(lp_addprinter_cmd, &Globals.szAddPrinterCommand) -FN_GLOBAL_STRING(lp_deleteprinter_cmd, &Globals.szDeletePrinterCommand) -FN_GLOBAL_STRING(lp_os2_driver_map, &Globals.szOs2DriverMap) FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) -FN_GLOBAL_STRING(lp_mangling_method, &Globals.szManglingMethod) -FN_GLOBAL_INTEGER(lp_mangle_prefix, &Globals.mangle_prefix) FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) -#ifdef WITH_UTMP -FN_GLOBAL_STRING(lp_utmpdir, &Globals.szUtmpDir) -FN_GLOBAL_STRING(lp_wtmpdir, &Globals.szWtmpDir) -FN_GLOBAL_BOOL(lp_utmp, &Globals.bUtmp) -#endif FN_GLOBAL_STRING(lp_rootdir, &Globals.szRootdir) -FN_GLOBAL_STRING(lp_source_environment, &Globals.szSourceEnv) FN_GLOBAL_STRING(lp_defaultservice, &Globals.szDefaultService) -FN_GLOBAL_STRING(lp_msg_command, &Globals.szMsgCommand) -FN_GLOBAL_STRING(lp_dfree_command, &Globals.szDfree) FN_GLOBAL_STRING(lp_hosts_equiv, &Globals.szHostsEquiv) FN_GLOBAL_STRING(lp_auto_services, &Globals.szAutoServices) FN_GLOBAL_STRING(lp_passwd_program, &Globals.szPasswdProgram) @@ -1594,7 +1193,6 @@ FN_GLOBAL_STRING(lp_passwordserver, &Globals.szPasswordServer) FN_GLOBAL_STRING(lp_name_resolve_order, &Globals.szNameResolveOrder) FN_GLOBAL_STRING(lp_realm, &Globals.szRealm) FN_GLOBAL_STRING(lp_ads_server, &Globals.szADSserver) -FN_GLOBAL_STRING(lp_username_map, &Globals.szUsernameMap) FN_GLOBAL_STRING(lp_socket_options, &Globals.socket_options) FN_GLOBAL_STRING(lp_workgroup, &Globals.szWorkgroup) FN_GLOBAL_STRING(lp_netbios_name, &Globals.szNetbiosName) @@ -1608,34 +1206,22 @@ FN_GLOBAL_STRING(lp_remote_browse_sync, &Globals.szRemoteBrowseSync) FN_GLOBAL_LIST(lp_wins_server_list, &Globals.szWINSservers) FN_GLOBAL_LIST(lp_interfaces, &Globals.szInterfaces) FN_GLOBAL_STRING(lp_socket_address, &Globals.szSocketAddress) -FN_GLOBAL_STRING(lp_nis_home_map_name, &Globals.szNISHomeMapName) static FN_GLOBAL_STRING(lp_announce_version, &Globals.szAnnounceVersion) FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases) FN_GLOBAL_LIST(lp_passdb_backend, &Globals.szPassdbBackend) -FN_GLOBAL_LIST(lp_sam_backend, &Globals.szSamBackend) FN_GLOBAL_LIST(lp_preload_modules, &Globals.szPreloadModules) FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) FN_GLOBAL_STRING(lp_adduser_script, &Globals.szAddUserScript) -FN_GLOBAL_STRING(lp_deluser_script, &Globals.szDelUserScript) FN_GLOBAL_CONST_STRING(lp_guestaccount, &Globals.szGuestaccount) -FN_GLOBAL_STRING(lp_addgroup_script, &Globals.szAddGroupScript) -FN_GLOBAL_STRING(lp_delgroup_script, &Globals.szDelGroupScript) -FN_GLOBAL_STRING(lp_addusertogroup_script, &Globals.szAddUserToGroupScript) -FN_GLOBAL_STRING(lp_deluserfromgroup_script, &Globals.szDelUserFromGroupScript) -FN_GLOBAL_STRING(lp_setprimarygroup_script, &Globals.szSetPrimaryGroupScript) FN_GLOBAL_STRING(lp_addmachine_script, &Globals.szAddMachineScript) -FN_GLOBAL_STRING(lp_shutdown_script, &Globals.szShutdownScript) -FN_GLOBAL_STRING(lp_abort_shutdown_script, &Globals.szAbortShutdownScript) - FN_GLOBAL_STRING(lp_wins_hook, &Globals.szWINSHook) FN_GLOBAL_STRING(lp_wins_partners, &Globals.szWINSPartners) FN_GLOBAL_STRING(lp_template_homedir, &Globals.szTemplateHomedir) FN_GLOBAL_STRING(lp_template_shell, &Globals.szTemplateShell) FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) -FN_GLOBAL_STRING(lp_acl_compatibility, &Globals.szAclCompat) FN_GLOBAL_BOOL(lp_winbind_enum_users, &Globals.bWinbindEnumUsers) FN_GLOBAL_BOOL(lp_winbind_enum_groups, &Globals.bWinbindEnumGroups) FN_GLOBAL_BOOL(lp_winbind_use_default_domain, &Globals.bWinbindUseDefaultDomain) @@ -1653,12 +1239,8 @@ FN_GLOBAL_STRING(lp_ldap_admin_dn, &Globals.szLdapAdminDn) FN_GLOBAL_INTEGER(lp_ldap_ssl, &Globals.ldap_ssl) FN_GLOBAL_INTEGER(lp_ldap_passwd_sync, &Globals.ldap_passwd_sync) FN_GLOBAL_BOOL(lp_ldap_trust_ids, &Globals.ldap_trust_ids) -FN_GLOBAL_STRING(lp_add_share_cmd, &Globals.szAddShareCommand) -FN_GLOBAL_STRING(lp_change_share_cmd, &Globals.szChangeShareCommand) -FN_GLOBAL_STRING(lp_delete_share_cmd, &Globals.szDeleteShareCommand) FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) -FN_GLOBAL_BOOL(lp_ms_add_printer_wizard, &Globals.bMsAddPrinterWizard) FN_GLOBAL_BOOL(lp_dns_proxy, &Globals.bDNSproxy) FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) FN_GLOBAL_BOOL(lp_we_are_a_wins_server, &Globals.bWINSsupport) @@ -1666,32 +1248,19 @@ FN_GLOBAL_BOOL(lp_wins_proxy, &Globals.bWINSproxy) FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) FN_GLOBAL_BOOL(lp_domain_logons, &Globals.bDomainLogons) FN_GLOBAL_BOOL(lp_load_printers, &Globals.bLoadPrinters) -FN_GLOBAL_BOOL(lp_readprediction, &Globals.bReadPrediction) -FN_GLOBAL_BOOL(lp_readbmpx, &Globals.bReadbmpx) FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw) FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite) FN_GLOBAL_BOOL(lp_writeraw, &Globals.bWriteRaw) FN_GLOBAL_BOOL(lp_null_passwords, &Globals.bNullPasswords) FN_GLOBAL_BOOL(lp_obey_pam_restrictions, &Globals.bObeyPamRestrictions) -FN_GLOBAL_BOOL(lp_strip_dot, &Globals.bStripDot) FN_GLOBAL_BOOL(lp_encrypted_passwords, &Globals.bEncryptPasswords) FN_GLOBAL_BOOL(lp_update_encrypted, &Globals.bUpdateEncrypt) -FN_GLOBAL_BOOL(lp_syslog_only, &Globals.bSyslogOnly) -FN_GLOBAL_BOOL(lp_timestamp_logs, &Globals.bTimestampLogs) -FN_GLOBAL_BOOL(lp_debug_hires_timestamp, &Globals.bDebugHiresTimestamp) -FN_GLOBAL_BOOL(lp_debug_pid, &Globals.bDebugPid) -FN_GLOBAL_BOOL(lp_debug_uid, &Globals.bDebugUid) -FN_GLOBAL_BOOL(lp_browse_list, &Globals.bBrowseList) -FN_GLOBAL_BOOL(lp_nis_home_map, &Globals.bNISHomeMap) static FN_GLOBAL_BOOL(lp_time_server, &Globals.bTimeServer) FN_GLOBAL_BOOL(lp_bind_interfaces_only, &Globals.bBindInterfacesOnly) FN_GLOBAL_BOOL(lp_pam_password_change, &Globals.bPamPasswordChange) FN_GLOBAL_BOOL(lp_unix_password_sync, &Globals.bUnixPasswdSync) -FN_GLOBAL_BOOL(lp_passwd_chat_debug, &Globals.bPasswdChatDebug) FN_GLOBAL_BOOL(lp_unicode, &Globals.bUnicode) -FN_GLOBAL_BOOL(lp_nt_pipe_support, &Globals.bNTPipeSupport) FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport) -FN_GLOBAL_BOOL(lp_stat_cache, &Globals.bStatCache) FN_GLOBAL_BOOL(lp_allow_trusted_domains, &Globals.bAllowTrustedDomains) FN_GLOBAL_INTEGER(lp_restrict_anonymous, &Globals.restrict_anonymous) FN_GLOBAL_BOOL(lp_lanman_auth, &Globals.bLanmanAuth) @@ -1699,59 +1268,36 @@ FN_GLOBAL_BOOL(lp_ntlm_auth, &Globals.bNTLMAuth) FN_GLOBAL_BOOL(lp_client_lanman_auth, &Globals.bClientLanManAuth) FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, &Globals.bClientNTLMv2Auth) FN_GLOBAL_BOOL(lp_host_msdfs, &Globals.bHostMSDfs) -FN_GLOBAL_BOOL(lp_kernel_oplocks, &Globals.bKernelOplocks) FN_GLOBAL_BOOL(lp_enhanced_browsing, &Globals.enhanced_browsing) FN_GLOBAL_BOOL(lp_use_mmap, &Globals.bUseMmap) FN_GLOBAL_BOOL(lp_unix_extensions, &Globals.bUnixExtensions) FN_GLOBAL_BOOL(lp_use_spnego, &Globals.bUseSpnego) -FN_GLOBAL_BOOL(lp_client_use_spnego, &Globals.bClientUseSpnego) FN_GLOBAL_BOOL(lp_hostname_lookups, &Globals.bHostnameLookups) -FN_GLOBAL_BOOL(lp_kernel_change_notify, &Globals.bKernelChangeNotify) FN_GLOBAL_BOOL(lp_rpc_big_endian, &Globals.bRpcBigEndian) FN_GLOBAL_INTEGER(lp_os_level, &Globals.os_level) FN_GLOBAL_INTEGER(lp_max_ttl, &Globals.max_ttl) FN_GLOBAL_INTEGER(lp_max_wins_ttl, &Globals.max_wins_ttl) FN_GLOBAL_INTEGER(lp_min_wins_ttl, &Globals.min_wins_ttl) -FN_GLOBAL_INTEGER(lp_max_log_size, &Globals.max_log_size) -FN_GLOBAL_INTEGER(lp_max_open_files, &Globals.max_open_files) -FN_GLOBAL_INTEGER(lp_maxxmit, &Globals.max_xmit) FN_GLOBAL_INTEGER(lp_time_offset, &Globals.time_offset) FN_GLOBAL_INTEGER(lp_maxmux, &Globals.max_mux) FN_GLOBAL_INTEGER(lp_passwordlevel, &Globals.pwordlevel) FN_GLOBAL_INTEGER(lp_usernamelevel, &Globals.unamelevel) -FN_GLOBAL_INTEGER(lp_readsize, &Globals.ReadSize) -FN_GLOBAL_INTEGER(lp_deadtime, &Globals.deadtime) -FN_GLOBAL_INTEGER(lp_keepalive, &Globals.keepalive) FN_GLOBAL_INTEGER(lp_maxprotocol, &Globals.maxprotocol) FN_GLOBAL_INTEGER(lp_minprotocol, &Globals.minprotocol) FN_GLOBAL_INTEGER(lp_security, &Globals.security) FN_GLOBAL_LIST(lp_auth_methods, &Globals.AuthMethods) FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) -FN_GLOBAL_INTEGER(lp_maxdisksize, &Globals.maxdisksize) FN_GLOBAL_INTEGER(lp_lpqcachetime, &Globals.lpqcachetime) -FN_GLOBAL_INTEGER(lp_max_smbd_processes, &Globals.iMaxSmbdProcesses) FN_GLOBAL_INTEGER(lp_disable_spoolss, &Globals.bDisableSpoolss) -FN_GLOBAL_INTEGER(lp_totalprintjobs, &Globals.iTotalPrintJobs) -FN_GLOBAL_INTEGER(lp_syslog, &Globals.syslog) static FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) FN_GLOBAL_INTEGER(lp_lm_announce, &Globals.lm_announce) FN_GLOBAL_INTEGER(lp_lm_interval, &Globals.lm_interval) FN_GLOBAL_INTEGER(lp_machine_password_timeout, &Globals.machine_password_timeout) -FN_GLOBAL_INTEGER(lp_change_notify_timeout, &Globals.change_notify_timeout) -FN_GLOBAL_INTEGER(lp_stat_cache_size, &Globals.stat_cache_size) -FN_GLOBAL_INTEGER(lp_map_to_guest, &Globals.map_to_guest) -FN_GLOBAL_INTEGER(lp_min_passwd_length, &Globals.min_passwd_length) -FN_GLOBAL_INTEGER(lp_oplock_break_wait_time, &Globals.oplock_break_wait_time) FN_GLOBAL_INTEGER(lp_lock_spin_count, &Globals.iLockSpinCount) FN_GLOBAL_INTEGER(lp_lock_sleep_time, &Globals.iLockSpinTime) -FN_LOCAL_STRING(lp_preexec, szPreExec) -FN_LOCAL_STRING(lp_postexec, szPostExec) -FN_LOCAL_STRING(lp_rootpreexec, szRootPreExec) -FN_LOCAL_STRING(lp_rootpostexec, szRootPostExec) FN_LOCAL_STRING(lp_servicename, szService) FN_LOCAL_CONST_STRING(lp_const_servicename, szService) FN_LOCAL_STRING(lp_pathname, szPath) -FN_LOCAL_STRING(lp_dontdescend, szDontdescend) FN_LOCAL_STRING(lp_username, szUsername) FN_LOCAL_LIST(lp_invalid_users, szInvalidUsers) FN_LOCAL_LIST(lp_valid_users, szValidUsers) @@ -1766,40 +1312,15 @@ FN_LOCAL_STRING(lp_queueresumecommand, szQueueresumecommand) static FN_LOCAL_STRING(_lp_printername, szPrintername) FN_LOCAL_LIST(lp_hostsallow, szHostsallow) FN_LOCAL_LIST(lp_hostsdeny, szHostsdeny) -FN_LOCAL_STRING(lp_magicscript, szMagicScript) -FN_LOCAL_STRING(lp_magicoutput, szMagicOutput) FN_LOCAL_STRING(lp_comment, comment) -FN_LOCAL_STRING(lp_force_user, force_user) -FN_LOCAL_STRING(lp_force_group, force_group) -FN_LOCAL_LIST(lp_readlist, readlist) -FN_LOCAL_LIST(lp_writelist, writelist) -FN_LOCAL_LIST(lp_printer_admin, printer_admin) FN_LOCAL_STRING(lp_fstype, fstype) -FN_LOCAL_STRING(lp_vfsobj, szVfsObjectFile) -FN_LOCAL_STRING(lp_vfs_options, szVfsOptions) -FN_LOCAL_STRING(lp_vfs_path, szVfsPath) FN_LOCAL_STRING(lp_msdfs_proxy, szMSDfsProxy) static FN_LOCAL_STRING(lp_volume, volume) -FN_LOCAL_STRING(lp_mangled_map, szMangledMap) -FN_LOCAL_STRING(lp_veto_files, szVetoFiles) -FN_LOCAL_STRING(lp_hide_files, szHideFiles) -FN_LOCAL_STRING(lp_veto_oplocks, szVetoOplockFiles) FN_LOCAL_STRING(lp_ntvfs_handler, ntvfs_handler) FN_LOCAL_BOOL(lp_msdfs_root, bMSDfsRoot) FN_LOCAL_BOOL(lp_autoloaded, autoloaded) -FN_LOCAL_BOOL(lp_preexec_close, bPreexecClose) -FN_LOCAL_BOOL(lp_rootpreexec_close, bRootpreexecClose) -FN_LOCAL_BOOL(lp_casesensitive, bCaseSensitive) -FN_LOCAL_BOOL(lp_preservecase, bCasePreserve) -FN_LOCAL_BOOL(lp_shortpreservecase, bShortCasePreserve) -FN_LOCAL_BOOL(lp_casemangle, bCaseMangle) -FN_LOCAL_BOOL(lp_hide_dot_files, bHideDotFiles) -FN_LOCAL_BOOL(lp_hide_special_files, bHideSpecialFiles) -FN_LOCAL_BOOL(lp_hideunreadable, bHideUnReadable) -FN_LOCAL_BOOL(lp_hideunwriteable_files, bHideUnWriteableFiles) FN_LOCAL_BOOL(lp_browseable, bBrowseable) FN_LOCAL_BOOL(lp_readonly, bRead_only) -FN_LOCAL_BOOL(lp_no_set_dir, bNo_set_dir) FN_LOCAL_BOOL(lp_guest_ok, bGuest_ok) FN_LOCAL_BOOL(lp_guest_only, bGuest_only) FN_LOCAL_BOOL(lp_print_ok, bPrint_ok) @@ -1812,51 +1333,15 @@ FN_LOCAL_BOOL(lp_share_modes, bShareModes) FN_LOCAL_BOOL(lp_oplocks, bOpLocks) FN_LOCAL_BOOL(lp_level2_oplocks, bLevel2OpLocks) FN_LOCAL_BOOL(lp_onlyuser, bOnlyUser) -FN_LOCAL_BOOL(lp_manglednames, bMangledNames) -FN_LOCAL_BOOL(lp_widelinks, bWidelinks) -FN_LOCAL_BOOL(lp_symlinks, bSymlinks) -FN_LOCAL_BOOL(lp_syncalways, bSyncAlways) -FN_LOCAL_BOOL(lp_strict_allocate, bStrictAllocate) -FN_LOCAL_BOOL(lp_strict_sync, bStrictSync) FN_LOCAL_BOOL(lp_map_system, bMap_system) -FN_LOCAL_BOOL(lp_delete_readonly, bDeleteReadonly) -FN_LOCAL_BOOL(lp_fake_oplocks, bFakeOplocks) -FN_LOCAL_BOOL(lp_recursive_veto_delete, bDeleteVetoFiles) -FN_LOCAL_BOOL(lp_dos_filemode, bDosFilemode) -FN_LOCAL_BOOL(lp_dos_filetimes, bDosFiletimes) -FN_LOCAL_BOOL(lp_dos_filetime_resolution, bDosFiletimeResolution) -FN_LOCAL_BOOL(lp_fake_dir_create_times, bFakeDirCreateTimes) -FN_LOCAL_BOOL(lp_blocking_locks, bBlockingLocks) -FN_LOCAL_BOOL(lp_inherit_perms, bInheritPerms) -FN_LOCAL_BOOL(lp_inherit_acls, bInheritACLS) -FN_LOCAL_BOOL(lp_use_client_driver, bUseClientDriver) -FN_LOCAL_BOOL(lp_default_devmode, bDefaultDevmode) -FN_LOCAL_BOOL(lp_nt_acl_support, bNTAclSupport) -FN_LOCAL_BOOL(lp_use_sendfile, bUseSendfile) -FN_LOCAL_BOOL(lp_profile_acls, bProfileAcls) -FN_LOCAL_INTEGER(lp_create_mask, iCreate_mask) -FN_LOCAL_INTEGER(lp_force_create_mode, iCreate_force_mode) -FN_LOCAL_INTEGER(lp_security_mask, iSecurity_mask) -FN_LOCAL_INTEGER(lp_force_security_mode, iSecurity_force_mode) -FN_LOCAL_INTEGER(lp_dir_mask, iDir_mask) -FN_LOCAL_INTEGER(lp_force_dir_mode, iDir_force_mode) -FN_LOCAL_INTEGER(lp_dir_security_mask, iDir_Security_mask) -FN_LOCAL_INTEGER(lp_force_dir_security_mode, iDir_Security_force_mode) FN_LOCAL_INTEGER(lp_max_connections, iMaxConnections) -FN_LOCAL_INTEGER(lp_defaultcase, iDefaultCase) FN_LOCAL_INTEGER(lp_minprintspace, iMinPrintSpace) FN_LOCAL_INTEGER(lp_printing, iPrinting) -FN_LOCAL_INTEGER(lp_max_reported_jobs, iMaxReportedPrintJobs) -FN_LOCAL_INTEGER(lp_oplock_contention_limit, iOplockContentionLimit) FN_LOCAL_INTEGER(lp_csc_policy, iCSCPolicy) -FN_LOCAL_INTEGER(lp_write_cache_size, iWriteCacheSize) -FN_LOCAL_INTEGER(lp_block_size, iBlock_size) -FN_LOCAL_CHAR(lp_magicchar, magic_char) FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time) FN_GLOBAL_BOOL(lp_hide_local_users, &Globals.bHideLocalUsers) FN_GLOBAL_INTEGER(lp_algorithmic_rid_base, &Globals.AlgorithmicRidBase) FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout) -FN_GLOBAL_BOOL(lp_client_signing, &Globals.client_signing) /* local prototypes */ @@ -2600,113 +2085,6 @@ BOOL lp_file_list_changed(void) return (False); } - -/*************************************************************************** - Do the work of sourcing in environment variable/value pairs. -***************************************************************************/ - -static BOOL source_env(char **lines) -{ - char *varval; - size_t len; - int i; - char *p; - - for (i = 0; lines[i]; i++) { - char *line = lines[i]; - - if ((len = strlen(line)) == 0) - continue; - - if (line[len - 1] == '\n') - line[--len] = '\0'; - - if ((varval = malloc(len + 1)) == NULL) { - DEBUG(0, ("source_env: Not enough memory!\n")); - return (False); - } - - DEBUG(4, ("source_env: Adding to environment: %s\n", line)); - strncpy(varval, line, len); - varval[len] = '\0'; - - p = strchr_m(line, (int)'='); - if (p == NULL) { - DEBUG(4, ("source_env: missing '=': %s\n", line)); - continue; - } - - if (putenv(varval)) { - DEBUG(0, ("source_env: Failed to put environment variable %s\n", - varval)); - continue; - } - - *p = '\0'; - p++; - DEBUG(4, ("source_env: getting var %s = %s\n", line, getenv(line))); - } - - DEBUG(4, ("source_env: returning successfully\n")); - return (True); -} - -/*************************************************************************** - Handle the source environment operation. -***************************************************************************/ - -static BOOL handle_source_env(const char *pszParmValue, char **ptr) -{ - pstring fname; - char *p = fname; - BOOL result; - char **lines; - - pstrcpy(fname, pszParmValue); - - standard_sub_basic(fname,sizeof(fname)); - - string_set(ptr, pszParmValue); - - DEBUG(4, ("handle_source_env: checking env type\n")); - - /* - * Filename starting with '|' means popen and read from stdin. - */ - - if (*p == '|') - lines = file_lines_pload(p + 1, NULL); - else - lines = file_lines_load(fname, NULL); - - if (!lines) { - DEBUG(0, ("handle_source_env: Failed to open file %s, Error was %s\n", - fname, strerror(errno))); - return (False); - } - - result = source_env(lines); - file_lines_free(lines); - - return (result); -} - -/*************************************************************************** - Handle the interpretation of the vfs object parameter. -*************************************************************************/ - -static BOOL handle_vfs_object(const char *pszParmValue, char **ptr) -{ - /* Set string value */ - - string_set(ptr, pszParmValue); - - /* Do any other initialisation required for vfs. Note that - anything done here may have linking repercussions in nmbd. */ - - return True; -} - /*************************************************************************** Handle the include operation. ***************************************************************************/ @@ -2972,19 +2350,6 @@ static BOOL handle_ldap_suffix( const char *pszParmValue, char **ptr) return True; } -static BOOL handle_acl_compatibility(const char *pszParmValue, char **ptr) -{ - if (strequal(pszParmValue, "auto")) - string_set(ptr, ""); - else if (strequal(pszParmValue, "winnt")) - string_set(ptr, "winnt"); - else if (strequal(pszParmValue, "win2k")) - string_set(ptr, "win2k"); - else - return False; - - return True; -} /*************************************************************************** Initialise a copymap. ***************************************************************************/ -- cgit From 0340fec0c1a01339d459c9505614d69ac6a62e9b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 23 Mar 2004 03:17:38 +0000 Subject: put the "max xmit" option back into Samba4 (This used to be commit 82e50a1ce8904c72c90b1e771f232acaad2c835e) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 64b316bbbd..0dcbe64f7f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -149,6 +149,7 @@ typedef struct char *szGuestaccount; int mangled_stack; int max_mux; + int max_xmit; int pwordlevel; int unamelevel; int maxprotocol; @@ -619,6 +620,7 @@ static struct parm_struct parm_table[] = { {"announce version", P_STRING, P_GLOBAL, &Globals.szAnnounceVersion, NULL, NULL, FLAG_DEVELOPER}, {"announce as", P_ENUM, P_GLOBAL, &Globals.announce_as, NULL, enum_announce_as, FLAG_DEVELOPER}, {"max mux", P_INTEGER, P_GLOBAL, &Globals.max_mux, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"max xmit", P_INTEGER, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"name resolve order", P_STRING, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"max ttl", P_INTEGER, P_GLOBAL, &Globals.max_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -972,6 +974,7 @@ static void init_globals(void) Globals.bLoadPrinters = True; Globals.mangled_stack = 50; Globals.max_mux = 50; /* This is *needed* for profile support. */ + Globals.max_xmit = 4356; /* the value w2k3 chooses */ Globals.lpqcachetime = 10; Globals.bDisableSpoolss = False; Globals.pwordlevel = 0; @@ -1280,6 +1283,7 @@ FN_GLOBAL_INTEGER(lp_max_wins_ttl, &Globals.max_wins_ttl) FN_GLOBAL_INTEGER(lp_min_wins_ttl, &Globals.min_wins_ttl) FN_GLOBAL_INTEGER(lp_time_offset, &Globals.time_offset) FN_GLOBAL_INTEGER(lp_maxmux, &Globals.max_mux) +FN_GLOBAL_INTEGER(lp_max_xmit, &Globals.max_xmit) FN_GLOBAL_INTEGER(lp_passwordlevel, &Globals.pwordlevel) FN_GLOBAL_INTEGER(lp_usernamelevel, &Globals.unamelevel) FN_GLOBAL_INTEGER(lp_maxprotocol, &Globals.maxprotocol) -- cgit From 7feebcb33a615c77d8885d625cfc70c501760233 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 21 Apr 2004 14:13:55 +0000 Subject: r311: add srvsvc and wkssvc rpc pipes to the default pipes metze (This used to be commit f1b1bbc5505c112cd66e07da5faa9a65407e9c07) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 0dcbe64f7f..90fc86380e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -930,7 +930,7 @@ static void init_globals(void) string_set(&sDefault.fstype, FSTYPE_STRING); string_set(&sDefault.ntvfs_handler, "default"); - Globals.dcerpc_ep_servers = str_list_make("epmapper rpcecho", NULL); + Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho", NULL); string_set(&Globals.szSMBPasswdFile, dyn_SMB_PASSWD_FILE); string_set(&Globals.szPrivateDir, dyn_PRIVATE_DIR); -- cgit From 63a41d7d4dbdf04b9718757886fdd087ad597d30 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sun, 2 May 2004 11:45:01 +0000 Subject: r448: Fix 'auth' in Samba4, by making 'auth methods' a normal smb.conf paramter, without special links to other variables. When we get 'server role' ideas back into Samba4, we can fix this properly. The default is: guest, sam_ignoredomain which is the expected behaviour for a stand-alone server. Andrew Bartlett (This used to be commit 56ebc4275fedc8141d43a4ae9a4f4f0e1eccaf49) --- source4/param/loadparm.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 90fc86380e..7218b2ecab 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -932,6 +932,8 @@ static void init_globals(void) Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho", NULL); + Globals.AuthMethods = str_list_make("guest sam_ignoredomain", NULL); + string_set(&Globals.szSMBPasswdFile, dyn_SMB_PASSWD_FILE); string_set(&Globals.szPrivateDir, dyn_PRIVATE_DIR); -- cgit From 8db18a0775a66ee3073484b987d4a9ff0fd22c90 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 3 May 2004 14:58:08 +0000 Subject: r458: this is the (very primitive) beginnings of a SAMR server for Samba4. I'm committing this now so I can get comments on the approach. Note that you need to do something like this to initialise the SAM db: edit script/provision.pl script/provision.pl > provision.ldif.out bin/ldbadd /path/to/private/sam.ldb provision.ldif.out (This used to be commit e2002e40a5abe0cd33a2056b1da8ba5732f9021f) --- source4/param/loadparm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 7218b2ecab..d36bd83e66 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -106,6 +106,7 @@ typedef struct char *szLogFile; char *szConfigFile; char *szSMBPasswdFile; + char *szSAM_URL; char *szPrivateDir; char **szPassdbBackend; char **szPreloadModules; @@ -558,6 +559,7 @@ static struct parm_struct parm_table[] = { {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"password server", P_STRING, P_GLOBAL, &Globals.szPasswordServer, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"sam database", P_STRING, P_GLOBAL, &Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -930,12 +932,13 @@ static void init_globals(void) string_set(&sDefault.fstype, FSTYPE_STRING); string_set(&sDefault.ntvfs_handler, "default"); - Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho", NULL); + Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho samr", NULL); Globals.AuthMethods = str_list_make("guest sam_ignoredomain", NULL); string_set(&Globals.szSMBPasswdFile, dyn_SMB_PASSWD_FILE); string_set(&Globals.szPrivateDir, dyn_PRIVATE_DIR); + asprintf(&Globals.szSAM_URL, "tdb://%s/sam.ldb", dyn_PRIVATE_DIR); /* use the new 'hash2' method by default, with a prefix of 1 */ @@ -1182,6 +1185,7 @@ FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) FN_GLOBAL_STRING(lp_smb_passwd_file, &Globals.szSMBPasswdFile) +FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) FN_GLOBAL_STRING(lp_printcapname, &Globals.szPrintcapname) -- cgit From 064e7447bebd715c8351d9a0ee31f648990f2336 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sat, 15 May 2004 07:51:38 +0000 Subject: r743: Start on a NETLOGON server in Samba4. Currently this only authentiates the machine, not real users. As a consequence of running the Samba4 NETLOGON test against Samba4, I found a number of issues in the SAMR server, which I have addressed. There are more templates in the provison.ldif for this reason. I also added some debug to our credentials code, and fixed some bugs in the auth_sam module. The static buffer in generate_random_string() bit me badly, so I removed it in favor of a talloc based system. Andrew Bartlett (This used to be commit 94624e519b66def97758b8a48a01ffe9029176f0) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index d36bd83e66..3cd6b0b9ef 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -932,7 +932,7 @@ static void init_globals(void) string_set(&sDefault.fstype, FSTYPE_STRING); string_set(&sDefault.ntvfs_handler, "default"); - Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho samr", NULL); + Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho samr netlogon", NULL); Globals.AuthMethods = str_list_make("guest sam_ignoredomain", NULL); -- cgit From c5e11daa8bb00665efabbf7939062e7e60112ced Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 22 May 2004 11:16:21 +0000 Subject: r818: added server side SMB signing to Samba4 (This used to be commit 8e5ddf5e8eb74f667897f90baa2d00f02ca5818b) --- source4/param/loadparm.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 3cd6b0b9ef..f357703013 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -211,6 +211,7 @@ typedef struct BOOL bLanmanAuth; BOOL bNTLMAuth; BOOL bUseSpnego; + BOOL server_signing; BOOL bClientLanManAuth; BOOL bClientNTLMv2Auth; BOOL bHostMSDfs; @@ -487,6 +488,27 @@ static const struct enum_list enum_csc_policy[] = { {-1, NULL} }; +/* SMB signing types. */ +static const struct enum_list enum_smb_signing_vals[] = { + {SMB_SIGNING_OFF, "No"}, + {SMB_SIGNING_OFF, "False"}, + {SMB_SIGNING_OFF, "0"}, + {SMB_SIGNING_OFF, "Off"}, + {SMB_SIGNING_OFF, "disabled"}, + {SMB_SIGNING_SUPPORTED, "Yes"}, + {SMB_SIGNING_SUPPORTED, "True"}, + {SMB_SIGNING_SUPPORTED, "1"}, + {SMB_SIGNING_SUPPORTED, "On"}, + {SMB_SIGNING_SUPPORTED, "enabled"}, + {SMB_SIGNING_SUPPORTED, "auto"}, + {SMB_SIGNING_REQUIRED, "required"}, + {SMB_SIGNING_REQUIRED, "mandatory"}, + {SMB_SIGNING_REQUIRED, "force"}, + {SMB_SIGNING_REQUIRED, "forced"}, + {SMB_SIGNING_REQUIRED, "enforced"}, + {-1, NULL} +}; + /* Do you want session setups at user level security with a invalid password to be rejected or allowed in as guest? WinNT rejects them @@ -631,6 +653,7 @@ static struct parm_struct parm_table[] = { {"time server", P_BOOL, P_GLOBAL, &Globals.bTimeServer, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"unix extensions", P_BOOL, P_GLOBAL, &Globals.bUnixExtensions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"use spnego", P_BOOL, P_GLOBAL, &Globals.bUseSpnego, NULL, NULL, FLAG_DEVELOPER}, + {"server signing", P_ENUM, P_GLOBAL, &Globals.server_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, {"rpc big endian", P_BOOL, P_GLOBAL, &Globals.bRpcBigEndian, NULL, NULL, FLAG_DEVELOPER}, {"Tuning Options", P_SEP, P_SEPARATOR}, @@ -1083,6 +1106,8 @@ static void init_globals(void) Globals.bUseSpnego = True; + Globals.server_signing = False; + string_set(&Globals.smb_ports, SMB_PORTS); } @@ -1352,6 +1377,7 @@ FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time) FN_GLOBAL_BOOL(lp_hide_local_users, &Globals.bHideLocalUsers) FN_GLOBAL_INTEGER(lp_algorithmic_rid_base, &Globals.AlgorithmicRidBase) FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout) +FN_GLOBAL_INTEGER(lp_server_signing, &Globals.server_signing) /* local prototypes */ -- cgit From b63cd185b921d2c248e99cb3eea7dfc882c92c90 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 24 May 2004 05:07:04 +0000 Subject: r838: got rid of rpc_misc.h (This used to be commit f61d333b2a280434181451ce735a05ad319a2515) --- source4/param/loadparm.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index f357703013..f000509e47 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -139,7 +139,6 @@ typedef struct char *szWinbindUID; char *szWinbindGID; char *szNonUnixAccountRange; - int AlgorithmicRidBase; char *szTemplateHomedir; char *szTemplateShell; char *szWinbindSeparator; @@ -585,7 +584,6 @@ static struct parm_struct parm_table[] = { {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"algorithmic rid base", P_INTEGER, P_GLOBAL, &Globals.AlgorithmicRidBase, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"root dir", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"root", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_HIDE | FLAG_DEVELOPER}, @@ -997,8 +995,6 @@ static void init_globals(void) string_set(&Globals.szPasswordServer, "*"); - Globals.AlgorithmicRidBase = BASE_RID; - Globals.bLoadPrinters = True; Globals.mangled_stack = 50; Globals.max_mux = 50; /* This is *needed* for profile support. */ @@ -1375,7 +1371,6 @@ FN_LOCAL_INTEGER(lp_printing, iPrinting) FN_LOCAL_INTEGER(lp_csc_policy, iCSCPolicy) FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time) FN_GLOBAL_BOOL(lp_hide_local_users, &Globals.bHideLocalUsers) -FN_GLOBAL_INTEGER(lp_algorithmic_rid_base, &Globals.AlgorithmicRidBase) FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout) FN_GLOBAL_INTEGER(lp_server_signing, &Globals.server_signing) -- cgit From 1f033febfe19d6bb0b45524a672eaf1d1373f15e Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 24 May 2004 22:05:06 +0000 Subject: r861: remove the next round of unused stuff metze (This used to be commit 8f59daba0d03a2c58f7f23655153de05cbe47e81) --- source4/param/loadparm.c | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index f000509e47..1ee1ef157e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2994,29 +2994,7 @@ BOOL lp_snum_ok(int iService) static void lp_add_auto_services(char *str) { - char *s; - char *p; - int homes; - - if (!str) - return; - - s = strdup(str); - if (!s) - return; - - homes = lp_servicenumber(HOMES_NAME); - - for (p = strtok(s, LIST_SEP); p; p = strtok(NULL, LIST_SEP)) { - char *home = get_user_home_dir(p); - - if (lp_servicenumber(p) >= 0) - continue; - - if (home && homes >= 0) - lp_add_home(p, homes, p, home); - } - SAFE_FREE(s); + return; } /*************************************************************************** -- cgit From f9d8f8843dc0ab8c9d59abde7222e0f118b86b5d Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 25 May 2004 16:24:13 +0000 Subject: r884: convert samba4 to use [u]int32_t instead of [u]int32 metze (This used to be commit 0e5517d937a2eb7cf707991d1c7498c1ab456095) --- source4/param/loadparm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 1ee1ef157e..199ae5f3c2 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2193,7 +2193,7 @@ static BOOL handle_copy(const char *pszParmValue, char **ptr) static uid_t winbind_uid_low, winbind_uid_high; static gid_t winbind_gid_low, winbind_gid_high; -static uint32 non_unix_account_low, non_unix_account_high; +static uint32_t non_unix_account_low, non_unix_account_high; BOOL lp_winbind_uid(uid_t *low, uid_t *high) { @@ -2223,7 +2223,7 @@ BOOL lp_winbind_gid(gid_t *low, gid_t *high) return True; } -BOOL lp_non_unix_account_range(uint32 *low, uint32 *high) +BOOL lp_non_unix_account_range(uint32_t *low, uint32_t *high) { if (non_unix_account_low == 0 || non_unix_account_high == 0) return False; @@ -2241,7 +2241,7 @@ BOOL lp_non_unix_account_range(uint32 *low, uint32 *high) static BOOL handle_winbind_uid(const char *pszParmValue, char **ptr) { - uint32 low, high; + uint32_t low, high; if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low) return False; @@ -2258,7 +2258,7 @@ static BOOL handle_winbind_uid(const char *pszParmValue, char **ptr) static BOOL handle_winbind_gid(const char *pszParmValue, char **ptr) { - uint32 low, high; + uint32_t low, high; if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low) return False; @@ -2279,7 +2279,7 @@ static BOOL handle_winbind_gid(const char *pszParmValue, char **ptr) static BOOL handle_non_unix_account_range(const char *pszParmValue, char **ptr) { - uint32 low, high; + uint32_t low, high; if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low) return False; -- cgit From db3c011977e9aad535be298d64fa63af61c0669c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 27 May 2004 04:13:58 +0000 Subject: r917: - added the start of a LSA server to samba4. - added start of QueryDomainInfo in samr server "net rpc info" from samba3 now works against a samba4 server. I suspect join will work fairly soon. (This used to be commit 0a2c6a1062d0e364356853001f5f39bdb542f453) --- source4/param/loadparm.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 199ae5f3c2..dba8a01dfd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -953,7 +953,7 @@ static void init_globals(void) string_set(&sDefault.fstype, FSTYPE_STRING); string_set(&sDefault.ntvfs_handler, "default"); - Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho samr netlogon", NULL); + Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc", NULL); Globals.AuthMethods = str_list_make("guest sam_ignoredomain", NULL); @@ -961,8 +961,6 @@ static void init_globals(void) string_set(&Globals.szPrivateDir, dyn_PRIVATE_DIR); asprintf(&Globals.szSAM_URL, "tdb://%s/sam.ldb", dyn_PRIVATE_DIR); - /* use the new 'hash2' method by default, with a prefix of 1 */ - string_set(&Globals.szGuestaccount, GUEST_ACCOUNT); /* using UTF8 by default allows us to support all chars */ -- cgit From b1268fc4455f61ee49412fc256106cd34e98ce7c Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sun, 13 Jun 2004 23:50:55 +0000 Subject: r1123: Make all lp_ string functions return 'const char *'. Fix other 'const' warnings in the torture code. Andrew Bartlett (This used to be commit 5d39d7497f189da15d659b3f83b7314026040a15) --- source4/param/loadparm.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index dba8a01dfd..029d5aade8 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1125,7 +1125,7 @@ void lp_talloc_free(void) callers without affecting the source string. ********************************************************************/ -static char *lp_string(const char *s) +static const char *lp_string(const char *s) { #if 0 /* until REWRITE done to make thread-safe */ size_t len = s ? strlen(s) : 0; @@ -1172,7 +1172,7 @@ static char *lp_string(const char *s) */ #define FN_GLOBAL_STRING(fn_name,ptr) \ - char *fn_name(void) {return(lp_string(*(char **)(ptr) ? *(char **)(ptr) : ""));} + const char *fn_name(void) {return(lp_string(*(char **)(ptr) ? *(char **)(ptr) : ""));} #define FN_GLOBAL_CONST_STRING(fn_name,ptr) \ const char *fn_name(void) {return(*(const char **)(ptr) ? *(const char **)(ptr) : "");} #define FN_GLOBAL_LIST(fn_name,ptr) \ @@ -1185,7 +1185,7 @@ static char *lp_string(const char *s) int fn_name(void) {return(*(int *)(ptr));} #define FN_LOCAL_STRING(fn_name,val) \ - char *fn_name(int i) {return(lp_string((LP_SNUM_OK(i) && ServicePtrs[(i)]->val) ? ServicePtrs[(i)]->val : sDefault.val));} + const char *fn_name(int i) {return(lp_string((LP_SNUM_OK(i) && ServicePtrs[(i)]->val) ? ServicePtrs[(i)]->val : sDefault.val));} #define FN_LOCAL_CONST_STRING(fn_name,val) \ const char *fn_name(int i) {return (const char *)((LP_SNUM_OK(i) && ServicePtrs[(i)]->val) ? ServicePtrs[(i)]->val : sDefault.val);} #define FN_LOCAL_LIST(fn_name,val) \ @@ -1500,7 +1500,7 @@ static int lp_enum(const char *s,const struct enum_list *_enum) /* Parametric option has following syntax: 'Type: option = value' */ /* Returned value is allocated in 'lp_talloc' context */ -char *lp_parm_string(int lookup_service, const char *type, const char *option) +const char *lp_parm_string(int lookup_service, const char *type, const char *option) { const char *value = get_parametrics(lookup_service, type, option); @@ -2990,7 +2990,7 @@ BOOL lp_snum_ok(int iService) Auto-load some home services. ***************************************************************************/ -static void lp_add_auto_services(char *str) +static void lp_add_auto_services(const char *str) { return; } @@ -3325,9 +3325,9 @@ int lp_servicenumber(const char *pszServiceName) /******************************************************************* A useful volume label function. ********************************************************************/ -char *volume_label(int snum) +const char *volume_label(int snum) { - char *ret = lp_volume(snum); + const char *ret = lp_volume(snum); if (!*ret) return lp_servicename(snum); return (ret); @@ -3431,7 +3431,7 @@ void lp_remove_service(int snum) void lp_copy_service(int snum, const char *new_name) { - char *oldname = lp_servicename(snum); + const char *oldname = lp_servicename(snum); do_section(new_name); if (snum >= 0) { snum = lp_servicenumber(new_name); @@ -3458,7 +3458,7 @@ int lp_major_announce_version(void) { static BOOL got_major = False; static int major_version = DEFAULT_MAJOR_VERSION; - char *vers; + const char *vers; char *p; if (got_major) @@ -3480,7 +3480,7 @@ int lp_minor_announce_version(void) { static BOOL got_minor = False; static int minor_version = DEFAULT_MINOR_VERSION; - char *vers; + const char *vers; char *p; if (got_minor) -- cgit From 7936b76e6a7d3c3436afe16ed3b8aa2be13fbcb5 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Sun, 20 Jun 2004 11:33:06 +0000 Subject: r1207: Add spoolss to the list of endpoint servers. (This used to be commit 2b9f364ed052c43b6074da9f5f03908ac81840f3) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 029d5aade8..2e1da1ac31 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -953,7 +953,7 @@ static void init_globals(void) string_set(&sDefault.fstype, FSTYPE_STRING); string_set(&sDefault.ntvfs_handler, "default"); - Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc", NULL); + Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss", NULL); Globals.AuthMethods = str_list_make("guest sam_ignoredomain", NULL); -- cgit From fea69453bd653fffdc00a27cd3fdebebbe967ce1 Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 21 Jun 2004 06:55:01 +0000 Subject: r1210: A skeleton spoolssdb, based on samdb. (This used to be commit 487211f1ae105fd1972fecf521654dab81175c86) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 2e1da1ac31..0245d18c45 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -107,6 +107,7 @@ typedef struct char *szConfigFile; char *szSMBPasswdFile; char *szSAM_URL; + char *szSPOOLSS_URL; char *szPrivateDir; char **szPassdbBackend; char **szPreloadModules; @@ -581,6 +582,7 @@ static struct parm_struct parm_table[] = { {"password server", P_STRING, P_GLOBAL, &Globals.szPasswordServer, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"sam database", P_STRING, P_GLOBAL, &Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"spoolss database", P_STRING, P_GLOBAL, &Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -960,6 +962,7 @@ static void init_globals(void) string_set(&Globals.szSMBPasswdFile, dyn_SMB_PASSWD_FILE); string_set(&Globals.szPrivateDir, dyn_PRIVATE_DIR); asprintf(&Globals.szSAM_URL, "tdb://%s/sam.ldb", dyn_PRIVATE_DIR); + asprintf(&Globals.szSPOOLSS_URL, "tdb://%s/spoolss.ldb", dyn_PRIVATE_DIR); string_set(&Globals.szGuestaccount, GUEST_ACCOUNT); @@ -1205,6 +1208,7 @@ FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) FN_GLOBAL_STRING(lp_smb_passwd_file, &Globals.szSMBPasswdFile) FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) +FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) FN_GLOBAL_STRING(lp_printcapname, &Globals.szPrintcapname) -- cgit From d4ae6ae74d712b74800e360590052d318d2fd101 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 28 Jun 2004 07:41:15 +0000 Subject: r1277: rename struct server_context to smbsrv_ontext because I need server_context fot the generic server infastructure metze (This used to be commit 0712f9f30797e65362c99423c0cf158a2f539000) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 0245d18c45..c3d4c6c8dd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -3039,7 +3039,7 @@ BOOL lp_loaded(void) Unload unused services. ***************************************************************************/ -void lp_killunused(struct server_context *smb, BOOL (*snumused) (struct server_context *, int)) +void lp_killunused(struct smbsrv_context *smb, BOOL (*snumused) (struct smbsrv_context *, int)) { int i; for (i = 0; i < iNumServices; i++) { -- cgit From 118f3edd27f5adacc1da636ed05b33f04999584f Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 29 Jun 2004 07:40:14 +0000 Subject: r1291: rename struct smbsrv_context to smbsrv_connection because this is the connection state per transport layer (tcp) connection I also moved the substructs directly into smbsrv_connection, because they don't need a struct name and we should allway pass the complete smbsrv_connection struct into functions metze (This used to be commit 60f823f201fcedf5473008e8453a6351e73a92c7) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c3d4c6c8dd..68a16501d2 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -3039,7 +3039,7 @@ BOOL lp_loaded(void) Unload unused services. ***************************************************************************/ -void lp_killunused(struct smbsrv_context *smb, BOOL (*snumused) (struct smbsrv_context *, int)) +void lp_killunused(struct smbsrv_connection *smb, BOOL (*snumused) (struct smbsrv_connection *, int)) { int i; for (i = 0; i < iNumServices; i++) { -- cgit From 4f0e5e069064c11a8efc407cd42412d38534d0d2 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 5 Jul 2004 23:28:49 +0000 Subject: r1345: add extended security spnego support to the smb client code set lp_use_spnego = False, because I can't get it working yet but I commit it so others can help me metze (This used to be commit 2445cceba9ab9bd928c8bc50927a39509e4526b0) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 68a16501d2..33019c1bf1 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1101,7 +1101,7 @@ static void init_globals(void) Globals.name_cache_timeout = 660; /* In seconds */ - Globals.bUseSpnego = True; + Globals.bUseSpnego = False; Globals.server_signing = False; -- cgit From 0fa2b94c5629104000afe12e7eb0447ac515613f Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 8 Jul 2004 18:03:14 +0000 Subject: r1406: I got spnego in the smb client working so I set 'use spnego = True' metze (This used to be commit e06898f88c82c286574f9d73de1a9de829b1ded8) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 33019c1bf1..68a16501d2 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1101,7 +1101,7 @@ static void init_globals(void) Globals.name_cache_timeout = 660; /* In seconds */ - Globals.bUseSpnego = False; + Globals.bUseSpnego = True; Globals.server_signing = False; -- cgit From 88002b851bd30e3c03a5a9442baf3ced7aa6090f Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 12 Jul 2004 09:11:13 +0000 Subject: r1462: GENSEC Kerberos and SPENGO work: - Spelling - it's SPNEGO, not SPENGO - SMB signing - Krb5 logins are now correctly signed - SPNEGO - Changes to always tell GENSEC about incoming packets, empty or not. Andrew Bartlett (This used to be commit cea578d6f39a2ea4a24e7a0064c95193ab6f6df7) --- source4/param/loadparm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 68a16501d2..5493b2617c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -212,6 +212,7 @@ typedef struct BOOL bNTLMAuth; BOOL bUseSpnego; BOOL server_signing; + BOOL client_signing; BOOL bClientLanManAuth; BOOL bClientNTLMv2Auth; BOOL bHostMSDfs; @@ -654,6 +655,7 @@ static struct parm_struct parm_table[] = { {"unix extensions", P_BOOL, P_GLOBAL, &Globals.bUnixExtensions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"use spnego", P_BOOL, P_GLOBAL, &Globals.bUseSpnego, NULL, NULL, FLAG_DEVELOPER}, {"server signing", P_ENUM, P_GLOBAL, &Globals.server_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, + {"client signing", P_ENUM, P_GLOBAL, &Globals.client_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, {"rpc big endian", P_BOOL, P_GLOBAL, &Globals.bRpcBigEndian, NULL, NULL, FLAG_DEVELOPER}, {"Tuning Options", P_SEP, P_SEPARATOR}, @@ -1103,7 +1105,8 @@ static void init_globals(void) Globals.bUseSpnego = True; - Globals.server_signing = False; + Globals.client_signing = SMB_SIGNING_SUPPORTED; + Globals.server_signing = SMB_SIGNING_SUPPORTED; string_set(&Globals.smb_ports, SMB_PORTS); } @@ -1375,6 +1378,7 @@ FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time) FN_GLOBAL_BOOL(lp_hide_local_users, &Globals.bHideLocalUsers) FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout) FN_GLOBAL_INTEGER(lp_server_signing, &Globals.server_signing) +FN_GLOBAL_INTEGER(lp_client_signing, &Globals.client_signing) /* local prototypes */ -- cgit From 45a85bdd353418828df8017a9d7eb7c14f6f0cd3 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 13 Jul 2004 21:04:56 +0000 Subject: r1486: commit the start of the generic server infastructure the idea is to have services as modules (smb, dcerpc, swat, ...) the process_model don't know about the service it self anymore. TODO: - the smbsrv should use the smbsrv_send function - the service subsystem init should be done like for other modules - we need to have a generic socket subsystem, which handle stream, datagram, and virtuell other sockets( e.g. for the ntvfs_ipc module to connect to the dcerpc server , or for smb or dcerpc or whatever to connect to a server wide auth service) - and other fixes... NOTE: process model pthread seems to be broken( but also before this patch!) metze (This used to be commit bbe5e00715ca4013ff0dbc345aa97adc6b5c2458) --- source4/param/loadparm.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 5493b2617c..293df3bb1f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -137,6 +137,7 @@ typedef struct char *szWINSHook; char *szWINSPartners; char **dcerpc_ep_servers; + char **server_services; char *szWinbindUID; char *szWinbindGID; char *szNonUnixAccountRange; @@ -568,6 +569,7 @@ static struct parm_struct parm_table[] = { {"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"ntvfs handler", P_STRING, P_LOCAL, &sDefault.ntvfs_handler, NULL, NULL, FLAG_ADVANCED}, {"dcerpc endpoint servers", P_LIST, P_GLOBAL, &Globals.dcerpc_ep_servers, NULL, NULL, FLAG_ADVANCED}, + {"server services", P_LIST, P_GLOBAL, &Globals.server_services, NULL, NULL, FLAG_ADVANCED}, {"Security Options", P_SEP, P_SEPARATOR}, @@ -959,6 +961,8 @@ static void init_globals(void) Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss", NULL); + Globals.server_services = str_list_make("smb rpc", NULL); + Globals.AuthMethods = str_list_make("guest sam_ignoredomain", NULL); string_set(&Globals.szSMBPasswdFile, dyn_SMB_PASSWD_FILE); @@ -1218,6 +1222,7 @@ FN_GLOBAL_STRING(lp_printcapname, &Globals.szPrintcapname) FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) +FN_GLOBAL_LIST(lp_server_services, &Globals.server_services) FN_GLOBAL_STRING(lp_rootdir, &Globals.szRootdir) FN_GLOBAL_STRING(lp_defaultservice, &Globals.szDefaultService) FN_GLOBAL_STRING(lp_hosts_equiv, &Globals.szHostsEquiv) -- cgit From 112c2c831b96ae8f454a93483ffdf924a8f91a88 Mon Sep 17 00:00:00 2001 From: Jim McDonough Date: Wed, 28 Jul 2004 13:08:08 +0000 Subject: r1596: Fix up copyrights. (This used to be commit d2553aac0a75591026b9b1fcf46065e5b03ed19c) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 293df3bb1f..a0582b6f46 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -8,7 +8,7 @@ Copyright (C) Simo Sorce 2001 Copyright (C) Alexander Bokovoy 2002 Copyright (C) Stefan (metze) Metzmacher 2002 - Copyright (C) Anthony Liguori 2003 + Copyright (C) Jim McDonough (jmcd@us.ibm.com) 2003. Copyright (C) James Myers 2003 This program is free software; you can redistribute it and/or modify -- cgit From 64082214337e2ab50f0a69ca7f9bcf56762129cc Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 14 Aug 2004 05:56:12 +0000 Subject: r1819: changed "smb ports" to be a LIST parameter type in loadparm (its a classic case for a list) (This used to be commit e53d32c65ab0751b3e01f4f699f5d0e1892369ae) --- source4/param/loadparm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index a0582b6f46..fa6a658e20 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -89,7 +89,7 @@ struct param_opt { */ typedef struct { - char *smb_ports; + char **smb_ports; char *dos_charset; char *unix_charset; char *display_charset; @@ -633,7 +633,7 @@ static struct parm_struct parm_table[] = { {"Protocol Options", P_SEP, P_SEPARATOR}, - {"smb ports", P_STRING, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"smb ports", P_LIST, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, {"min protocol", P_ENUM, P_GLOBAL, &Globals.minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -1112,7 +1112,7 @@ static void init_globals(void) Globals.client_signing = SMB_SIGNING_SUPPORTED; Globals.server_signing = SMB_SIGNING_SUPPORTED; - string_set(&Globals.smb_ports, SMB_PORTS); + Globals.smb_ports = str_list_make(SMB_PORTS, NULL); } static TALLOC_CTX *lp_talloc; @@ -1207,7 +1207,7 @@ static const char *lp_string(const char *s) #define FN_LOCAL_INTEGER(fn_name,val) \ int fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} -FN_GLOBAL_STRING(lp_smb_ports, &Globals.smb_ports) +FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) -- cgit From 8293df91bcec574fb4a2b290cc11dd83353264ae Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Wed, 8 Sep 2004 00:00:56 +0000 Subject: r2247: talloc_destroy -> talloc_free (This used to be commit 6c1a72c5d667245b1eec94f58e68acd22dd720ce) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index fa6a658e20..0d7bbb6d18 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1125,7 +1125,7 @@ void lp_talloc_free(void) { if (!lp_talloc) return; - talloc_destroy(lp_talloc); + talloc_free(lp_talloc); lp_talloc = NULL; } -- cgit From 871604e3101edfd4c17eec5b05077eeb5674b26b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 13 Sep 2004 01:27:37 +0000 Subject: r2302: added a '--option' option, allowing any global or default option in smb.conf to be set on the command line. For example, you can use: smbtorture --option 'unicode=false' or smbtorture --option 'netbios name=myname' (This used to be commit 360a6b530e2295976ddefc138d1333411a94484d) --- source4/param/loadparm.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 0d7bbb6d18..7ae4a29483 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2639,6 +2639,33 @@ BOOL lp_set_cmdline(const char *pszParmName, const char *pszParmValue) return True; } +/* + set a option from the commandline in 'a=b' format. Use to support --option +*/ +BOOL lp_set_option(const char *option) +{ + char *p, *s; + BOOL ret; + + s = strdup(option); + if (!s) { + return False; + } + + p = strchr(s, '='); + if (!p) { + free(s); + return False; + } + + *p = 0; + + ret = lp_set_cmdline(s, p+1); + free(s); + return ret; +} + + /*************************************************************************** Print a parameter of the specified type. ***************************************************************************/ -- cgit From 4456f87dee1b9ee130f290ba9b7fb61a89b72333 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 13 Sep 2004 03:55:28 +0000 Subject: r2306: in lp_set_cmdline(), also set any aliases as having been set by the commandline (This used to be commit 2c0b5e119eddc6389500bcc80d1ae417dd9bfbb9) --- source4/param/loadparm.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 7ae4a29483..33612e1732 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2622,6 +2622,7 @@ static BOOL do_parameter(const char *pszParmName, const char *pszParmValue) BOOL lp_set_cmdline(const char *pszParmName, const char *pszParmValue) { int parmnum = map_parameter(pszParmName); + int i; if (parmnum < 0 && strchr(pszParmName, ':')) { /* set a parametric option */ @@ -2636,6 +2637,15 @@ BOOL lp_set_cmdline(const char *pszParmName, const char *pszParmValue) } parm_table[parmnum].flags |= FLAG_CMDLINE; + + /* we have to also set FLAG_CMDLINE on aliases */ + for (i=parmnum-1;i>=0 && parm_table[i].ptr == parm_table[parmnum].ptr;i--) { + parm_table[i].flags |= FLAG_CMDLINE; + } + for (i=parmnum+1;i Date: Mon, 13 Sep 2004 05:05:46 +0000 Subject: r2309: make loadparm handling much more consistent, by using do_parameter() to process init_globals(). This also allows all global options to be set using lp_set_cmdline() or --option a side effect is that init_globals() is slower. If this turns out to be a problem we can try a different approach. (This used to be commit ccfc2106a03bd5143d28e6fdedab773cf7abbe5a) --- source4/param/loadparm.c | 516 +++++++++++++++-------------------------------- 1 file changed, 161 insertions(+), 355 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 33612e1732..426133a05e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -74,6 +74,7 @@ static BOOL bLoaded = False; #define VALID(i) ServicePtrs[i]->valid static BOOL do_parameter(const char *, const char *); +static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...); static BOOL defaults_saved = False; @@ -109,7 +110,6 @@ typedef struct char *szSAM_URL; char *szSPOOLSS_URL; char *szPrivateDir; - char **szPassdbBackend; char **szPreloadModules; char *szPasswordServer; char *szSocketOptions; @@ -149,7 +149,6 @@ typedef struct BOOL bWinbindUseDefaultDomain; char *szIDMapBackend; char *szGuestaccount; - int mangled_stack; int max_mux; int max_xmit; int pwordlevel; @@ -174,19 +173,7 @@ typedef struct int winbind_cache_time; int iLockSpinCount; int iLockSpinTime; - char *szLdapMachineSuffix; - char *szLdapUserSuffix; -#ifdef WITH_LDAP_SAMCONFIG - int ldap_port; - char *szLdapServer; -#endif char *socket_options; - int ldap_ssl; - char *szLdapSuffix; - char *szLdapFilter; - char *szLdapAdminDn; - BOOL ldap_trust_ids; - int ldap_passwd_sync; BOOL bDNSproxy; BOOL bWINSsupport; BOOL bWINSproxy; @@ -195,7 +182,6 @@ typedef struct BOOL bDomainMaster; BOOL bDomainLogons; BOOL bEncryptPasswords; - BOOL bUpdateEncrypt; BOOL bNullPasswords; BOOL bObeyPamRestrictions; BOOL bLoadPrinters; @@ -205,7 +191,6 @@ typedef struct BOOL bTimeServer; BOOL bBindInterfacesOnly; BOOL bPamPasswordChange; - BOOL bUnixPasswdSync; BOOL bNTSmbSupport; BOOL bNTStatusSupport; BOOL bAllowTrustedDomains; @@ -365,10 +350,6 @@ static BOOL handle_winbind_uid(const char *pszParmValue, char **ptr); static BOOL handle_winbind_gid(const char *pszParmValue, char **ptr); static BOOL handle_non_unix_account_range(const char *pszParmValue, char **ptr); -static BOOL handle_ldap_machine_suffix ( const char *pszParmValue, char **ptr ); -static BOOL handle_ldap_user_suffix ( const char *pszParmValue, char **ptr ); -static BOOL handle_ldap_suffix ( const char *pszParmValue, char **ptr ); - static void set_server_role(void); static void set_default_server_announce_type(void); @@ -412,38 +393,6 @@ static const struct enum_list enum_printing[] = { {-1, NULL} }; -static const struct enum_list enum_ldap_ssl[] = { -#ifdef WITH_LDAP_SAMCONFIG - {LDAP_SSL_ON, "Yes"}, - {LDAP_SSL_ON, "yes"}, - {LDAP_SSL_ON, "on"}, - {LDAP_SSL_ON, "On"}, -#endif - {LDAP_SSL_OFF, "no"}, - {LDAP_SSL_OFF, "No"}, - {LDAP_SSL_OFF, "off"}, - {LDAP_SSL_OFF, "Off"}, - {LDAP_SSL_START_TLS, "start tls"}, - {LDAP_SSL_START_TLS, "Start_tls"}, - {-1, NULL} -}; - -static const struct enum_list enum_ldap_passwd_sync[] = { - {LDAP_PASSWD_SYNC_ON, "Yes"}, - {LDAP_PASSWD_SYNC_ON, "yes"}, - {LDAP_PASSWD_SYNC_ON, "on"}, - {LDAP_PASSWD_SYNC_ON, "On"}, - {LDAP_PASSWD_SYNC_OFF, "no"}, - {LDAP_PASSWD_SYNC_OFF, "No"}, - {LDAP_PASSWD_SYNC_OFF, "off"}, - {LDAP_PASSWD_SYNC_OFF, "Off"}, -#ifdef LDAP_EXOP_X_MODIFY_PASSWD - {LDAP_PASSWD_SYNC_ONLY, "Only"}, - {LDAP_PASSWD_SYNC_ONLY, "only"}, -#endif /* LDAP_EXOP_X_MODIFY_PASSWD */ - {-1, NULL} -}; - /* Types of machine we can announce as. */ #define ANNOUNCE_AS_NT_SERVER 1 #define ANNOUNCE_AS_WIN95 2 @@ -576,7 +525,6 @@ static struct parm_struct parm_table[] = { {"security", P_ENUM, P_GLOBAL, &Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"auth methods", P_LIST, P_GLOBAL, &Globals.AuthMethods, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"encrypt passwords", P_BOOL, P_GLOBAL, &Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"update encrypted", P_BOOL, P_GLOBAL, &Globals.bUpdateEncrypt, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"allow trusted domains", P_BOOL, P_GLOBAL, &Globals.bAllowTrustedDomains, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"hosts equiv", P_STRING, P_GLOBAL, &Globals.szHostsEquiv, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"idmap backend", P_STRING, P_GLOBAL, &Globals.szIDMapBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -587,7 +535,6 @@ static struct parm_struct parm_table[] = { {"sam database", P_STRING, P_GLOBAL, &Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"spoolss database", P_STRING, P_GLOBAL, &Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"root dir", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -599,7 +546,6 @@ static struct parm_struct parm_table[] = { {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"username level", P_INTEGER, P_GLOBAL, &Globals.unamelevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"unix password sync", P_BOOL, P_GLOBAL, &Globals.bUnixPasswdSync, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"restrict anonymous", P_INTEGER, P_GLOBAL, &Globals.restrict_anonymous, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"lanman auth", P_BOOL, P_GLOBAL, &Globals.bLanmanAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"ntlm auth", P_BOOL, P_GLOBAL, &Globals.bNTLMAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -696,7 +642,6 @@ static struct parm_struct parm_table[] = { {"Filename Handling", P_SEP, P_SEPARATOR}, - {"mangled stack", P_INTEGER, P_GLOBAL, &Globals.mangled_stack, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"map system", P_BOOL, P_LOCAL, &sDefault.bMap_system, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"map hidden", P_BOOL, P_LOCAL, &sDefault.bMap_hidden, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, @@ -751,21 +696,6 @@ static struct parm_struct parm_table[] = { {"strict locking", P_BOOL, P_LOCAL, &sDefault.bStrictLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"share modes", P_BOOL, P_LOCAL, &sDefault.bShareModes, NULL, NULL, FLAG_SHARE|FLAG_GLOBAL}, - {"Ldap Options", P_SEP, P_SEPARATOR}, - -#ifdef WITH_LDAP_SAMCONFIG - {"ldap server", P_STRING, P_GLOBAL, &Globals.szLdapServer, NULL, NULL, 0}, - {"ldap port", P_INTEGER, P_GLOBAL, &Globals.ldap_port, NULL, NULL, 0}, -#endif - {"ldap suffix", P_STRING, P_GLOBAL, &Globals.szLdapSuffix, handle_ldap_suffix, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ldap machine suffix", P_STRING, P_GLOBAL, &Globals.szLdapMachineSuffix, handle_ldap_machine_suffix, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ldap user suffix", P_STRING, P_GLOBAL, &Globals.szLdapUserSuffix, handle_ldap_user_suffix, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ldap filter", P_STRING, P_GLOBAL, &Globals.szLdapFilter, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ldap admin dn", P_STRING, P_GLOBAL, &Globals.szLdapAdminDn, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ldap ssl", P_ENUM, P_GLOBAL, &Globals.ldap_ssl, NULL, enum_ldap_ssl, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ldap passwd sync", P_ENUM, P_GLOBAL, &Globals.ldap_passwd_sync, NULL, enum_ldap_passwd_sync, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ldap trust ids", P_BOOL, P_GLOBAL, &Globals.ldap_trust_ids, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"Miscellaneous Options", P_SEP, P_SEPARATOR}, {"config file", P_STRING, P_GLOBAL, &Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, @@ -823,103 +753,103 @@ static void init_printer_values(void) case PRINT_AIX: case PRINT_LPRNT: case PRINT_LPROS2: - string_set(&sDefault.szLpqcommand, "lpq -P'%p'"); - string_set(&sDefault.szLprmcommand, "lprm -P'%p' %j"); - string_set(&sDefault.szPrintcommand, + do_parameter("Lpqcommand", "lpq -P'%p'"); + do_parameter("Lprmcommand", "lprm -P'%p' %j"); + do_parameter("Printcommand", "lpr -r -P'%p' %s"); break; case PRINT_LPRNG: case PRINT_PLP: - string_set(&sDefault.szLpqcommand, "lpq -P'%p'"); - string_set(&sDefault.szLprmcommand, "lprm -P'%p' %j"); - string_set(&sDefault.szPrintcommand, + do_parameter("Lpqcommand", "lpq -P'%p'"); + do_parameter("Lprmcommand", "lprm -P'%p' %j"); + do_parameter("Printcommand", "lpr -r -P'%p' %s"); - string_set(&sDefault.szQueuepausecommand, + do_parameter("Queuepausecommand", "lpc stop '%p'"); - string_set(&sDefault.szQueueresumecommand, + do_parameter("Queueresumecommand", "lpc start '%p'"); - string_set(&sDefault.szLppausecommand, + do_parameter("Lppausecommand", "lpc hold '%p' %j"); - string_set(&sDefault.szLpresumecommand, + do_parameter("Lpresumecommand", "lpc release '%p' %j"); break; case PRINT_CUPS: #ifdef HAVE_CUPS - string_set(&sDefault.szLpqcommand, ""); - string_set(&sDefault.szLprmcommand, ""); - string_set(&sDefault.szPrintcommand, ""); - string_set(&sDefault.szLppausecommand, ""); - string_set(&sDefault.szLpresumecommand, ""); - string_set(&sDefault.szQueuepausecommand, ""); - string_set(&sDefault.szQueueresumecommand, ""); - - string_set(&Globals.szPrintcapname, "cups"); + do_parameter("Lpqcommand", ""); + do_parameter("Lprmcommand", ""); + do_parameter("Printcommand", ""); + do_parameter("Lppausecommand", ""); + do_parameter("Lpresumecommand", ""); + do_parameter("Queuepausecommand", ""); + do_parameter("Queueresumecommand", ""); + + do_parameter("Printcapname", "cups"); #else - string_set(&sDefault.szLpqcommand, + do_parameter("Lpqcommand", "/usr/bin/lpstat -o '%p'"); - string_set(&sDefault.szLprmcommand, + do_parameter("Lprmcommand", "/usr/bin/cancel '%p-%j'"); - string_set(&sDefault.szPrintcommand, + do_parameter("Printcommand", "/usr/bin/lp -d '%p' %s; rm %s"); - string_set(&sDefault.szLppausecommand, + do_parameter("Lppausecommand", "lp -i '%p-%j' -H hold"); - string_set(&sDefault.szLpresumecommand, + do_parameter("Lpresumecommand", "lp -i '%p-%j' -H resume"); - string_set(&sDefault.szQueuepausecommand, + do_parameter("Queuepausecommand", "/usr/bin/disable '%p'"); - string_set(&sDefault.szQueueresumecommand, + do_parameter("Queueresumecommand", "/usr/bin/enable '%p'"); - string_set(&Globals.szPrintcapname, "lpstat"); + do_parameter("Printcapname", "lpstat"); #endif /* HAVE_CUPS */ break; case PRINT_SYSV: case PRINT_HPUX: - string_set(&sDefault.szLpqcommand, "lpstat -o%p"); - string_set(&sDefault.szLprmcommand, "cancel %p-%j"); - string_set(&sDefault.szPrintcommand, + do_parameter("Lpqcommand", "lpstat -o%p"); + do_parameter("Lprmcommand", "cancel %p-%j"); + do_parameter("Printcommand", "lp -c -d%p %s; rm %s"); - string_set(&sDefault.szQueuepausecommand, + do_parameter("Queuepausecommand", "disable %p"); - string_set(&sDefault.szQueueresumecommand, + do_parameter("Queueresumecommand", "enable %p"); #ifndef HPUX - string_set(&sDefault.szLppausecommand, + do_parameter("Lppausecommand", "lp -i %p-%j -H hold"); - string_set(&sDefault.szLpresumecommand, + do_parameter("Lpresumecommand", "lp -i %p-%j -H resume"); #endif /* HPUX */ break; case PRINT_QNX: - string_set(&sDefault.szLpqcommand, "lpq -P%p"); - string_set(&sDefault.szLprmcommand, "lprm -P%p %j"); - string_set(&sDefault.szPrintcommand, "lp -r -P%p %s"); + do_parameter("Lpqcommand", "lpq -P%p"); + do_parameter("Lprmcommand", "lprm -P%p %j"); + do_parameter("Printcommand", "lp -r -P%p %s"); break; case PRINT_SOFTQ: - string_set(&sDefault.szLpqcommand, "qstat -l -d%p"); - string_set(&sDefault.szLprmcommand, + do_parameter("Lpqcommand", "qstat -l -d%p"); + do_parameter("Lprmcommand", "qstat -s -j%j -c"); - string_set(&sDefault.szPrintcommand, + do_parameter("Printcommand", "lp -d%p -s %s; rm %s"); - string_set(&sDefault.szLppausecommand, + do_parameter("Lppausecommand", "qstat -s -j%j -h"); - string_set(&sDefault.szLpresumecommand, + do_parameter("Lpresumecommand", "qstat -s -j%j -r"); break; #ifdef DEVELOPER case PRINT_TEST: case PRINT_VLP: - string_set(&sDefault.szPrintcommand, "vlp print %p %s"); - string_set(&sDefault.szLpqcommand, "vlp lpq %p"); - string_set(&sDefault.szLprmcommand, "vlp lprm %p %j"); - string_set(&sDefault.szLppausecommand, "vlp lppause %p %j"); - string_set(&sDefault.szLpresumecommand, "vlp lpresum %p %j"); - string_set(&sDefault.szQueuepausecommand, "vlp queuepause %p"); - string_set(&sDefault.szQueueresumecommand, "vlp queueresume %p"); + do_parameter("Printcommand", "vlp print %p %s"); + do_parameter("Lpqcommand", "vlp lpq %p"); + do_parameter("Lprmcommand", "vlp lprm %p %j"); + do_parameter("Lppausecommand", "vlp lppause %p %j"); + do_parameter("Lpresumecommand", "vlp lpresum %p %j"); + do_parameter("Queuepausecommand", "vlp queuepause %p"); + do_parameter("Queueresumecommand", "vlp queueresume %p"); break; #endif /* DEVELOPER */ @@ -932,7 +862,6 @@ static void init_printer_values(void) ***************************************************************************/ static void init_globals(void) { - pstring s; int i; DEBUG(3, ("Initialising global parameters\n")); @@ -956,163 +885,122 @@ static void init_globals(void) init_printer_values(); - string_set(&sDefault.fstype, FSTYPE_STRING); - string_set(&sDefault.ntvfs_handler, "default"); - - Globals.dcerpc_ep_servers = str_list_make("epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss", NULL); - - Globals.server_services = str_list_make("smb rpc", NULL); - - Globals.AuthMethods = str_list_make("guest sam_ignoredomain", NULL); - - string_set(&Globals.szSMBPasswdFile, dyn_SMB_PASSWD_FILE); - string_set(&Globals.szPrivateDir, dyn_PRIVATE_DIR); - asprintf(&Globals.szSAM_URL, "tdb://%s/sam.ldb", dyn_PRIVATE_DIR); - asprintf(&Globals.szSPOOLSS_URL, "tdb://%s/spoolss.ldb", dyn_PRIVATE_DIR); + do_parameter("fstype", FSTYPE_STRING); + do_parameter("ntvfs handler", "default"); - string_set(&Globals.szGuestaccount, GUEST_ACCOUNT); + do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss"); + do_parameter("server services", "smb rpc"); + do_parameter("auth methods", "guest sam_ignoredomain"); + do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); + do_parameter("private dir", dyn_PRIVATE_DIR); + do_parameter_var("sam database", "tdb://%s/sam.ldb", dyn_PRIVATE_DIR); + do_parameter_var("spoolss database", "tdb://%s/spoolss.ldb", dyn_PRIVATE_DIR); + do_parameter("guest account", GUEST_ACCOUNT); /* using UTF8 by default allows us to support all chars */ - string_set(&Globals.unix_charset, "UTF8"); + do_parameter("unix charset", "UTF8"); /* Use codepage 850 as a default for the dos character set */ - string_set(&Globals.dos_charset, "CP850"); + do_parameter("dos charset", "CP850"); /* * Allow the default PASSWD_CHAT to be overridden in local.h. */ - string_set(&Globals.szPasswdChat, DEFAULT_PASSWD_CHAT); + do_parameter("passwd chat", DEFAULT_PASSWD_CHAT); + + do_parameter("passwd program", ""); + do_parameter("printcap name", PRINTCAP_NAME); - string_set(&Globals.szPasswdProgram, ""); - string_set(&Globals.szPrintcapname, PRINTCAP_NAME); - string_set(&Globals.szPidDir, dyn_PIDDIR); - string_set(&Globals.szLockDir, dyn_LOCKDIR); - string_set(&Globals.szSocketAddress, "0.0.0.0"); - pstrcpy(s, "Samba "); - pstrcat(s, SAMBA_VERSION_STRING); - string_set(&Globals.szServerString, s); - slprintf(s, sizeof(s) - 1, "%d.%d", DEFAULT_MAJOR_VERSION, - DEFAULT_MINOR_VERSION); - string_set(&Globals.szAnnounceVersion, s); - - string_set(&Globals.szLogonDrive, ""); - /* %N is the NIS auto.home server if -DAUTOHOME is used, else same as %L */ - string_set(&Globals.szLogonHome, "\\\\%N\\%U"); - string_set(&Globals.szLogonPath, "\\\\%N\\%U\\profile"); - - string_set(&Globals.szPasswordServer, "*"); - - Globals.bLoadPrinters = True; - Globals.mangled_stack = 50; - Globals.max_mux = 50; /* This is *needed* for profile support. */ - Globals.max_xmit = 4356; /* the value w2k3 chooses */ - Globals.lpqcachetime = 10; - Globals.bDisableSpoolss = False; - Globals.pwordlevel = 0; - Globals.unamelevel = 0; - Globals.bLargeReadwrite = True; - Globals.minprotocol = PROTOCOL_CORE; - Globals.security = SEC_USER; - Globals.paranoid_server_security = True; - Globals.bEncryptPasswords = True; - Globals.bUpdateEncrypt = False; - Globals.bReadRaw = True; - Globals.bWriteRaw = True; - Globals.bNullPasswords = False; - Globals.bObeyPamRestrictions = False; - Globals.max_ttl = 60 * 60 * 24 * 3; /* 3 days default. */ - Globals.max_wins_ttl = 60 * 60 * 24 * 6; /* 6 days default. */ - Globals.min_wins_ttl = 60 * 60 * 6; /* 6 hours default. */ - Globals.machine_password_timeout = 60 * 60 * 24 * 7; /* 7 days default. */ - Globals.lm_announce = 2; /* = Auto: send only if LM clients found */ - Globals.lm_interval = 60; - Globals.announce_as = ANNOUNCE_AS_NT_SERVER; - - Globals.bTimeServer = False; - Globals.bBindInterfacesOnly = False; - Globals.bUnixPasswdSync = False; - Globals.bPamPasswordChange = False; - Globals.bUnicode = True; /* Do unicode on the wire by default */ - Globals.bNTStatusSupport = True; /* Use NT status by default. */ - Globals.restrict_anonymous = 0; - Globals.bClientLanManAuth = True; /* Do use the LanMan hash if it is available */ - Globals.bLanmanAuth = True; /* Do use the LanMan hash if it is available */ - Globals.bNTLMAuth = True; /* Do use NTLMv1 if it is available (otherwise NTLMv2) */ + do_parameter("pid directory", dyn_PIDDIR); + do_parameter("lock dir", dyn_LOCKDIR); + do_parameter("socket address", "0.0.0.0"); + do_parameter_var("server string", "Samba %s", SAMBA_VERSION_STRING); + + do_parameter_var("announce version", "%d.%d", + DEFAULT_MAJOR_VERSION, + DEFAULT_MINOR_VERSION); + + do_parameter("logon drive", ""); + + do_parameter("logon home", "\\\\%N\\%U"); + do_parameter("logon path", "\\\\%N\\%U\\profile"); + do_parameter("password server", "*"); + + do_parameter("load printers", "True"); + + do_parameter("max mux", "50"); + do_parameter("max xmit", "4356"); + do_parameter("lpqcachetime", "10"); + do_parameter("DisableSpoolss", "False"); + do_parameter("password level", "0"); + do_parameter("username level", "0"); + do_parameter("LargeReadwrite", "True"); + do_parameter("minprotocol", "CORE"); + do_parameter("security", "USER"); + do_parameter("paranoid server security", "True"); + do_parameter("EncryptPasswords", "True"); + do_parameter("ReadRaw", "True"); + do_parameter("WriteRaw", "True"); + do_parameter("NullPasswords", "False"); + do_parameter("ObeyPamRestrictions", "False"); + do_parameter("lm announce", "Auto"); + do_parameter("lm interval", "60"); + do_parameter("announce as", "NT SERVER"); + + do_parameter("TimeServer", "False"); + do_parameter("BindInterfacesOnly", "False"); + do_parameter("PamPasswordChange", "False"); + do_parameter("Unicode", "True"); + do_parameter("restrict anonymous", "0"); + do_parameter("ClientLanManAuth", "True"); + do_parameter("LanmanAuth", "True"); + do_parameter("NTLMAuth", "True"); - Globals.enhanced_browsing = True; - Globals.iLockSpinCount = 3; /* Try 2 times. */ - Globals.iLockSpinTime = 10; /* usec. */ + do_parameter("enhanced browsing", "True"); + do_parameter("LockSpinCount", "3"); + do_parameter("LockSpinTime", "10"); #ifdef MMAP_BLACKLIST - Globals.bUseMmap = False; + do_parameter("UseMmap", "False"); #else - Globals.bUseMmap = True; + do_parameter("UseMmap", "True"); #endif - Globals.bUnixExtensions = False; + do_parameter("UnixExtensions", "False"); /* hostname lookups can be very expensive and are broken on a large number of sites (tridge) */ - Globals.bHostnameLookups = False; - -#ifdef WITH_LDAP_SAMCONFIG - string_set(&Globals.szLdapServer, "localhost"); - Globals.ldap_port = 636; - Globals.szPassdbBackend = str_list_make("ldapsam guest", NULL); -#else - Globals.szPassdbBackend = str_list_make("smbpasswd guest", NULL); -#endif /* WITH_LDAP_SAMCONFIG */ - - string_set(&Globals.szLdapSuffix, ""); - string_set(&Globals.szLdapMachineSuffix, ""); - string_set(&Globals.szLdapUserSuffix, ""); + do_parameter("HostnameLookups", "False"); - string_set(&Globals.szLdapFilter, "(&(uid=%u)(objectclass=sambaAccount))"); - string_set(&Globals.szLdapAdminDn, ""); - Globals.ldap_ssl = LDAP_SSL_ON; - Globals.ldap_passwd_sync = LDAP_PASSWD_SYNC_OFF; + do_parameter("PreferredMaster", "Auto"); + do_parameter("os level", "20"); + do_parameter("LocalMaster", "True"); + do_parameter("DomainMaster", "Auto"); /* depending on bDomainLogons */ + do_parameter("DomainLogons", "False"); + do_parameter("WINSsupport", "False"); + do_parameter("WINSproxy", "False"); -/* these parameters are set to defaults that are more appropriate - for the increasing samba install base: - - as a member of the workgroup, that will possibly become a - _local_ master browser (lm = True). this is opposed to a forced - local master browser startup (pm = True). - - doesn't provide WINS server service by default (wsupp = False), - and doesn't provide domain master browser services by default, either. - -*/ + do_parameter("DNSproxy", "True"); - Globals.bPreferredMaster = Auto; /* depending on bDomainMaster */ - Globals.os_level = 20; - Globals.bLocalMaster = True; - Globals.bDomainMaster = Auto; /* depending on bDomainLogons */ - Globals.bDomainLogons = False; - Globals.bWINSsupport = False; - Globals.bWINSproxy = False; + do_parameter("AllowTrustedDomains", "True"); - Globals.bDNSproxy = True; + do_parameter("TemplateShell", "/bin/false"); + do_parameter("TemplateHomedir", "/home/%D/%U"); + do_parameter("WinbindSeparator", "\\"); - Globals.bAllowTrustedDomains = True; + do_parameter("winbind cache time", "15"); + do_parameter("WinbindEnumUsers", "True"); + do_parameter("WinbindEnumGroups", "True"); + do_parameter("WinbindUseDefaultDomain", "False"); - string_set(&Globals.szTemplateShell, "/bin/false"); - string_set(&Globals.szTemplateHomedir, "/home/%D/%U"); - string_set(&Globals.szWinbindSeparator, "\\"); + do_parameter("IDMapBackend", "tdb"); - Globals.winbind_cache_time = 15; - Globals.bWinbindEnumUsers = True; - Globals.bWinbindEnumGroups = True; - Globals.bWinbindUseDefaultDomain = False; + do_parameter("name cache timeout", "660"); /* In seconds */ - string_set(&Globals.szIDMapBackend, "tdb"); + do_parameter("client signing", "Yes"); + do_parameter("server signing", "Yes"); - Globals.name_cache_timeout = 660; /* In seconds */ + do_parameter("use spnego", "True"); - Globals.bUseSpnego = True; - - Globals.client_signing = SMB_SIGNING_SUPPORTED; - Globals.server_signing = SMB_SIGNING_SUPPORTED; - - Globals.smb_ports = str_list_make(SMB_PORTS, NULL); + do_parameter("smb ports", SMB_PORTS); } static TALLOC_CTX *lp_talloc; @@ -1248,7 +1136,6 @@ FN_GLOBAL_LIST(lp_interfaces, &Globals.szInterfaces) FN_GLOBAL_STRING(lp_socket_address, &Globals.szSocketAddress) static FN_GLOBAL_STRING(lp_announce_version, &Globals.szAnnounceVersion) FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases) -FN_GLOBAL_LIST(lp_passdb_backend, &Globals.szPassdbBackend) FN_GLOBAL_LIST(lp_preload_modules, &Globals.szPreloadModules) FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) FN_GLOBAL_STRING(lp_adduser_script, &Globals.szAddUserScript) @@ -1267,19 +1154,6 @@ FN_GLOBAL_BOOL(lp_winbind_enum_groups, &Globals.bWinbindEnumGroups) FN_GLOBAL_BOOL(lp_winbind_use_default_domain, &Globals.bWinbindUseDefaultDomain) FN_GLOBAL_STRING(lp_idmap_backend, &Globals.szIDMapBackend) -#ifdef WITH_LDAP_SAMCONFIG -FN_GLOBAL_STRING(lp_ldap_server, &Globals.szLdapServer) -FN_GLOBAL_INTEGER(lp_ldap_port, &Globals.ldap_port) -#endif -FN_GLOBAL_STRING(lp_ldap_suffix, &Globals.szLdapSuffix) -FN_GLOBAL_STRING(lp_ldap_machine_suffix, &Globals.szLdapMachineSuffix) -FN_GLOBAL_STRING(lp_ldap_user_suffix, &Globals.szLdapUserSuffix) -FN_GLOBAL_STRING(lp_ldap_filter, &Globals.szLdapFilter) -FN_GLOBAL_STRING(lp_ldap_admin_dn, &Globals.szLdapAdminDn) -FN_GLOBAL_INTEGER(lp_ldap_ssl, &Globals.ldap_ssl) -FN_GLOBAL_INTEGER(lp_ldap_passwd_sync, &Globals.ldap_passwd_sync) -FN_GLOBAL_BOOL(lp_ldap_trust_ids, &Globals.ldap_trust_ids) - FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) FN_GLOBAL_BOOL(lp_dns_proxy, &Globals.bDNSproxy) FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) @@ -1294,11 +1168,9 @@ FN_GLOBAL_BOOL(lp_writeraw, &Globals.bWriteRaw) FN_GLOBAL_BOOL(lp_null_passwords, &Globals.bNullPasswords) FN_GLOBAL_BOOL(lp_obey_pam_restrictions, &Globals.bObeyPamRestrictions) FN_GLOBAL_BOOL(lp_encrypted_passwords, &Globals.bEncryptPasswords) -FN_GLOBAL_BOOL(lp_update_encrypted, &Globals.bUpdateEncrypt) static FN_GLOBAL_BOOL(lp_time_server, &Globals.bTimeServer) FN_GLOBAL_BOOL(lp_bind_interfaces_only, &Globals.bBindInterfacesOnly) FN_GLOBAL_BOOL(lp_pam_password_change, &Globals.bPamPasswordChange) -FN_GLOBAL_BOOL(lp_unix_password_sync, &Globals.bUnixPasswdSync) FN_GLOBAL_BOOL(lp_unicode, &Globals.bUnicode) FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport) FN_GLOBAL_BOOL(lp_allow_trusted_domains, &Globals.bAllowTrustedDomains) @@ -2305,92 +2177,6 @@ static BOOL handle_non_unix_account_range(const char *pszParmValue, char **ptr) return True; } -/*************************************************************************** - Handle the ldap machine suffix option. -***************************************************************************/ - -static BOOL handle_ldap_machine_suffix( const char *pszParmValue, char **ptr) -{ - pstring suffix; - - pstrcpy(suffix, pszParmValue); - - if (! *Globals.szLdapSuffix ) { - string_set( ptr, suffix ); - return True; - } - - if (! strstr(suffix, Globals.szLdapSuffix) ) { - if ( *pszParmValue ) - pstrcat(suffix, ","); - pstrcat(suffix, Globals.szLdapSuffix); - } - string_set( ptr, suffix ); - return True; -} - -/*************************************************************************** - Handle the ldap user suffix option. -***************************************************************************/ - -static BOOL handle_ldap_user_suffix( const char *pszParmValue, char **ptr) -{ - pstring suffix; - - pstrcpy(suffix, pszParmValue); - - if (! *Globals.szLdapSuffix ) { - string_set( ptr, suffix ); - return True; - } - - if (! strstr(suffix, Globals.szLdapSuffix) ) { - if ( *pszParmValue ) - pstrcat(suffix, ","); - pstrcat(suffix, Globals.szLdapSuffix); - } - string_set( ptr, suffix ); - return True; -} - -/*************************************************************************** - Handle setting ldap suffix and determines whether ldap machine suffix needs - to be set as well. -***************************************************************************/ - -static BOOL handle_ldap_suffix( const char *pszParmValue, char **ptr) -{ - pstring suffix; - pstring user_suffix; - pstring machine_suffix; - - pstrcpy(suffix, pszParmValue); - - if (! *Globals.szLdapMachineSuffix ) - string_set(&Globals.szLdapMachineSuffix, suffix); - if (! *Globals.szLdapUserSuffix ) - string_set(&Globals.szLdapUserSuffix, suffix); - - if (! strstr(Globals.szLdapMachineSuffix, suffix)) { - pstrcpy(machine_suffix, Globals.szLdapMachineSuffix); - if ( *Globals.szLdapMachineSuffix ) - pstrcat(machine_suffix, ","); - pstrcat(machine_suffix, suffix); - string_set(&Globals.szLdapMachineSuffix, machine_suffix); - } - - if (! strstr(Globals.szLdapUserSuffix, suffix)) { - pstrcpy(user_suffix, Globals.szLdapUserSuffix); - if ( *Globals.szLdapUserSuffix ) - pstrcat(user_suffix, ","); - pstrcat(user_suffix, suffix); - string_set(&Globals.szLdapUserSuffix, user_suffix); - } - - string_set(ptr, suffix); - - return True; -} /*************************************************************************** Initialise a copymap. @@ -2590,6 +2376,11 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue break; } } + if (!parm_table[parmnum].enum_list[i].name) { + DEBUG(0,("Unknown enumerated value '%s' for '%s'\n", + pszParmValue, pszParmName)); + return False; + } break; case P_SEP: break; @@ -2607,12 +2398,27 @@ static BOOL do_parameter(const char *pszParmName, const char *pszParmValue) if (!bInGlobalSection && bGlobalOnly) return (True); - DEBUGADD(4, ("doing parameter %s = %s\n", pszParmName, pszParmValue)); - return (lp_do_parameter(bInGlobalSection ? -2 : iServiceIndex, pszParmName, pszParmValue)); } +/* + variable argument do parameter +*/ +static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...) +{ + char *s; + BOOL ret; + va_list ap; + + va_start(ap, fmt); + s = talloc_vasprintf(NULL, fmt, ap); + va_end(ap); + ret = do_parameter(pszParmName, s); + talloc_free(s); + return ret; +} + /* set a parameter from the commandline - this is called from command line parameter -- cgit From ae1c28b92260cb75d5950733d619e1ec4af46a09 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 17 Sep 2004 11:24:37 +0000 Subject: r2384: i missed "nt status support" in my change to the new globals init code (This used to be commit 7478f50c2f5c011a1eec04be06f9ecdc48e85f17) --- source4/param/loadparm.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 426133a05e..42798a3e7f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1001,6 +1001,8 @@ static void init_globals(void) do_parameter("use spnego", "True"); do_parameter("smb ports", SMB_PORTS); + + do_parameter("nt status support", "True"); } static TALLOC_CTX *lp_talloc; -- cgit From 6dcdf1df5637406cb47327104b3f310682487355 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 22 Sep 2004 10:32:56 +0000 Subject: r2504: Add printf attribute, for format argument checking. Andrew Bartlett (This used to be commit 543401990aa9eb650cb93fa6cb60d2a0adf7b274) --- source4/param/loadparm.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 42798a3e7f..2a361b5432 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2407,6 +2407,8 @@ static BOOL do_parameter(const char *pszParmName, const char *pszParmValue) /* variable argument do parameter */ +static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...) PRINTF_ATTRIBUTE(2, 3); + static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...) { char *s; -- cgit From a3cec511bbef2cc7768906f3af947ce2f900bde6 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 23 Sep 2004 07:44:42 +0000 Subject: r2561: completely redid the ntvfs module chaining code, You can now do something like: ntvfs handler = nbench posix and the nbench pass-thru module will be called before the posix module. The chaining logic is now much saner, and less racy, with each level in the chain getting its own private pointer rather than relying on save/restore logic in the pass-thru module. The only pass-thru module we have at the moment is the nbench one (which records all traffic in a nbench compatibe format), but I plan on soon writing a "unixuid" pass-thru module that will implement the setegid()/setgroups()/seteuid() logic for standard posix uid handling. This separation of the posix backend from the uid handling should simplify the code, and make development easier. I also modified the nbench module so it can do multiple chaining, so if you want to you can do: ntvfs module = nbench nbench posix and it will save 2 copies of the log file in /tmp. This is really only useful for testing at the moment until we have more than one pass-thru module. (This used to be commit f84c0af35cb54c8fdc4933afefc18fa4c062aae4) --- source4/param/loadparm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 2a361b5432..8448cdeb04 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -246,7 +246,7 @@ typedef struct char *volume; char *fstype; char *szMSDfsProxy; - char *ntvfs_handler; + char **ntvfs_handler; int iMinPrintSpace; int iMaxPrintJobs; int iMaxConnections; @@ -516,7 +516,7 @@ static struct parm_struct parm_table[] = { {"server string", P_STRING, P_GLOBAL, &Globals.szServerString, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"interfaces", P_LIST, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"ntvfs handler", P_STRING, P_LOCAL, &sDefault.ntvfs_handler, NULL, NULL, FLAG_ADVANCED}, + {"ntvfs handler", P_LIST, P_LOCAL, &sDefault.ntvfs_handler, NULL, NULL, FLAG_ADVANCED}, {"dcerpc endpoint servers", P_LIST, P_GLOBAL, &Globals.dcerpc_ep_servers, NULL, NULL, FLAG_ADVANCED}, {"server services", P_LIST, P_GLOBAL, &Globals.server_services, NULL, NULL, FLAG_ADVANCED}, @@ -1231,7 +1231,7 @@ FN_LOCAL_STRING(lp_comment, comment) FN_LOCAL_STRING(lp_fstype, fstype) FN_LOCAL_STRING(lp_msdfs_proxy, szMSDfsProxy) static FN_LOCAL_STRING(lp_volume, volume) -FN_LOCAL_STRING(lp_ntvfs_handler, ntvfs_handler) +FN_LOCAL_LIST(lp_ntvfs_handler, ntvfs_handler) FN_LOCAL_BOOL(lp_msdfs_root, bMSDfsRoot) FN_LOCAL_BOOL(lp_autoloaded, autoloaded) FN_LOCAL_BOOL(lp_browseable, bBrowseable) -- cgit From 0eeb0973e9ccf4583c918562b92a0c8921c122da Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 3 Oct 2004 10:31:12 +0000 Subject: r2804: - setup some reasonable default SAM to unixName mappings in the provisioning. - enable the unixuid module by default on all backends (This used to be commit e335cd4933fccc1bb53641131eb6505faca857ce) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8448cdeb04..bc5ceb00d8 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -886,7 +886,7 @@ static void init_globals(void) init_printer_values(); do_parameter("fstype", FSTYPE_STRING); - do_parameter("ntvfs handler", "default"); + do_parameter("ntvfs handler", "unixuid default"); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss"); do_parameter("server services", "smb rpc"); -- cgit From 7b7619e0ba489329ced5f5159f97ba7da5aa3fa5 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 9 Oct 2004 07:11:21 +0000 Subject: r2871: - got rid of the last bits of non-threadsafe data in util_str.o - switch the fallback case tables to use talloc - moved the used-once octal_string() inline in loadparm.c (This used to be commit b04202eaacc87d264d463f75673ee0e68cd54f94) --- source4/param/loadparm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index bc5ceb00d8..1d53af5c81 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2522,7 +2522,11 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) break; case P_OCTAL: - fprintf(f, "%s", octal_string(*(int *)ptr)); + if (*(int *)ptr == -1) { + fprintf(f, "-1"); + } else { + fprintf(f, "0%o", *(int *)ptr); + } break; case P_LIST: -- cgit From 3dd56175abf1a4580cc4d506f84ecc17e867c21e Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sun, 10 Oct 2004 01:35:33 +0000 Subject: r2889: add DRSUAPI server - with DsBind and DsUnbind implmented :-) the RPC-DRSUAPI test works metze (This used to be commit 536af87ef12024615728ce0060b557f6f504e33f) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 1d53af5c81..ee424cb0c4 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -888,7 +888,7 @@ static void init_globals(void) do_parameter("fstype", FSTYPE_STRING); do_parameter("ntvfs handler", "unixuid default"); - do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss"); + do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi"); do_parameter("server services", "smb rpc"); do_parameter("auth methods", "guest sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); -- cgit From 2003ab2598e7dc93ceb2afc7f71986e5f27758b8 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 12 Oct 2004 22:18:02 +0000 Subject: r2941: added pvfs_flush() implementation to the posix backend (This used to be commit dac00ef3b0d0f8467367d7b6ff77db7b63a042cc) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index ee424cb0c4..283a7f80ce 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -270,6 +270,7 @@ typedef struct BOOL *copymap; BOOL bMSDfsRoot; BOOL bShareModes; + BOOL bStrictSync; struct param_opt *param_opt; char dummy[3]; /* for alignment */ @@ -327,6 +328,7 @@ static service sDefault = { NULL, /* copymap */ False, /* bMSDfsRoot */ True, /* bShareModes */ + False, /* bStrictSync */ NULL, /* Parametric options */ "" /* dummy */ @@ -618,6 +620,7 @@ static struct parm_struct parm_table[] = { {"hostname lookups", P_BOOL, P_GLOBAL, &Globals.bHostnameLookups, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, {"Printing Options", P_SEP, P_SEPARATOR}, @@ -1244,6 +1247,7 @@ FN_LOCAL_BOOL(lp_map_archive, bMap_archive) FN_LOCAL_BOOL(lp_locking, bLocking) FN_LOCAL_BOOL(lp_strict_locking, bStrictLocking) FN_LOCAL_BOOL(lp_posix_locking, bPosixLocking) +FN_LOCAL_BOOL(lp_strict_sync, bStrictSync) FN_LOCAL_BOOL(lp_share_modes, bShareModes) FN_LOCAL_BOOL(lp_oplocks, bOpLocks) FN_LOCAL_BOOL(lp_level2_oplocks, bLevel2OpLocks) -- cgit From 9a499a801006950bd44d30e8b136685c3a197d48 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 17 Oct 2004 22:04:15 +0000 Subject: r3025: don't warn about no path in a service, as some backends (like cifs) don't need a path (This used to be commit a8c49a0de3f806bddaf6bd594ec052cf9f4a3fab) --- source4/param/loadparm.c | 7 ------- 1 file changed, 7 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 283a7f80ce..752f1d950e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1909,13 +1909,6 @@ static BOOL service_ok(int iService) ServicePtrs[iService]->bBrowseable = False; } - if (ServicePtrs[iService]->szPath[0] == '\0' && - strwicmp(ServicePtrs[iService]->szService, HOMES_NAME) != 0) { - DEBUG(0, ("No path in service %s - using %s\n", - ServicePtrs[iService]->szService, tmpdir())); - string_set(&ServicePtrs[iService]->szPath, tmpdir()); - } - /* If a service is flagged unavailable, log the fact at level 0. */ if (!ServicePtrs[iService]->bAvailable) DEBUG(1, ("NOTE: Service %s is flagged unavailable.\n", -- cgit From 904f20a9fba420e16fe3c281ca60a9189327334d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 19 Oct 2004 10:02:02 +0000 Subject: r3062: handle spaces at the start of options in lp_set_cmdline() (This used to be commit 069305adaf5e88d83f4591acced807d5ea1aa194) --- source4/param/loadparm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 752f1d950e..397d131d75 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2431,6 +2431,9 @@ BOOL lp_set_cmdline(const char *pszParmName, const char *pszParmValue) int parmnum = map_parameter(pszParmName); int i; + while (isspace(*pszParmValue)) pszParmValue++; + + if (parmnum < 0 && strchr(pszParmName, ':')) { /* set a parametric option */ return lp_do_parameter_parametric(-1, pszParmName, pszParmValue, FLAG_CMDLINE); -- cgit From 40c5a1d99fba2144fc3b5d4d8ed5959a269600ca Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 24 Oct 2004 14:57:16 +0000 Subject: r3162: Add client-side support for the ncalrpc: and ncacn_unix_stream: transports. ncalrpc uses the new config option "ncalrpc dir" for creating unix sockets. (This used to be commit b15cfbe2512961a199ecb069730d9a19787579f5) --- source4/param/loadparm.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 397d131d75..59e6fa911a 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -93,6 +93,7 @@ typedef struct char **smb_ports; char *dos_charset; char *unix_charset; + char *ncalrpc_dir; char *display_charset; char *szPrintcapname; char *szLockDir; @@ -505,6 +506,7 @@ static struct parm_struct parm_table[] = { {"dos charset", P_STRING, P_GLOBAL, &Globals.dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"unix charset", P_STRING, P_GLOBAL, &Globals.unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ncalrpc dir", P_STRING, P_GLOBAL, &Globals.ncalrpc_dir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"display charset", P_STRING, P_GLOBAL, &Globals.display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, @@ -916,6 +918,8 @@ static void init_globals(void) do_parameter("pid directory", dyn_PIDDIR); do_parameter("lock dir", dyn_LOCKDIR); + do_parameter("ncalrpc dir", dyn_NCALRPCDIR); + do_parameter("socket address", "0.0.0.0"); do_parameter_var("server string", "Samba %s", SAMBA_VERSION_STRING); @@ -1113,6 +1117,7 @@ FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) FN_GLOBAL_STRING(lp_printcapname, &Globals.szPrintcapname) FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) +FN_GLOBAL_STRING(lp_ncalrpc_dir, &Globals.ncalrpc_dir) FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) FN_GLOBAL_LIST(lp_server_services, &Globals.server_services) -- cgit From d5fd12648e004b47bbe5ed2623838866fedcbeb0 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 26 Oct 2004 00:59:06 +0000 Subject: r3227: added a per-share option "case insensitive filesystem", that tells the backend that the underlying filesystem is case insensitive, so it can bypass the directory search if the name is not found. (This used to be commit d84ade90ce7e03ec749d6ae8dcdcb41de85d836e) --- source4/param/loadparm.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 59e6fa911a..62d30365c2 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -272,6 +272,7 @@ typedef struct BOOL bMSDfsRoot; BOOL bShareModes; BOOL bStrictSync; + BOOL bCIFileSystem; struct param_opt *param_opt; char dummy[3]; /* for alignment */ @@ -330,6 +331,7 @@ static service sDefault = { False, /* bMSDfsRoot */ True, /* bShareModes */ False, /* bStrictSync */ + False, /* bCIFileSystem */ NULL, /* Parametric options */ "" /* dummy */ @@ -623,6 +625,7 @@ static struct parm_struct parm_table[] = { {"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, + {"case insensitive filesystem", P_BOOL, P_LOCAL, &sDefault.bCIFileSystem, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, {"Printing Options", P_SEP, P_SEPARATOR}, @@ -1253,6 +1256,7 @@ FN_LOCAL_BOOL(lp_locking, bLocking) FN_LOCAL_BOOL(lp_strict_locking, bStrictLocking) FN_LOCAL_BOOL(lp_posix_locking, bPosixLocking) FN_LOCAL_BOOL(lp_strict_sync, bStrictSync) +FN_LOCAL_BOOL(lp_ci_filesystem, bCIFileSystem) FN_LOCAL_BOOL(lp_share_modes, bShareModes) FN_LOCAL_BOOL(lp_oplocks, bOpLocks) FN_LOCAL_BOOL(lp_level2_oplocks, bLevel2OpLocks) @@ -2444,6 +2448,11 @@ BOOL lp_set_cmdline(const char *pszParmName, const char *pszParmValue) return lp_do_parameter_parametric(-1, pszParmName, pszParmValue, FLAG_CMDLINE); } + if (parmnum < 0) { + DEBUG(0,("Unknown option '%s'\n", pszParmName)); + return False; + } + /* reset the CMDLINE flag in case this has been called before */ parm_table[parmnum].flags &= ~FLAG_CMDLINE; -- cgit From 858f1763229a8da808a7473f565382a4b2924917 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 28 Oct 2004 22:38:27 +0000 Subject: r3338: More work on the winreg RPC server. Opening hives is now supported, most other calls return WERR_NOT_SUPPORTED for now. Hive backends can be set like this: registry:HKEY_LOCAL_MACHINE = ldb:tdb://registry.tdb registry:HKEY_CURRENT_USER = gconf registry:HKEY_USERS = dir:/tmp/registry registry:HKEY_CLASSES_ROOT = nt4:/path/to/NTUSER.DAT registry:HKEY_PERFORMANCE_DATA = w95:/path/to/USER.DAT (This used to be commit 42844a4e3422bbbe891ba944c0e97861db7763ec) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 62d30365c2..8deda6514d 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -896,7 +896,7 @@ static void init_globals(void) do_parameter("fstype", FSTYPE_STRING); do_parameter("ntvfs handler", "unixuid default"); - do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi"); + do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg"); do_parameter("server services", "smb rpc"); do_parameter("auth methods", "guest sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); -- cgit From 08e30a51f8e75cb5bf9485ba847a9b3c1c7fb9b8 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 29 Oct 2004 21:55:06 +0000 Subject: r3375: changed the default max xmit until I fix a problem with the SMBtrans multi-part code A higher max xmit avoids multi-part trans requests (This used to be commit 23f4ce3a7d207db0c2705295cbb8d46dc5290b1a) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8deda6514d..341b039aad 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -939,7 +939,7 @@ static void init_globals(void) do_parameter("load printers", "True"); do_parameter("max mux", "50"); - do_parameter("max xmit", "4356"); + do_parameter("max xmit", "65535"); do_parameter("lpqcachetime", "10"); do_parameter("DisableSpoolss", "False"); do_parameter("password level", "0"); -- cgit From ad8c4ae941047aa7409ff0d8d10de721f5ff0659 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 30 Oct 2004 01:22:52 +0000 Subject: r3380: - changed the default behaviour of server signing. We now have a default setting of "server signing = auto", which means to offer signing only if we have domain logons enabled (ie. we are a DC). This is a better match for what windows clients want, as unfortunately windows clients always use signing if it is offered, and when they use signing they not only go slower because of the signing itself, they also disable large readx/writex support, so they end up sending very small IOs for. - changed the default max xmit again, this time matching longhorn, which uses 12288. That seems to be a fairly good compromise value. (This used to be commit e63edc81716fefd58a3be25deb3b25e45471f196) --- source4/param/loadparm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 341b039aad..f8b90203e7 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -198,8 +198,8 @@ typedef struct BOOL bLanmanAuth; BOOL bNTLMAuth; BOOL bUseSpnego; - BOOL server_signing; - BOOL client_signing; + int server_signing; + int client_signing; BOOL bClientLanManAuth; BOOL bClientNTLMv2Auth; BOOL bHostMSDfs; @@ -456,12 +456,12 @@ static const struct enum_list enum_smb_signing_vals[] = { {SMB_SIGNING_SUPPORTED, "1"}, {SMB_SIGNING_SUPPORTED, "On"}, {SMB_SIGNING_SUPPORTED, "enabled"}, - {SMB_SIGNING_SUPPORTED, "auto"}, {SMB_SIGNING_REQUIRED, "required"}, {SMB_SIGNING_REQUIRED, "mandatory"}, {SMB_SIGNING_REQUIRED, "force"}, {SMB_SIGNING_REQUIRED, "forced"}, {SMB_SIGNING_REQUIRED, "enforced"}, + {SMB_SIGNING_AUTO, "auto"}, {-1, NULL} }; @@ -939,7 +939,7 @@ static void init_globals(void) do_parameter("load printers", "True"); do_parameter("max mux", "50"); - do_parameter("max xmit", "65535"); + do_parameter("max xmit", "12288"); do_parameter("lpqcachetime", "10"); do_parameter("DisableSpoolss", "False"); do_parameter("password level", "0"); @@ -1006,7 +1006,7 @@ static void init_globals(void) do_parameter("name cache timeout", "660"); /* In seconds */ do_parameter("client signing", "Yes"); - do_parameter("server signing", "Yes"); + do_parameter("server signing", "auto"); do_parameter("use spnego", "True"); -- cgit From feff2e9cbdd2e3e8e9db5d9b01b5d5cec42943c0 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 30 Oct 2004 11:07:28 +0000 Subject: r3390: fixed schannel server side support. RPC-SCHANNEL now works against Samba4. (This used to be commit 01f5c1c72d9fc8f21029adc586154b0c54f76c9e) --- source4/param/loadparm.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index f8b90203e7..cddb85f80e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1685,6 +1685,8 @@ static BOOL lp_add_ipc(const char *ipc_name, BOOL guest_ok) ServicePtrs[i]->bPrint_ok = False; ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; + lp_do_parameter(i, "ntvfs handler", "default"); + DEBUG(3, ("adding IPC service\n")); return (True); -- cgit From 475c958450c863a8fc530ccf5bb712bd7a6e8aa4 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 1 Nov 2004 05:46:52 +0000 Subject: r3425: got rid of a bunch of cruft from rewrite.h (This used to be commit 3f902f8d851d32fa81d89ed61bfda6edaea00984) --- source4/param/loadparm.c | 124 +++++++++++++++++++---------------------------- 1 file changed, 50 insertions(+), 74 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index cddb85f80e..e1f006d889 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -78,6 +78,56 @@ static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...); static BOOL defaults_saved = False; + +#define FLAG_BASIC 0x0001 /* fundamental options */ +#define FLAG_SHARE 0x0002 /* file sharing options */ +#define FLAG_PRINT 0x0004 /* printing options */ +#define FLAG_GLOBAL 0x0008 /* local options that should be globally settable in SWAT */ +#define FLAG_WIZARD 0x0010 /* Parameters that the wizard will operate on */ +#define FLAG_ADVANCED 0x0020 /* Parameters that the wizard will operate on */ +#define FLAG_DEVELOPER 0x0040 /* Parameters that the wizard will operate on */ +#define FLAG_DEPRECATED 0x1000 /* options that should no longer be used */ +#define FLAG_HIDE 0x2000 /* options that should be hidden in SWAT */ +#define FLAG_DOS_STRING 0x4000 /* convert from UNIX to DOS codepage when reading this string. */ +#define FLAG_CMDLINE 0x8000 /* this option was set from the command line */ + + +/* the following are used by loadparm for option lists */ +typedef enum +{ + P_BOOL,P_BOOLREV,P_CHAR,P_INTEGER,P_OCTAL,P_LIST, + P_STRING,P_USTRING,P_ENUM,P_SEP +} parm_type; + +typedef enum +{ + P_LOCAL,P_GLOBAL,P_SEPARATOR,P_NONE +} parm_class; + +struct enum_list { + int value; + const char *name; +}; + +struct parm_struct +{ + const char *label; + parm_type type; + parm_class class; + void *ptr; + BOOL (*special)(const char *, char **); + const struct enum_list *enum_list; + uint_t flags; + union { + BOOL bvalue; + int ivalue; + char *svalue; + char cvalue; + char **lvalue; + } def; +}; + + struct param_opt { struct param_opt *prev, *next; char *key; @@ -465,33 +515,6 @@ static const struct enum_list enum_smb_signing_vals[] = { {-1, NULL} }; -/* - Do you want session setups at user level security with a invalid - password to be rejected or allowed in as guest? WinNT rejects them - but it can be a pain as it means "net view" needs to use a password - - You have 3 choices in the setting of map_to_guest: - - "Never" means session setups with an invalid password - are rejected. This is the default. - - "Bad User" means session setups with an invalid password - are rejected, unless the username does not exist, in which case it - is treated as a guest login - - "Bad Password" means session setups with an invalid password - are treated as a guest login - - Note that map_to_guest only has an effect in user or server - level security. -*/ - -static const struct enum_list enum_map_to_guest[] = { - {NEVER_MAP_TO_GUEST, "Never"}, - {MAP_TO_GUEST_ON_BAD_USER, "Bad User"}, - {MAP_TO_GUEST_ON_BAD_PASSWORD, "Bad Password"}, - {-1, NULL} -}; /* Note: We do not initialise the defaults union - it is not allowed in ANSI C * @@ -1375,26 +1398,6 @@ static BOOL lp_bool(const char *s) return ret; } -/******************************************************************* -convenience routine to return enum parameters. -********************************************************************/ -static int lp_enum(const char *s,const struct enum_list *_enum) -{ - int i; - - if (!s || !_enum) { - DEBUG(0,("lp_enum(%s,enum): is called with NULL!\n",s)); - return False; - } - - for (i=0; _enum[i].name; i++) { - if (strcasecmp(_enum[i].name,s)==0) - return _enum[i].value; - } - - DEBUG(0,("lp_enum(%s,enum): value is not in enum_list!\n",s)); - return (-1); -} /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ @@ -1464,20 +1467,6 @@ BOOL lp_parm_bool(int lookup_service, const char *type, const char *option, BOOL return default_v; } -/* Return parametric option from a given service. Type is a part of option before ':' */ -/* Parametric option has following syntax: 'Type: option = value' */ - -int lp_parm_enum(int lookup_service, const char *type, const char *option, - const struct enum_list *_enum) -{ - const char *value = get_parametrics(lookup_service, type, option); - - if (value) - return lp_enum(value, _enum); - - return (-1); -} - /*************************************************************************** Initialise a service to the defaults. @@ -2717,19 +2706,6 @@ static void dump_globals(FILE *f) } -/*************************************************************************** - Return True if a local parameter is currently set to the global default. -***************************************************************************/ - -BOOL lp_is_default(int snum, struct parm_struct *parm) -{ - int pdiff = PTR_DIFF(parm->ptr, &sDefault); - - return equal_parameter(parm->type, - ((char *)ServicePtrs[snum]) + pdiff, - ((char *)&sDefault) + pdiff); -} - /*************************************************************************** Display the contents of a single services record. ***************************************************************************/ -- cgit From 90067934cd3195df80f8b1e614629d51fffcb38b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 1 Nov 2004 10:30:34 +0000 Subject: r3428: switched to using minimal includes for the auto-generated RPC code. The thing that finally convinced me that minimal includes was worth pursuing for rpc was a compiler (tcc) that failed to build Samba due to reaching internal limits of the size of include files. Also the fact that includes.h.gch was 16MB, which really seems excessive. This patch brings it back to 12M, which is still too large, but better. Note that this patch speeds up compile times for both the pch and non-pch case. This change also includes the addition iof a "depends()" option in our IDL files, allowing you to specify that one IDL file depends on another. This capability was needed for the auto-includes generation. (This used to be commit b8f5fa8ac8e8725f3d321004f0aedf4246fc6b49) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index e1f006d889..c4518d620f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -53,6 +53,7 @@ */ #include "includes.h" +#include "librpc/gen_ndr/ndr_svcctl.h" BOOL in_client = False; /* Not in the client by default */ static BOOL bLoaded = False; -- cgit From ead3508ac81ff3ed2a48753f3b5e23537ba6ec73 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 2 Nov 2004 00:24:21 +0000 Subject: r3447: more include/system/XXX.h include files (This used to be commit 264ce9181089922547e8f6f67116f2d7277a5105) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c4518d620f..ffc539ef18 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -53,6 +53,7 @@ */ #include "includes.h" +#include "system/time.h" #include "librpc/gen_ndr/ndr_svcctl.h" BOOL in_client = False; /* Not in the client by default */ -- cgit From 26c6b4c70bd85d8030a96651f2a255a4d48fcda1 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 2 Nov 2004 01:42:45 +0000 Subject: r3449: more include file reduction the ldb part isn't ideal, I will have to think of a better solution (This used to be commit 6b1f86aea8427a8e957b1aeb0ec2f507297f07cb) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index ffc539ef18..8e6538cc12 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -54,6 +54,7 @@ #include "includes.h" #include "system/time.h" +#include "system/iconv.h" #include "librpc/gen_ndr/ndr_svcctl.h" BOOL in_client = False; /* Not in the client by default */ -- cgit From edbfc0f6e70150e321822365bf0eead2821551bd Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 2 Nov 2004 02:57:18 +0000 Subject: r3453: - split out the auth and popt includes - tidied up some of the system includes - moved a few more structures back from misc.idl to netlogon.idl and samr.idl now that pidl knows about inter-IDL dependencies (This used to be commit 7b7477ac42d96faac1b0ff361525d2c63cedfc64) --- source4/param/loadparm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8e6538cc12..5b46118200 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -55,6 +55,7 @@ #include "includes.h" #include "system/time.h" #include "system/iconv.h" +#include "system/network.h" #include "librpc/gen_ndr/ndr_svcctl.h" BOOL in_client = False; /* Not in the client by default */ @@ -911,7 +912,9 @@ static void init_globals(void) /* options that can be set on the command line must be initialised via the slower do_parameter() to ensure that FLAG_CMDLINE is obeyed */ - do_parameter("socket options", DEFAULT_SOCKET_OPTIONS); +#ifdef TCP_NODELAY + do_parameter("socket options", "TCP_NODELAY"); +#endif do_parameter("workgroup", DEFAULT_WORKGROUP); do_parameter("netbios name", get_myname()); do_parameter("max protocol", "NT1"); -- cgit From 3643fb11092e28a9538ef32cedce8ff21ad86a28 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 2 Nov 2004 06:42:15 +0000 Subject: r3463: separated out some more headers (asn_1.h, messages.h, dlinklist.h and ioctl.h) (This used to be commit b97e395c814762024336c1cf4d7c25be8da5813a) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 5b46118200..48c33a1cca 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -57,6 +57,7 @@ #include "system/iconv.h" #include "system/network.h" #include "librpc/gen_ndr/ndr_svcctl.h" +#include "include/dlinklist.h" BOOL in_client = False; /* Not in the client by default */ static BOOL bLoaded = False; -- cgit From 6bd02aa5046b606171a680e6f8aefba31b744af1 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 2 Nov 2004 11:42:35 +0000 Subject: r3478: split out some more pieces of includes.h (This used to be commit 8e9212ecfc61c509f686363d8ec412ce54bc1c8d) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 48c33a1cca..37595c7a4f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -56,6 +56,7 @@ #include "system/time.h" #include "system/iconv.h" #include "system/network.h" +#include "system/printing.h" #include "librpc/gen_ndr/ndr_svcctl.h" #include "include/dlinklist.h" -- cgit From 6f214cc510a59b7a65ee9d4486baf14a3e579f73 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 3 Nov 2004 00:17:12 +0000 Subject: r3494: got rid of include/rewrite.h, and split out the dynconfig.h header (This used to be commit 558de54ec6432a4ae90aa14a585f32c6cd03ced2) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 37595c7a4f..c535509ca6 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -53,6 +53,7 @@ */ #include "includes.h" +#include "dynconfig.h" #include "system/time.h" #include "system/iconv.h" #include "system/network.h" -- cgit From e8010adffe44f1ad0d82c7b5c7d5fe2cf7d53afd Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 5 Nov 2004 07:23:06 +0000 Subject: r3543: fixed some #include lines to make them more consistent, and fixed conditional compilation of xattr client code (This used to be commit 321fb06a627f4deae649ab014bc881721d37b3dd) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c535509ca6..bbdf835e95 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -59,7 +59,7 @@ #include "system/network.h" #include "system/printing.h" #include "librpc/gen_ndr/ndr_svcctl.h" -#include "include/dlinklist.h" +#include "dlinklist.h" BOOL in_client = False; /* Not in the client by default */ static BOOL bLoaded = False; -- cgit From 0639758dd9b19926baac1fd5636d00e3a3d23404 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 9 Nov 2004 01:04:29 +0000 Subject: r3630: More work on DCOM server side (This used to be commit e995a1c0e5d2ee2dc50c31c01ce281a303dd5231) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index bbdf835e95..f823c32091 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -928,7 +928,7 @@ static void init_globals(void) do_parameter("fstype", FSTYPE_STRING); do_parameter("ntvfs handler", "unixuid default"); - do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg"); + do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg IOXIDResolver IRemoteActivation"); do_parameter("server services", "smb rpc"); do_parameter("auth methods", "guest sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); -- cgit From 624f5f1b5c05c6205c6eb0c1ff21477e9e9a857c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 24 Nov 2004 06:07:19 +0000 Subject: r3938: cleaned some old stuff out of loadparm (This used to be commit f280770c8184465c364f497b8931e9753f97e970) --- source4/param/loadparm.c | 72 ------------------------------------------------ 1 file changed, 72 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index f823c32091..5ce87a8c42 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1179,7 +1179,6 @@ FN_GLOBAL_STRING(lp_remote_browse_sync, &Globals.szRemoteBrowseSync) FN_GLOBAL_LIST(lp_wins_server_list, &Globals.szWINSservers) FN_GLOBAL_LIST(lp_interfaces, &Globals.szInterfaces) FN_GLOBAL_STRING(lp_socket_address, &Globals.szSocketAddress) -static FN_GLOBAL_STRING(lp_announce_version, &Globals.szAnnounceVersion) FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases) FN_GLOBAL_LIST(lp_preload_modules, &Globals.szPreloadModules) FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) @@ -2820,28 +2819,6 @@ struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters) } -#if 0 -/*************************************************************************** - Display the contents of a single copy structure. -***************************************************************************/ -static void dump_copy_map(BOOL *pcopymap) -{ - int i; - if (!pcopymap) - return; - - printf("\n\tNon-Copied parameters:\n"); - - for (i = 0; parm_table[i].label; i++) - if (parm_table[i].class == P_LOCAL && - parm_table[i].ptr && !pcopymap[i] && - (i == 0 || (parm_table[i].ptr != parm_table[i - 1].ptr))) - { - printf("\t\t%s\n", parm_table[i].label); - } -} -#endif - /*************************************************************************** Return TRUE if the passed service number is within range. ***************************************************************************/ @@ -3309,60 +3286,11 @@ void lp_copy_service(int snum, const char *new_name) /******************************************************************* Get the default server type we will announce as via nmbd. ********************************************************************/ - int lp_default_server_announce(void) { return default_server_announce; } -/******************************************************************* - Split the announce version into major and minor numbers. -********************************************************************/ - -int lp_major_announce_version(void) -{ - static BOOL got_major = False; - static int major_version = DEFAULT_MAJOR_VERSION; - const char *vers; - char *p; - - if (got_major) - return major_version; - - got_major = True; - if ((vers = lp_announce_version()) == NULL) - return major_version; - - if ((p = strchr_m(vers, '.')) == 0) - return major_version; - - *p = '\0'; - major_version = atoi(vers); - return major_version; -} - -int lp_minor_announce_version(void) -{ - static BOOL got_minor = False; - static int minor_version = DEFAULT_MINOR_VERSION; - const char *vers; - char *p; - - if (got_minor) - return minor_version; - - got_minor = True; - if ((vers = lp_announce_version()) == NULL) - return minor_version; - - if ((p = strchr_m(vers, '.')) == 0) - return minor_version; - - p++; - minor_version = atoi(p); - return minor_version; -} - const char *lp_printername(int snum) { const char *ret = _lp_printername(snum); -- cgit From b69b4075aac1064c40fc35f9267b989546481370 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 25 Nov 2004 17:56:20 +0000 Subject: r3957: fix compiler warning metze (This used to be commit a6fb416f519688cb012dc9098306bbe5b7950e1d) --- source4/param/loadparm.c | 6 ------ 1 file changed, 6 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 5ce87a8c42..978d86a9a3 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -470,12 +470,6 @@ static const struct enum_list enum_announce_as[] = { {-1, NULL} }; -static const struct enum_list enum_case[] = { - {CASE_LOWER, "lower"}, - {CASE_UPPER, "upper"}, - {-1, NULL} -}; - static const struct enum_list enum_bool_auto[] = { {False, "No"}, {False, "False"}, -- cgit From 64b516b10546619d3b1adef7fcc4cfef3ad610f9 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 2 Dec 2004 18:27:08 +0000 Subject: r4045: readd krb5 support defaulted to disable use: gensec:krb5=yes gensec:ms_krb5=yes to enable it or -k on the client tools on the command line metze (This used to be commit 0ae5794cf44933d2554e0356baaca24c7a784f71) --- source4/param/loadparm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 978d86a9a3..1d9553de3e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -3071,6 +3071,9 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, lp_do_parameter(-1, "wins server", "127.0.0.1"); } + lp_do_parameter(-1, "gensec:krb5", "False"); + lp_do_parameter(-1, "gensec:ms_krb5", "False"); + init_iconv(); return (bRetval); -- cgit From e5ce904ddbd6175ba86ed827bf096b76b11b5511 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 3 Dec 2004 06:42:06 +0000 Subject: r4054: got rid of Realloc(), replacing it with the type safe macro realloc_p() (This used to be commit b0f6e21481745d1b2ced28d9ed6f09f6ffd99562) --- source4/param/loadparm.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 1d9553de3e..8975f066fa 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1568,9 +1568,7 @@ static int add_a_service(const service *pservice, const char *name) if (i == iNumServices) { service **tsp; - tsp = (service **) Realloc(ServicePtrs, - sizeof(service *) * - num_to_alloc); + tsp = realloc_p(ServicePtrs, service *, num_to_alloc); if (!tsp) { DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n")); -- cgit From 6e6374cb5bcffb4df8bdb0a83327fff92b61ac84 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 3 Dec 2004 07:20:30 +0000 Subject: r4055: fixed more places to use type safe allocation macros (This used to be commit eec698254f67365f27b4b7569fa982e22472aca1) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8975f066fa..334ec982e0 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2185,7 +2185,7 @@ static void init_copymap(service * pservice) { int i; SAFE_FREE(pservice->copymap); - pservice->copymap = (BOOL *)malloc(sizeof(BOOL) * NUMPARAMETERS); + pservice->copymap = malloc_array_p(BOOL, NUMPARAMETERS); if (!pservice->copymap) DEBUG(0, ("Couldn't allocate copymap!! (size %d)\n", -- cgit From 2f9e170f45e128eb6ab6bd97c9c8b40dcd9a97fa Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 4 Dec 2004 09:30:38 +0000 Subject: r4058: added a type safe version of smb_xmalloc() (This used to be commit 1235afa5fe3a396cd7a180cbc500834a30fbaa80) --- source4/param/loadparm.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 334ec982e0..035ac3422a 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1576,8 +1576,7 @@ static int add_a_service(const service *pservice, const char *name) } else { ServicePtrs = tsp; - ServicePtrs[iNumServices] = - (service *) malloc(sizeof(service)); + ServicePtrs[iNumServices] = malloc_p(service); } if (!ServicePtrs[iNumServices]) { DEBUG(0,("add_a_service: out of memory!\n")); @@ -1871,7 +1870,7 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL pdata = pdata->next; } if (not_added) { - paramo = smb_xmalloc(sizeof(*paramo)); + paramo = smb_xmalloc_p(struct param_opt); paramo->key = strdup(data->key); paramo->value = strdup(data->value); DLIST_ADD(pserviceDest->param_opt, paramo); @@ -1940,7 +1939,7 @@ static void add_to_file_list(const char *fname, const char *subfname) } if (!f) { - f = (struct file_lists *)malloc(sizeof(file_lists[0])); + f = malloc_p(struct file_lists); if (!f) return; f->next = file_lists; @@ -2247,7 +2246,7 @@ static BOOL lp_do_parameter_parametric(int snum, const char *pszParmName, const } } - paramo = smb_xmalloc(sizeof(*paramo)); + paramo = smb_xmalloc_p(struct param_opt); paramo->key = strdup(name); paramo->value = strdup(pszParmValue); paramo->flags = flags; -- cgit From 9be2e63315393f6e94cdd01a507b16768b0d90db Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 23 Dec 2004 03:00:55 +0000 Subject: r4339: - rename auth_guest to auth_anonymous - don't use static const strings in the server_info - fix segfault when auth_sam gets "" as username metze (This used to be commit 7fcbd483d4977cf6483f34ddd28e6c0182897ba2) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 035ac3422a..059b7b1cb2 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -924,7 +924,7 @@ static void init_globals(void) do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg IOXIDResolver IRemoteActivation"); do_parameter("server services", "smb rpc"); - do_parameter("auth methods", "guest sam_ignoredomain"); + do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); do_parameter("private dir", dyn_PRIVATE_DIR); do_parameter_var("sam database", "tdb://%s/sam.ldb", dyn_PRIVATE_DIR); -- cgit From 93995188d99f3452b2bd385f0a9a7f5ebd240f8e Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 23 Dec 2004 06:39:58 +0000 Subject: r4342: Fix a memory leak in init_globals(). Andrew Bartlett (This used to be commit cc47b4c6fc932f8257506276eaa1a98a41055f8b) --- source4/param/loadparm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 059b7b1cb2..1ecc53fac0 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -895,6 +895,7 @@ static void init_printer_values(void) static void init_globals(void) { int i; + char *myname; DEBUG(3, ("Initialising global parameters\n")); @@ -913,7 +914,9 @@ static void init_globals(void) do_parameter("socket options", "TCP_NODELAY"); #endif do_parameter("workgroup", DEFAULT_WORKGROUP); - do_parameter("netbios name", get_myname()); + myname = get_myname(); + do_parameter("netbios name", myname); + SAFE_FREE(myname); do_parameter("max protocol", "NT1"); do_parameter("name resolve order", "lmhosts wins host bcast"); -- cgit From 0128bd6d3f06fd433ec3747686da1e1a1133ab3d Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 31 Dec 2004 01:03:57 +0000 Subject: r4423: give lp_parm_int() and lp_parm_ulong() default values metze (This used to be commit c44f4d44b51789916e50c9da93046d0a15245edc) --- source4/param/loadparm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 1ecc53fac0..eabf70b6d0 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1436,27 +1436,27 @@ char **lp_parm_string_list(int lookup_service, const char *type, const char *opt /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -int lp_parm_int(int lookup_service, const char *type, const char *option) +int lp_parm_int(int lookup_service, const char *type, const char *option, int default_v) { const char *value = get_parametrics(lookup_service, type, option); if (value) return lp_int(value); - return (-1); + return default_v; } /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -unsigned long lp_parm_ulong(int lookup_service, const char *type, const char *option) +unsigned long lp_parm_ulong(int lookup_service, const char *type, const char *option, unsigned long default_v) { const char *value = get_parametrics(lookup_service, type, option); if (value) return lp_ulong(value); - return (0); + return default_v; } /* Return parametric option from a given service. Type is a part of option before ':' */ -- cgit From 2acf961638fde09d0319b87fe2ec98a40ee4a30b Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 31 Dec 2004 07:35:14 +0000 Subject: r4438: the ADMIN$ share is a diskshare but hidden metze (This used to be commit 33a185ec3b211f6137abd6367ccc81d5102e5f4f) --- source4/param/loadparm.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index eabf70b6d0..17769c5965 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -924,6 +924,7 @@ static void init_globals(void) do_parameter("fstype", FSTYPE_STRING); do_parameter("ntvfs handler", "unixuid default"); + do_parameter("max connections", "-1"); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg IOXIDResolver IRemoteActivation"); do_parameter("server services", "smb rpc"); @@ -1653,32 +1654,34 @@ int lp_add_service(const char *pszService, int iDefaultService) Add the IPC service. ***************************************************************************/ -static BOOL lp_add_ipc(const char *ipc_name, BOOL guest_ok) +static BOOL lp_add_hidden(const char *name, const char *fstype, BOOL guest_ok) { pstring comment; - int i = add_a_service(&sDefault, ipc_name); + int i = add_a_service(&sDefault, name); if (i < 0) return (False); slprintf(comment, sizeof(comment) - 1, - "IPC Service (%s)", Globals.szServerString); + "%s Service (%s)", fstype, Globals.szServerString); string_set(&ServicePtrs[i]->szPath, tmpdir()); string_set(&ServicePtrs[i]->szUsername, ""); string_set(&ServicePtrs[i]->comment, comment); - string_set(&ServicePtrs[i]->fstype, "IPC"); + string_set(&ServicePtrs[i]->fstype, fstype); ServicePtrs[i]->iMaxConnections = 0; ServicePtrs[i]->bAvailable = True; ServicePtrs[i]->bRead_only = True; ServicePtrs[i]->bGuest_only = False; ServicePtrs[i]->bGuest_ok = guest_ok; ServicePtrs[i]->bPrint_ok = False; - ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; + ServicePtrs[i]->bBrowseable = False; - lp_do_parameter(i, "ntvfs handler", "default"); + if (strcasecmp(fstype, "IPC") == 0) { + lp_do_parameter(i, "ntvfs handler", "default"); + } - DEBUG(3, ("adding IPC service\n")); + DEBUG(3, ("adding hidden service %s\n", name)); return (True); } @@ -3056,8 +3059,8 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, if (add_ipc) { /* When 'restrict anonymous = 2' guest connections to ipc$ are denied */ - lp_add_ipc("IPC$", (lp_restrict_anonymous() < 2)); - lp_add_ipc("ADMIN$", False); + lp_add_hidden("IPC$", "IPC", (lp_restrict_anonymous() < 2)); + lp_add_hidden("ADMIN$", "DISK", False); } set_server_role(); -- cgit From f53293ffbfe37fd8a3bb1a7ec509b356ef2259c7 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 31 Dec 2004 07:40:14 +0000 Subject: r4439: unlimited connections is -1 metze (This used to be commit e62b36bef193f6a58ee035d581ef0f574f1e2910) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 17769c5965..8e535c0900 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1669,7 +1669,7 @@ static BOOL lp_add_hidden(const char *name, const char *fstype, BOOL guest_ok) string_set(&ServicePtrs[i]->szUsername, ""); string_set(&ServicePtrs[i]->comment, comment); string_set(&ServicePtrs[i]->fstype, fstype); - ServicePtrs[i]->iMaxConnections = 0; + ServicePtrs[i]->iMaxConnections = -1; ServicePtrs[i]->bAvailable = True; ServicePtrs[i]->bRead_only = True; ServicePtrs[i]->bGuest_only = False; -- cgit From f1938123a613ac81f11b00ff5876a7cc71168cfb Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 31 Dec 2004 08:43:34 +0000 Subject: r4444: - initialise registry:HKEY_LOCAL_MACHINE to a reasonable default (where provision.pl suggests hklm.ldb be put) - fix the globals init not to wipe parametic values after initialising them (this bug prevented default values for parametric parameters) (This used to be commit 6a360c52c1723b4c3485a97ebcfeb907f840a051) --- source4/param/loadparm.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8e535c0900..405caf6fc4 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -933,6 +933,7 @@ static void init_globals(void) do_parameter("private dir", dyn_PRIVATE_DIR); do_parameter_var("sam database", "tdb://%s/sam.ldb", dyn_PRIVATE_DIR); do_parameter_var("spoolss database", "tdb://%s/spoolss.ldb", dyn_PRIVATE_DIR); + do_parameter_var("registry:HKEY_LOCAL_MACHINE", "ldb:/%s/hklm.ldb", dyn_PRIVATE_DIR); do_parameter("guest account", GUEST_ACCOUNT); /* using UTF8 by default allows us to support all chars */ @@ -1412,7 +1413,7 @@ static BOOL lp_bool(const char *s) const char *lp_parm_string(int lookup_service, const char *type, const char *option) { const char *value = get_parametrics(lookup_service, type, option); - + if (value) return lp_string(value); @@ -3025,13 +3026,6 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, bInGlobalSection = True; bGlobalOnly = global_only; - init_globals(); - - if (save_defaults) - { - lp_save_defaults(); - } - if (Globals.param_opt != NULL) { struct param_opt *next; for (data=Globals.param_opt; data; data=next) { @@ -3044,6 +3038,13 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, } } + init_globals(); + + if (save_defaults) + { + lp_save_defaults(); + } + /* We get sections first, so have to start 'behind' to make up */ iServiceIndex = -1; bRetval = pm_process(n2, do_section, do_parameter); -- cgit From 09d708e27e3c46a989dd670f369a47383fec373e Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 31 Dec 2004 11:37:26 +0000 Subject: r4452: the beginnings of a dssetup rpc server. (This used to be commit 1c2170ae21d60c22ee3053fbf249dba59de576ba) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 405caf6fc4..70caf62ff2 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -926,7 +926,7 @@ static void init_globals(void) do_parameter("ntvfs handler", "unixuid default"); do_parameter("max connections", "-1"); - do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg IOXIDResolver IRemoteActivation"); + do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg IOXIDResolver IRemoteActivation dssetup"); do_parameter("server services", "smb rpc"); do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); -- cgit From 740ee4a8977512c03800ef88603cf65fd044443b Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sat, 1 Jan 2005 00:19:08 +0000 Subject: r4460: Add a new GENSEC module: gensec_gssapi (disabled by default, set parametric option: gensec:gssapi=yes to enable). This module backs directly onto GSSAPI, and allows us to sign and seal GSSAPI/Krb5 connections in particular. This avoids me reinventing the entire GSSAPI wheel. Currently a lot of things are left as default - we will soon start specifiying OIDs as well as passwords (it uses the keytab only at the moment). Tested with our LDAP-* torture tests against Win2k3. My hope is to use this module to access the new SPNEGO implementation in Heimdal, to avoid having to standards-verify our own. Andrew Bartlett (This used to be commit 14b650c85db14a9bf97e24682b2643b63c51ff35) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 70caf62ff2..524511d1b5 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -3075,6 +3075,7 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, lp_do_parameter(-1, "wins server", "127.0.0.1"); } + lp_do_parameter(-1, "gensec:gssapi", "False"); lp_do_parameter(-1, "gensec:krb5", "False"); lp_do_parameter(-1, "gensec:ms_krb5", "False"); -- cgit From 7b4c02bf05c9c9508ce15cf0843dad1a354a5547 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sun, 2 Jan 2005 16:06:21 +0000 Subject: r4482: in ads mixed mode there are also only one PDC and multiple BDC's metze (This used to be commit 30980d218495d389d7a5db4b190ed717217c08d4) --- source4/param/loadparm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 524511d1b5..e06daf92c1 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2965,7 +2965,10 @@ static void set_server_role(void) case SEC_DOMAIN: case SEC_ADS: if (lp_domain_logons()) { - server_role = ROLE_DOMAIN_PDC; + if (Globals.bDomainMaster) /* auto or yes */ + server_role = ROLE_DOMAIN_PDC; + else + server_role = ROLE_DOMAIN_BDC; break; } server_role = ROLE_DOMAIN_MEMBER; -- cgit From 0dcd4645961c5d672b9526538eaddf0503db793a Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sun, 2 Jan 2005 23:53:14 +0000 Subject: r4494: Allow gensec_gssapi to use the SPNEGO mech provided by Heimdal (off by default at this point), and include the GSSAPI OIDs in our source, per advice by lha that this is easier than getting the includes right. Andrew Bartlett (This used to be commit 9ff8b2b4d12d364084df5c95a752ce2a0546053d) --- source4/param/loadparm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index e06daf92c1..00c9133067 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -3078,7 +3078,8 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, lp_do_parameter(-1, "wins server", "127.0.0.1"); } - lp_do_parameter(-1, "gensec:gssapi", "False"); + lp_do_parameter(-1, "gensec:gssapi_krb5", "False"); + lp_do_parameter(-1, "gensec:gssapi_spnego", "False"); lp_do_parameter(-1, "gensec:krb5", "False"); lp_do_parameter(-1, "gensec:ms_krb5", "False"); -- cgit From c8ba520c5a66f2d4a4d95baf366a2194a752e9c5 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 3 Jan 2005 07:08:14 +0000 Subject: r4500: Allow GENSEC modules to be disabled by setting a flag on their module definition, not by hardcoded reference in loadparm.c Andrew Bartlett (This used to be commit 43558eaf7604d2bb0187e0d1ba0686935a965ad7) --- source4/param/loadparm.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 00c9133067..da23dd02ef 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -3078,11 +3078,6 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, lp_do_parameter(-1, "wins server", "127.0.0.1"); } - lp_do_parameter(-1, "gensec:gssapi_krb5", "False"); - lp_do_parameter(-1, "gensec:gssapi_spnego", "False"); - lp_do_parameter(-1, "gensec:krb5", "False"); - lp_do_parameter(-1, "gensec:ms_krb5", "False"); - init_iconv(); return (bRetval); -- cgit From ddc10d4d37984246a6547e34a32d629c689c40d1 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 6 Jan 2005 03:06:58 +0000 Subject: r4549: got rid of a lot more uses of plain talloc(), instead using talloc_size() or talloc_array_p() where appropriate. also fixed a memory leak in pvfs_copy_file() (failed to free a memory context) (This used to be commit 89b74b53546e1570b11b3702f40bee58aed8c503) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index da23dd02ef..526ec8b85b 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1086,7 +1086,7 @@ static const char *lp_string(const char *s) if (!lp_talloc) lp_talloc = talloc_init("lp_talloc"); - ret = (char *)talloc(lp_talloc, len + 100); /* leave room for substitution */ + ret = talloc_array_p(lp_talloc, char, len + 100); /* leave room for substitution */ if (!ret) return NULL; -- cgit From fd4831f1f088e1c00c2a037e200440e309014afd Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 10 Jan 2005 17:28:36 +0000 Subject: r4650: - make more use of bitmap and enum's - move some structs out of misc.idl metze (This used to be commit b6543a6e3057b5588ec50a2ebf6c7c932209efe6) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 526ec8b85b..eed10fb44c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -59,6 +59,7 @@ #include "system/network.h" #include "system/printing.h" #include "librpc/gen_ndr/ndr_svcctl.h" +#include "librpc/gen_ndr/ndr_samr.h" #include "dlinklist.h" BOOL in_client = False; /* Not in the client by default */ -- cgit From ada17c6794da2988fea7e800c60ca7e83d23eb7e Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 13 Jan 2005 18:23:28 +0000 Subject: r4725: make "password server" a string list metze (This used to be commit 5287ec0818cf38cc5d3ef2a21518c98b700116fb) --- source4/param/loadparm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index eed10fb44c..33559aa528 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -170,7 +170,7 @@ typedef struct char *szSPOOLSS_URL; char *szPrivateDir; char **szPreloadModules; - char *szPasswordServer; + char **szPasswordServers; char *szSocketOptions; char *szRealm; char *szADSserver; @@ -561,7 +561,7 @@ static struct parm_struct parm_table[] = { {"idmap backend", P_STRING, P_GLOBAL, &Globals.szIDMapBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"null passwords", P_BOOL, P_GLOBAL, &Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"password server", P_STRING, P_GLOBAL, &Globals.szPasswordServer, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"password server", P_LIST, P_GLOBAL, &Globals.szPasswordServers, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"sam database", P_STRING, P_GLOBAL, &Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"spoolss database", P_STRING, P_GLOBAL, &Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -1162,7 +1162,7 @@ FN_GLOBAL_STRING(lp_hosts_equiv, &Globals.szHostsEquiv) FN_GLOBAL_STRING(lp_auto_services, &Globals.szAutoServices) FN_GLOBAL_STRING(lp_passwd_program, &Globals.szPasswdProgram) FN_GLOBAL_STRING(lp_passwd_chat, &Globals.szPasswdChat) -FN_GLOBAL_STRING(lp_passwordserver, &Globals.szPasswordServer) +FN_GLOBAL_LIST(lp_passwordserver, &Globals.szPasswordServers) FN_GLOBAL_STRING(lp_name_resolve_order, &Globals.szNameResolveOrder) FN_GLOBAL_STRING(lp_realm, &Globals.szRealm) FN_GLOBAL_STRING(lp_ads_server, &Globals.szADSserver) -- cgit From 8451b2658ca0f44f2683bf8045a9232a4a8c9660 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 18 Jan 2005 09:30:43 +0000 Subject: r4817: ccache was being made ineffective on all the build farm machines because the version number was being auto-updated and included in all C files. With this change it is only included where needed. (This used to be commit 520cff73c6dc62ba1050cf7ca5145d50b5f2bb4e) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 33559aa528..616cf50afb 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -53,6 +53,7 @@ */ #include "includes.h" +#include "version.h" #include "dynconfig.h" #include "system/time.h" #include "system/iconv.h" -- cgit From 6f0aef31cdfa9b486d1f2e0f097e071830f5600d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 21 Jan 2005 13:13:24 +0000 Subject: r4898: - removed the unused wins_srv_*() code - expanded the generic async name resolver to try multiple methods - added wins resolutions to the list of methods tried - fixed up the random trn id generation to use the good random generator (This used to be commit 266fd2751c01808e5a18d4094032af50554ceb7a) --- source4/param/loadparm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 616cf50afb..0582d55511 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -190,7 +190,7 @@ typedef struct char **szNetbiosAliases; char *szNetbiosScope; char *szDomainOtherSIDs; - char *szNameResolveOrder; + char **szNameResolveOrder; char *szPanicAction; char *szAddUserScript; char *szAddMachineScript; @@ -627,7 +627,7 @@ static struct parm_struct parm_table[] = { {"max mux", P_INTEGER, P_GLOBAL, &Globals.max_mux, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"max xmit", P_INTEGER, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"name resolve order", P_STRING, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"name resolve order", P_LIST, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"max ttl", P_INTEGER, P_GLOBAL, &Globals.max_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"max wins ttl", P_INTEGER, P_GLOBAL, &Globals.max_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"min wins ttl", P_INTEGER, P_GLOBAL, &Globals.min_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -1164,7 +1164,7 @@ FN_GLOBAL_STRING(lp_auto_services, &Globals.szAutoServices) FN_GLOBAL_STRING(lp_passwd_program, &Globals.szPasswdProgram) FN_GLOBAL_STRING(lp_passwd_chat, &Globals.szPasswdChat) FN_GLOBAL_LIST(lp_passwordserver, &Globals.szPasswordServers) -FN_GLOBAL_STRING(lp_name_resolve_order, &Globals.szNameResolveOrder) +FN_GLOBAL_LIST(lp_name_resolve_order, &Globals.szNameResolveOrder) FN_GLOBAL_STRING(lp_realm, &Globals.szRealm) FN_GLOBAL_STRING(lp_ads_server, &Globals.szADSserver) FN_GLOBAL_STRING(lp_socket_options, &Globals.socket_options) -- cgit From 759da3b915e2006d4c87b5ace47f399accd9ce91 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 27 Jan 2005 07:08:20 +0000 Subject: r5037: got rid of all of the TALLOC_DEPRECATED stuff. My apologies for the large commit. I thought this was worthwhile to get done for consistency. (This used to be commit ec32b22ed5ec224f6324f5e069d15e92e38e15c0) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 0582d55511..8380fccaf7 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1088,7 +1088,7 @@ static const char *lp_string(const char *s) if (!lp_talloc) lp_talloc = talloc_init("lp_talloc"); - ret = talloc_array_p(lp_talloc, char, len + 100); /* leave room for substitution */ + ret = talloc_array(lp_talloc, char, len + 100); /* leave room for substitution */ if (!ret) return NULL; -- cgit From c7ded5ab0accc54a28df4d43cb923e6c808ff347 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 30 Jan 2005 10:24:36 +0000 Subject: r5108: the beginnings of a nbtd server for Samba4. Currently just displays the packets it receives, but it at least shows how the server structure will work. To implement it I extended the libcli/nbt/ library to allow for an incoming packet handler to be registered. That allows the nbt client library to be used for low level processing of the nbtd server packets. Other changes: - made the socket library always set SO_REUSEADDR when binding to an interface, to ensure that restarts of a server don't have to wait for a couple of minutes. - made the nbt port configurable. Defaults to 137, but other ports will be useful for testing. (This used to be commit 2fedca6adfd4df9e85cc86896dfa79630777a917) --- source4/param/loadparm.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8380fccaf7..d5a8928c3d 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -61,6 +61,7 @@ #include "system/printing.h" #include "librpc/gen_ndr/ndr_svcctl.h" #include "librpc/gen_ndr/ndr_samr.h" +#include "librpc/gen_ndr/ndr_nbt.h" #include "dlinklist.h" BOOL in_client = False; /* Not in the client by default */ @@ -233,6 +234,7 @@ typedef struct int winbind_cache_time; int iLockSpinCount; int iLockSpinTime; + int nbt_port; char *socket_options; BOOL bDNSproxy; BOOL bWINSsupport; @@ -612,6 +614,7 @@ static struct parm_struct parm_table[] = { {"Protocol Options", P_SEP, P_SEPARATOR}, {"smb ports", P_LIST, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"nbt port", P_INTEGER, P_GLOBAL, &Globals.nbt_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, {"min protocol", P_ENUM, P_GLOBAL, &Globals.minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -1044,6 +1047,7 @@ static void init_globals(void) do_parameter("use spnego", "True"); do_parameter("smb ports", SMB_PORTS); + do_parameter("nbt port", "137"); do_parameter("nt status support", "True"); } @@ -1141,6 +1145,7 @@ static const char *lp_string(const char *s) int fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) +FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) -- cgit From b8ab357df9379e08778555e585fa1e2df97fa5a6 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 31 Jan 2005 02:02:34 +0000 Subject: r5115: enable the nbt daemon by default (This used to be commit 4c0cc5fc11241c8a19081c4944b162c29da31603) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index d5a8928c3d..90f8c682fd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -932,7 +932,7 @@ static void init_globals(void) do_parameter("max connections", "-1"); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg IOXIDResolver IRemoteActivation dssetup"); - do_parameter("server services", "smb rpc"); + do_parameter("server services", "smb rpc nbt"); do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); do_parameter("private dir", dyn_PRIVATE_DIR); -- cgit From db4ba6e6909b4cf80b2b18f1a0d34b613de4be25 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 4 Feb 2005 04:58:48 +0000 Subject: r5221: replace the str_list_*() code with new code based on talloc(). This is a precursor to adding the wins client code in the nbt server. (This used to be commit e8e499755ab667015740b35a7787134ebe852954) --- source4/param/loadparm.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 90f8c682fd..f837545999 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1437,7 +1437,7 @@ char **lp_parm_string_list(int lookup_service, const char *type, const char *opt const char *value = get_parametrics(lookup_service, type, option); if (value) - return str_list_make(value, separator); + return str_list_make(NULL, value, separator); return NULL; } @@ -1513,15 +1513,17 @@ static void free_service(service *pservice) for (i = 0; parm_table[i].label; i++) { if ((parm_table[i].type == P_STRING || parm_table[i].type == P_USTRING) && - parm_table[i].class == P_LOCAL) + parm_table[i].class == P_LOCAL) { string_free((char **) (((char *)pservice) + PTR_DIFF(parm_table[i].ptr, &sDefault))); - else if (parm_table[i].type == P_LIST && - parm_table[i].class == P_LOCAL) - str_list_free((char ***) - (((char *)pservice) + - PTR_DIFF(parm_table[i].ptr, &sDefault))); + } else if (parm_table[i].type == P_LIST && + parm_table[i].class == P_LOCAL) { + char ***listp = (char ***)(((char *)pservice) + + PTR_DIFF(parm_table[i].ptr, &sDefault)); + talloc_free(*listp); + *listp = NULL; + } } DEBUG(5,("Freeing parametrics:\n")); @@ -1853,7 +1855,7 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL strupper(*(char **)dest_ptr); break; case P_LIST: - str_list_copy((char ***)dest_ptr, *(const char ***)src_ptr); + *(char ***)dest_ptr = str_list_copy(NULL, *(const char ***)src_ptr); break; default: break; @@ -2365,7 +2367,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue break; case P_LIST: - *(char ***)parm_ptr = str_list_make(pszParmValue, NULL); + *(char ***)parm_ptr = str_list_make(NULL, pszParmValue, NULL); break; case P_STRING: @@ -2588,7 +2590,8 @@ static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) return (*((char *)ptr1) == *((char *)ptr2)); case P_LIST: - return str_list_compare(*(char ***)ptr1, *(char ***)ptr2); + return str_list_equal((const char **)(*(char ***)ptr1), + (const char **)(*(char ***)ptr2)); case P_STRING: case P_USTRING: @@ -2664,8 +2667,8 @@ static BOOL is_default(int i) return False; switch (parm_table[i].type) { case P_LIST: - return str_list_compare (parm_table[i].def.lvalue, - *(char ***)parm_table[i].ptr); + return str_list_equal((const char **)parm_table[i].def.lvalue, + (const char **)(*(char ***)parm_table[i].ptr)); case P_STRING: case P_USTRING: return strequal(parm_table[i].def.svalue, @@ -2922,8 +2925,8 @@ static void lp_save_defaults(void) continue; switch (parm_table[i].type) { case P_LIST: - str_list_copy(&(parm_table[i].def.lvalue), - *(const char ***)parm_table[i].ptr); + parm_table[i].def.lvalue = str_list_copy(NULL, + *(const char ***)parm_table[i].ptr); break; case P_STRING: case P_USTRING: -- cgit From fedf0b0d91fdf2a6ae0ef47acd4047f662bd3374 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 10 Feb 2005 03:48:43 +0000 Subject: r5296: - only include the tdb headers where they are needed - removed the u32 hack in events.c as I think this was only needed as tdb.h defines u32. Metze, can you check that this hack is indeed no longer needed on your suse system? (This used to be commit 6f79432fe656164d4770dbce114a30dda5e7bf9a) --- source4/param/loadparm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index f837545999..288bc3a38e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -133,7 +133,7 @@ struct parm_struct int ivalue; char *svalue; char cvalue; - char **lvalue; + const char **lvalue; } def; }; @@ -1431,8 +1431,8 @@ const char *lp_parm_string(int lookup_service, const char *type, const char *opt /* Parametric option has following syntax: 'Type: option = value' */ /* Returned value is allocated in 'lp_talloc' context */ -char **lp_parm_string_list(int lookup_service, const char *type, const char *option, - const char *separator) +const char **lp_parm_string_list(int lookup_service, const char *type, const char *option, + const char *separator) { const char *value = get_parametrics(lookup_service, type, option); @@ -1855,7 +1855,7 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL strupper(*(char **)dest_ptr); break; case P_LIST: - *(char ***)dest_ptr = str_list_copy(NULL, *(const char ***)src_ptr); + *(const char ***)dest_ptr = str_list_copy(NULL, *(const char ***)src_ptr); break; default: break; @@ -2367,7 +2367,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue break; case P_LIST: - *(char ***)parm_ptr = str_list_make(NULL, pszParmValue, NULL); + *(const char ***)parm_ptr = str_list_make(NULL, pszParmValue, NULL); break; case P_STRING: -- cgit From 35537c1255e9508b77fd9d9def1ac96e423bee46 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 10 Feb 2005 06:36:30 +0000 Subject: r5302: fixed a compilation problem on solaris caused by the recent include changes (This used to be commit e7e015f79b10c353848a17f31c91a0593790a560) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 288bc3a38e..121821b542 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2028,7 +2028,7 @@ static BOOL handle_include(const char *pszParmValue, char **ptr) string_set(ptr, fname); - if (file_exist(fname, NULL)) + if (file_exist(fname)) return (pm_process(fname, do_section, do_parameter)); DEBUG(2, ("Can't find include file %s\n", fname)); -- cgit From 75ddf59ea110117578acd3a7b889549bfb40473c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 10 Feb 2005 07:39:14 +0000 Subject: r5308: trimmed back a lot of the old macros from smb_macros.h (This used to be commit bf43c9bdcf9e654d123f6a2b29feb9189ca9e561) --- source4/param/loadparm.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 121821b542..bd4bb8af04 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2506,6 +2506,8 @@ BOOL lp_set_option(const char *option) } +#define BOOLSTR(b) ((b) ? "Yes" : "No") + /*************************************************************************** Print a parameter of the specified type. ***************************************************************************/ -- cgit From 0487eee93a06c8d4d1925660d6d14374c4039d86 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 11 Feb 2005 23:54:37 +0000 Subject: r5346: - a bit more preparation for the WINS server going in - more NBT packet asserts, to ensure that incoming requests have all the elements we depend on - open the WINS database at startup if we are configured as a WINS server - split out the nbtd server reply packet generation code so it can be shared by the WINS server - re-did the logic of what is answered by the WINS server and what by the B node server. It now always tries to answer by the B node, and only "recurses" to the WINS server for names that are not found. (This used to be commit 5613e6b8ad9b32639caf5055f793dbc4d0a2fc19) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index bd4bb8af04..c6a58386ec 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -170,6 +170,7 @@ typedef struct char *szSMBPasswdFile; char *szSAM_URL; char *szSPOOLSS_URL; + char *szWINS_URL; char *szPrivateDir; char **szPreloadModules; char **szPasswordServers; @@ -568,6 +569,7 @@ static struct parm_struct parm_table[] = { {"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"sam database", P_STRING, P_GLOBAL, &Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"spoolss database", P_STRING, P_GLOBAL, &Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"wins database", P_STRING, P_GLOBAL, &Globals.szWINS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -938,6 +940,7 @@ static void init_globals(void) do_parameter("private dir", dyn_PRIVATE_DIR); do_parameter_var("sam database", "tdb://%s/sam.ldb", dyn_PRIVATE_DIR); do_parameter_var("spoolss database", "tdb://%s/spoolss.ldb", dyn_PRIVATE_DIR); + do_parameter_var("wins database", "tdb://%s/wins.ldb", dyn_PRIVATE_DIR); do_parameter_var("registry:HKEY_LOCAL_MACHINE", "ldb:/%s/hklm.ldb", dyn_PRIVATE_DIR); do_parameter("guest account", GUEST_ACCOUNT); @@ -1154,6 +1157,7 @@ FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) FN_GLOBAL_STRING(lp_smb_passwd_file, &Globals.szSMBPasswdFile) FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) +FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) FN_GLOBAL_STRING(lp_printcapname, &Globals.szPrintcapname) -- cgit From a065adeacb8a8c8f7ad5041b64e3059afa0d1e26 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 14 Feb 2005 05:10:33 +0000 Subject: r5389: initialise the WINS ttl max/min values to something sensible (This used to be commit ee61fab163ed7faccef908d7458a2038fdad0887) --- source4/param/loadparm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c6a58386ec..23551bd1c6 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1053,6 +1053,9 @@ static void init_globals(void) do_parameter("nbt port", "137"); do_parameter("nt status support", "True"); + + do_parameter("max wins ttl", "432000"); + do_parameter("min wins ttl", "10"); } static TALLOC_CTX *lp_talloc; -- cgit From 8c76eb2672343007bc5de60487e01a87fd76f799 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 14 Feb 2005 10:08:10 +0000 Subject: r5395: fixed some loadparm memory leaks (This used to be commit b75f8fe1844c539d8a4e369225bcbe0e6f81e9de) --- source4/param/loadparm.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 23551bd1c6..4d6282573b 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1444,7 +1444,7 @@ const char **lp_parm_string_list(int lookup_service, const char *type, const cha const char *value = get_parametrics(lookup_service, type, option); if (value) - return str_list_make(NULL, value, separator); + return str_list_make(talloc_autofree_context(), value, separator); return NULL; } @@ -1862,7 +1862,8 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL strupper(*(char **)dest_ptr); break; case P_LIST: - *(const char ***)dest_ptr = str_list_copy(NULL, *(const char ***)src_ptr); + *(const char ***)dest_ptr = str_list_copy(talloc_autofree_context(), + *(const char ***)src_ptr); break; default: break; @@ -2374,7 +2375,8 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue break; case P_LIST: - *(const char ***)parm_ptr = str_list_make(NULL, pszParmValue, NULL); + *(const char ***)parm_ptr = str_list_make(talloc_autofree_context(), + pszParmValue, NULL); break; case P_STRING: @@ -2934,7 +2936,7 @@ static void lp_save_defaults(void) continue; switch (parm_table[i].type) { case P_LIST: - parm_table[i].def.lvalue = str_list_copy(NULL, + parm_table[i].def.lvalue = str_list_copy(talloc_autofree_context(), *(const char ***)parm_table[i].ptr); break; case P_STRING: -- cgit From 4d10f2a86a4d44960b0c5590da988483c672cfba Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 21 Feb 2005 15:08:57 +0000 Subject: r5491: Don't load the DCOM-specific services by default (yet) (This used to be commit e2cbe16c1e4e3912ecdccc6480a147478fff3d9e) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 4d6282573b..e023ba5f93 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -933,7 +933,7 @@ static void init_globals(void) do_parameter("ntvfs handler", "unixuid default"); do_parameter("max connections", "-1"); - do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg IOXIDResolver IRemoteActivation dssetup"); + do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup"); do_parameter("server services", "smb rpc nbt"); do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); -- cgit From c13baabc91daef3c7e38f753f87caae117b3adcd Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 22 Feb 2005 11:47:06 +0000 Subject: r5502: announce us as a print server by default metze (This used to be commit ac062a29799665121c15f60a8f5d25a3c68e51ae) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index e023ba5f93..33026dd9e0 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1926,6 +1926,7 @@ static BOOL service_ok(int iService) DEBUG(0, ("WARNING: [%s] service MUST be printable!\n", ServicePtrs[iService]->szService)); ServicePtrs[iService]->bPrint_ok = True; + update_server_announce_as_printserver(); } /* [printers] service must also be non-browsable. */ if (ServicePtrs[iService]->bBrowseable) @@ -3245,6 +3246,9 @@ static void set_default_server_announce_type(void) if (lp_host_msdfs()) default_server_announce |= SV_TYPE_DFS_SERVER; + + /* TODO: only announce us as print server when we are a print server */ + default_server_announce |= SV_TYPE_PRINTQ_SERVER; } /*********************************************************** -- cgit From a47cb58c2f6d34dd98e3dc2dd023a259ff501643 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 3 Apr 2005 04:32:37 +0000 Subject: r6184: the beginnings of the libcli/dgram/ library, and the dgram server. Currently just listens on port 138 and parses the packets (using IDL like the rest of NBT). This allows me to develop the structures and test with real packets (This used to be commit 10d64a525349ff96695ad961a3cfeb5bc7c8844f) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 33026dd9e0..29da770d47 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -236,6 +236,7 @@ typedef struct int iLockSpinCount; int iLockSpinTime; int nbt_port; + int dgram_port; char *socket_options; BOOL bDNSproxy; BOOL bWINSsupport; @@ -617,6 +618,7 @@ static struct parm_struct parm_table[] = { {"smb ports", P_LIST, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"nbt port", P_INTEGER, P_GLOBAL, &Globals.nbt_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"dgram port", P_INTEGER, P_GLOBAL, &Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, {"min protocol", P_ENUM, P_GLOBAL, &Globals.minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -1051,6 +1053,7 @@ static void init_globals(void) do_parameter("smb ports", SMB_PORTS); do_parameter("nbt port", "137"); + do_parameter("dgram port", "138"); do_parameter("nt status support", "True"); @@ -1152,6 +1155,7 @@ static const char *lp_string(const char *s) FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) +FN_GLOBAL_INTEGER(lp_dgram_port, &Globals.dgram_port) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) -- cgit From 320eeed1ef1dfc90e366ba6f8a5d8d66ea8771b2 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 5 May 2005 11:14:43 +0000 Subject: r6619: realm should not be forced uppercase (This used to be commit 93e70717c7cb6aa591d3d83a70e5df03822fa17c) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 29da770d47..f436d8fd0b 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -544,7 +544,7 @@ static struct parm_struct parm_table[] = { {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_HIDE}, {"workgroup", P_USTRING, P_GLOBAL, &Globals.szWorkgroup, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"realm", P_USTRING, P_GLOBAL, &Globals.szRealm, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"realm", P_STRING, P_GLOBAL, &Globals.szRealm, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"ADS server", P_STRING, P_GLOBAL, &Globals.szADSserver, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"netbios name", P_USTRING, P_GLOBAL, &Globals.szNetbiosName, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"netbios aliases", P_LIST, P_GLOBAL, &Globals.szNetbiosAliases, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, -- cgit From a8c26fa4ace4dbb2e514669560143d68879a99bf Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 11 May 2005 04:48:30 +0000 Subject: r6724: added "cldap port" smb.conf parameter (This used to be commit 04af0e7c5de467a24b965ce1de2fb07621133164) --- source4/param/loadparm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index f436d8fd0b..15dd070c00 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -237,6 +237,7 @@ typedef struct int iLockSpinTime; int nbt_port; int dgram_port; + int cldap_port; char *socket_options; BOOL bDNSproxy; BOOL bWINSsupport; @@ -619,6 +620,7 @@ static struct parm_struct parm_table[] = { {"smb ports", P_LIST, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"nbt port", P_INTEGER, P_GLOBAL, &Globals.nbt_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"dgram port", P_INTEGER, P_GLOBAL, &Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"cldap port", P_INTEGER, P_GLOBAL, &Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, {"min protocol", P_ENUM, P_GLOBAL, &Globals.minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -936,7 +938,7 @@ static void init_globals(void) do_parameter("max connections", "-1"); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup"); - do_parameter("server services", "smb rpc nbt"); + do_parameter("server services", "smb rpc nbt cldap"); do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); do_parameter("private dir", dyn_PRIVATE_DIR); @@ -1054,6 +1056,7 @@ static void init_globals(void) do_parameter("smb ports", SMB_PORTS); do_parameter("nbt port", "137"); do_parameter("dgram port", "138"); + do_parameter("cldap port", "389"); do_parameter("nt status support", "True"); @@ -1156,6 +1159,7 @@ static const char *lp_string(const char *s) FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) FN_GLOBAL_INTEGER(lp_dgram_port, &Globals.dgram_port) +FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) -- cgit From 7c8284fefc40a89b7979a7a07bb4ec2c45a02d98 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 19 May 2005 11:23:31 +0000 Subject: r6902: Turn the LDAP server on by default. It is no worse than the others... (no ACL support) Andrew Bartlett (This used to be commit 9f895f6482e45dd975baea7114748b65dbe6e688) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 15dd070c00..649c28098c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -938,7 +938,7 @@ static void init_globals(void) do_parameter("max connections", "-1"); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup"); - do_parameter("server services", "smb rpc nbt cldap"); + do_parameter("server services", "smb rpc nbt ldap cldap"); do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); do_parameter("private dir", dyn_PRIVATE_DIR); -- cgit From d70912a26af49db468af7ec88e9689b8176e0576 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 26 May 2005 01:06:32 +0000 Subject: r6981: first version of the builtin web server for Samba4 This includes an embedded server side scripting system called 'esp' (see http://www.appwebserver.org/products/esp/esp.html) and javascript based scripting language called 'esj' (see http://www.appwebserver.org/products/ejs/ejs.html) The justification for including this scripting language is that it should make it much easier to write a high quality web interface for Samba4. The scripting language can call into any Samba4 library code (so for example it will be able to make ldb and loadparm calls), plus it provides easy support for forms, cookies, sessions etc. There is still quite a bit more work to do on the web server, but there is enough here now for people to look at and comment. I will be committing some sample web pages that test esp functionality shortly. (This used to be commit 26f0ba92c0c565ac9e4cb5a079d795d4262497dd) --- source4/param/loadparm.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 649c28098c..956c42881b 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -211,6 +211,7 @@ typedef struct BOOL bWinbindUseDefaultDomain; char *szIDMapBackend; char *szGuestaccount; + char *swat_directory; int max_mux; int max_xmit; int pwordlevel; @@ -238,6 +239,7 @@ typedef struct int nbt_port; int dgram_port; int cldap_port; + int swat_port; char *socket_options; BOOL bDNSproxy; BOOL bWINSsupport; @@ -621,6 +623,8 @@ static struct parm_struct parm_table[] = { {"nbt port", P_INTEGER, P_GLOBAL, &Globals.nbt_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"dgram port", P_INTEGER, P_GLOBAL, &Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"cldap port", P_INTEGER, P_GLOBAL, &Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"swat port", P_INTEGER, P_GLOBAL, &Globals.swat_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"swat directory", P_STRING, P_GLOBAL, &Globals.swat_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, {"min protocol", P_ENUM, P_GLOBAL, &Globals.minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -938,7 +942,7 @@ static void init_globals(void) do_parameter("max connections", "-1"); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup"); - do_parameter("server services", "smb rpc nbt ldap cldap"); + do_parameter("server services", "smb rpc nbt ldap cldap web"); do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); do_parameter("private dir", dyn_PRIVATE_DIR); @@ -1057,6 +1061,8 @@ static void init_globals(void) do_parameter("nbt port", "137"); do_parameter("dgram port", "138"); do_parameter("cldap port", "389"); + do_parameter("swat port", "901"); + do_parameter_var("swat directory", "%s%s", dyn_LIBDIR, "/swat"); do_parameter("nt status support", "True"); @@ -1160,7 +1166,9 @@ FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) FN_GLOBAL_INTEGER(lp_dgram_port, &Globals.dgram_port) FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) +FN_GLOBAL_INTEGER(lp_swat_port, &Globals.swat_port) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) +FN_GLOBAL_STRING(lp_swat_directory, &Globals.swat_directory) FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) -- cgit From 7e582319528b674d5f7603409e357138194a0ab1 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 26 May 2005 02:06:33 +0000 Subject: r6982: install the swat pages with 'make installswat' (This used to be commit 31543e1eae03d22343ea8c970494af36eb07b41f) --- source4/param/loadparm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 956c42881b..4b55db8aab 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -239,7 +239,7 @@ typedef struct int nbt_port; int dgram_port; int cldap_port; - int swat_port; + int web_port; char *socket_options; BOOL bDNSproxy; BOOL bWINSsupport; @@ -623,7 +623,7 @@ static struct parm_struct parm_table[] = { {"nbt port", P_INTEGER, P_GLOBAL, &Globals.nbt_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"dgram port", P_INTEGER, P_GLOBAL, &Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"cldap port", P_INTEGER, P_GLOBAL, &Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"swat port", P_INTEGER, P_GLOBAL, &Globals.swat_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"web port", P_INTEGER, P_GLOBAL, &Globals.web_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"swat directory", P_STRING, P_GLOBAL, &Globals.swat_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -1061,8 +1061,8 @@ static void init_globals(void) do_parameter("nbt port", "137"); do_parameter("dgram port", "138"); do_parameter("cldap port", "389"); - do_parameter("swat port", "901"); - do_parameter_var("swat directory", "%s%s", dyn_LIBDIR, "/swat"); + do_parameter("web port", "901"); + do_parameter("swat directory", dyn_SWATDIR); do_parameter("nt status support", "True"); @@ -1166,7 +1166,7 @@ FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) FN_GLOBAL_INTEGER(lp_dgram_port, &Globals.dgram_port) FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) -FN_GLOBAL_INTEGER(lp_swat_port, &Globals.swat_port) +FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) FN_GLOBAL_STRING(lp_swat_directory, &Globals.swat_directory) FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) -- cgit From 1511cde44ccc94b71b8eb317deb73c103dcd8010 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 27 May 2005 03:58:12 +0000 Subject: r7002: added support for getting at loadparm config parameters via lpGet() in esp scripts lpGet takes 4 forms v = lpGet("type:parm"); gets a parametric variable v = lpGet("share", "type:parm"); gets a parametric variable on a share v = lpGet("parm"); gets a global variable v = lpGet("share", "parm"); gets a share variable in all cases a ejs object of the appropriate type for the variable is returned. This commit also adds the function typeof() which returns the type of an object (This used to be commit 5537a0d38d4805cbc2dad0d6f76db15173b1fd60) --- source4/param/loadparm.c | 169 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 116 insertions(+), 53 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 4b55db8aab..ceb73e9958 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -63,6 +63,7 @@ #include "librpc/gen_ndr/ndr_samr.h" #include "librpc/gen_ndr/ndr_nbt.h" #include "dlinklist.h" +#include "web_server/esp/esp.h" BOOL in_client = False; /* Not in the client by default */ static BOOL bLoaded = False; @@ -105,8 +106,7 @@ static BOOL defaults_saved = False; /* the following are used by loadparm for option lists */ typedef enum { - P_BOOL,P_BOOLREV,P_CHAR,P_INTEGER,P_OCTAL,P_LIST, - P_STRING,P_USTRING,P_ENUM,P_SEP + P_BOOL,P_INTEGER,P_LIST,P_STRING,P_USTRING,P_ENUM,P_SEP } parm_type; typedef enum @@ -1853,20 +1853,14 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL switch (parm_table[i].type) { case P_BOOL: - case P_BOOLREV: *(BOOL *)dest_ptr = *(BOOL *)src_ptr; break; case P_INTEGER: case P_ENUM: - case P_OCTAL: *(int *)dest_ptr = *(int *)src_ptr; break; - case P_CHAR: - *(char *)dest_ptr = *(char *)src_ptr; - break; - case P_STRING: string_set(dest_ptr, *(char **)src_ptr); @@ -2374,23 +2368,10 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue set_boolean(parm_ptr, pszParmValue); break; - case P_BOOLREV: - set_boolean(parm_ptr, pszParmValue); - *(BOOL *)parm_ptr = !*(BOOL *)parm_ptr; - break; - case P_INTEGER: *(int *)parm_ptr = atoi(pszParmValue); break; - case P_CHAR: - *(char *)parm_ptr = *pszParmValue; - break; - - case P_OCTAL: - sscanf(pszParmValue, "%o", (int *)parm_ptr); - break; - case P_LIST: *(const char ***)parm_ptr = str_list_make(talloc_autofree_context(), pszParmValue, NULL); @@ -2557,26 +2538,10 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) fprintf(f, "%s", BOOLSTR(*(BOOL *)ptr)); break; - case P_BOOLREV: - fprintf(f, "%s", BOOLSTR(!*(BOOL *)ptr)); - break; - case P_INTEGER: fprintf(f, "%d", *(int *)ptr); break; - case P_CHAR: - fprintf(f, "%c", *(char *)ptr); - break; - - case P_OCTAL: - if (*(int *)ptr == -1) { - fprintf(f, "-1"); - } else { - fprintf(f, "0%o", *(int *)ptr); - } - break; - case P_LIST: if ((char ***)ptr && *(char ***)ptr) { char **list = *(char ***)ptr; @@ -2606,17 +2571,12 @@ static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) { switch (type) { case P_BOOL: - case P_BOOLREV: return (*((BOOL *)ptr1) == *((BOOL *)ptr2)); case P_INTEGER: case P_ENUM: - case P_OCTAL: return (*((int *)ptr1) == *((int *)ptr2)); - case P_CHAR: - return (*((char *)ptr1) == *((char *)ptr2)); - case P_LIST: return str_list_equal((const char **)(*(char ***)ptr1), (const char **)(*(char ***)ptr2)); @@ -2702,14 +2662,9 @@ static BOOL is_default(int i) return strequal(parm_table[i].def.svalue, *(char **)parm_table[i].ptr); case P_BOOL: - case P_BOOLREV: return parm_table[i].def.bvalue == *(BOOL *)parm_table[i].ptr; - case P_CHAR: - return parm_table[i].def.cvalue == - *(char *)parm_table[i].ptr; case P_INTEGER: - case P_OCTAL: case P_ENUM: return parm_table[i].def.ivalue == *(int *)parm_table[i].ptr; @@ -2965,16 +2920,10 @@ static void lp_save_defaults(void) } break; case P_BOOL: - case P_BOOLREV: parm_table[i].def.bvalue = *(BOOL *)parm_table[i].ptr; break; - case P_CHAR: - parm_table[i].def.cvalue = - *(char *)parm_table[i].ptr; - break; case P_INTEGER: - case P_OCTAL: case P_ENUM: parm_table[i].def.ivalue = *(int *)parm_table[i].ptr; @@ -3355,3 +3304,117 @@ int lp_maxprintjobs(int snum) return maxjobs; } + + +/* + allow access to loadparm variables from inside esp scripts in swat + + can be called in 4 ways: + + v = lpGet("type:parm"); gets a parametric variable + v = lpGet("share", "type:parm"); gets a parametric variable on a share + v = lpGet("parm"); gets a global variable + v = lpGet("share", "parm"); gets a share variable + + the returned variable is a ejs object. It is an array object for lists. +*/ +int esp_lpGet(struct EspRequest *ep, int argc, char **argv) +{ + struct parm_struct *parm = NULL; + void *parm_ptr = NULL; + int i; + + if (argc < 1) return -1; + + if (argc == 2) { + /* its a share parameter */ + int parmnum, snum = lp_servicenumber(argv[0]); + if (snum == -1) { + return -1; + } + if (strchr(argv[1], ':')) { + /* its a parametric option on a share */ + const char *type = talloc_strndup(ep, argv[1], strcspn(argv[1], ":")); + const char *option = strchr(argv[1], ':') + 1; + const char *value; + if (type == NULL || option == NULL) return -1; + value = get_parametrics(snum, type, option); + if (value == NULL) return -1; + espSetReturnString(ep, value); + return 0; + } + + /* find a share parameter */ + parmnum = map_parameter(argv[1]); + if (parmnum == -1) { + return -1; + } + parm = &parm_table[parmnum]; + if (parm->class == P_GLOBAL) { + return -1; + } + parm_ptr = ((char *)ServicePtrs[snum]) + PTR_DIFF(parm->ptr, &sDefault); + } else if (strchr(argv[0], ':')) { + /* its a global parametric option */ + const char *type = talloc_strndup(ep, argv[0], strcspn(argv[0], ":")); + const char *option = strchr(argv[0], ':') + 1; + const char *value; + if (type == NULL || option == NULL) return -1; + value = get_parametrics(-1, type, option); + if (value == NULL) return -1; + espSetReturnString(ep, value); + return 0; + } else { + /* its a global parameter */ + int parmnum = map_parameter(argv[0]); + if (parmnum == -1) { + return -1; + } + parm = &parm_table[parmnum]; + parm_ptr = parm->ptr; + } + + if (parm == NULL || parm_ptr == NULL) { + return -1; + } + + /* construct and return the right type of ejs object */ + switch (parm->type) { + case P_STRING: + case P_USTRING: + espSetReturnString(ep, *(char **)parm_ptr); + break; + case P_BOOL: + espSetReturn(ep, mprCreateBoolVar(*(BOOL *)parm_ptr)); + break; + case P_INTEGER: + espSetReturn(ep, mprCreateIntegerVar(*(int *)parm_ptr)); + break; + case P_ENUM: + for (i=0; parm->enum_list[i].name; i++) { + if (*(int *)parm_ptr == parm->enum_list[i].value) { + espSetReturnString(ep, parm->enum_list[i].name); + return 0; + } + } + return -1; + + case P_LIST: { + const char **list = *(const char ***)parm_ptr; + struct MprVar var; + var = mprCreateObjVar(parm->label, 10); + for (i=0;list[i];i++) { + char idx[16]; + struct MprVar val; + mprItoa(i, idx, sizeof(idx)); + val = mprCreateStringVar(list[i], 1); + mprCreateProperty(&var, idx, &val); + } + espSetReturn(ep, var); + break; + case P_SEP: + return -1; + } + } + return 0; +} -- cgit From ab78cc9dcaff48fd314a80d24907abb64990ffd7 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 27 May 2005 07:14:01 +0000 Subject: r7008: - split out the loadparm type definitions so loadparm internals can be accessed externally - moved esp_lpGet() to web_server/calls.c - attempt to fixup ejs build with includes.h again (This used to be commit 592a81c347981420154ddf3b8d4252d3bb08bc86) --- source4/param/loadparm.c | 183 ++++++++--------------------------------------- 1 file changed, 29 insertions(+), 154 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index ceb73e9958..af9c30d80e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -63,7 +63,7 @@ #include "librpc/gen_ndr/ndr_samr.h" #include "librpc/gen_ndr/ndr_nbt.h" #include "dlinklist.h" -#include "web_server/esp/esp.h" +#include "param/loadparm.h" BOOL in_client = False; /* Not in the client by default */ static BOOL bLoaded = False; @@ -103,39 +103,6 @@ static BOOL defaults_saved = False; #define FLAG_CMDLINE 0x8000 /* this option was set from the command line */ -/* the following are used by loadparm for option lists */ -typedef enum -{ - P_BOOL,P_INTEGER,P_LIST,P_STRING,P_USTRING,P_ENUM,P_SEP -} parm_type; - -typedef enum -{ - P_LOCAL,P_GLOBAL,P_SEPARATOR,P_NONE -} parm_class; - -struct enum_list { - int value; - const char *name; -}; - -struct parm_struct -{ - const char *label; - parm_type type; - parm_class class; - void *ptr; - BOOL (*special)(const char *, char **); - const struct enum_list *enum_list; - uint_t flags; - union { - BOOL bvalue; - int ivalue; - char *svalue; - char cvalue; - const char **lvalue; - } def; -}; struct param_opt { @@ -1347,7 +1314,7 @@ static void init_copymap(service * pservice); /* This is a helper function for parametrical options support. */ /* It returns a pointer to parametrical option value if it exists or NULL otherwise */ /* Actual parametrical functions are quite simple */ -static const char *get_parametrics(int lookup_service, const char *type, const char *option) +const char *lp_get_parametric(int lookup_service, const char *type, const char *option) { char *vfskey; struct param_opt *data; @@ -1442,7 +1409,7 @@ static BOOL lp_bool(const char *s) const char *lp_parm_string(int lookup_service, const char *type, const char *option) { - const char *value = get_parametrics(lookup_service, type, option); + const char *value = lp_get_parametric(lookup_service, type, option); if (value) return lp_string(value); @@ -1457,7 +1424,7 @@ const char *lp_parm_string(int lookup_service, const char *type, const char *opt const char **lp_parm_string_list(int lookup_service, const char *type, const char *option, const char *separator) { - const char *value = get_parametrics(lookup_service, type, option); + const char *value = lp_get_parametric(lookup_service, type, option); if (value) return str_list_make(talloc_autofree_context(), value, separator); @@ -1470,7 +1437,7 @@ const char **lp_parm_string_list(int lookup_service, const char *type, const cha int lp_parm_int(int lookup_service, const char *type, const char *option, int default_v) { - const char *value = get_parametrics(lookup_service, type, option); + const char *value = lp_get_parametric(lookup_service, type, option); if (value) return lp_int(value); @@ -1483,7 +1450,7 @@ int lp_parm_int(int lookup_service, const char *type, const char *option, int de unsigned long lp_parm_ulong(int lookup_service, const char *type, const char *option, unsigned long default_v) { - const char *value = get_parametrics(lookup_service, type, option); + const char *value = lp_get_parametric(lookup_service, type, option); if (value) return lp_ulong(value); @@ -1496,7 +1463,7 @@ unsigned long lp_parm_ulong(int lookup_service, const char *type, const char *op BOOL lp_parm_bool(int lookup_service, const char *type, const char *option, BOOL default_v) { - const char *value = get_parametrics(lookup_service, type, option); + const char *value = lp_get_parametric(lookup_service, type, option); if (value) return lp_bool(value); @@ -1781,6 +1748,28 @@ static int map_parameter(const char *pszParmName) return (-1); } + +/* + return the parameter structure for a parameter +*/ +struct parm_struct *lp_parm_struct(const char *name) +{ + int parmnum = map_parameter(name); + if (parmnum == -1) return NULL; + return &parm_table[parmnum]; +} + +/* + return the parameter pointer for a parameter +*/ +void *lp_parm_ptr(int snum, struct parm_struct *parm) +{ + if (snum == -1) { + return parm->ptr; + } + return ((char *)ServicePtrs[snum]) + PTR_DIFF(parm->ptr, &sDefault); +} + /*************************************************************************** Set a boolean variable from the text value stored in the passed string. Returns True in success, False if the passed string does not correctly @@ -3304,117 +3293,3 @@ int lp_maxprintjobs(int snum) return maxjobs; } - - -/* - allow access to loadparm variables from inside esp scripts in swat - - can be called in 4 ways: - - v = lpGet("type:parm"); gets a parametric variable - v = lpGet("share", "type:parm"); gets a parametric variable on a share - v = lpGet("parm"); gets a global variable - v = lpGet("share", "parm"); gets a share variable - - the returned variable is a ejs object. It is an array object for lists. -*/ -int esp_lpGet(struct EspRequest *ep, int argc, char **argv) -{ - struct parm_struct *parm = NULL; - void *parm_ptr = NULL; - int i; - - if (argc < 1) return -1; - - if (argc == 2) { - /* its a share parameter */ - int parmnum, snum = lp_servicenumber(argv[0]); - if (snum == -1) { - return -1; - } - if (strchr(argv[1], ':')) { - /* its a parametric option on a share */ - const char *type = talloc_strndup(ep, argv[1], strcspn(argv[1], ":")); - const char *option = strchr(argv[1], ':') + 1; - const char *value; - if (type == NULL || option == NULL) return -1; - value = get_parametrics(snum, type, option); - if (value == NULL) return -1; - espSetReturnString(ep, value); - return 0; - } - - /* find a share parameter */ - parmnum = map_parameter(argv[1]); - if (parmnum == -1) { - return -1; - } - parm = &parm_table[parmnum]; - if (parm->class == P_GLOBAL) { - return -1; - } - parm_ptr = ((char *)ServicePtrs[snum]) + PTR_DIFF(parm->ptr, &sDefault); - } else if (strchr(argv[0], ':')) { - /* its a global parametric option */ - const char *type = talloc_strndup(ep, argv[0], strcspn(argv[0], ":")); - const char *option = strchr(argv[0], ':') + 1; - const char *value; - if (type == NULL || option == NULL) return -1; - value = get_parametrics(-1, type, option); - if (value == NULL) return -1; - espSetReturnString(ep, value); - return 0; - } else { - /* its a global parameter */ - int parmnum = map_parameter(argv[0]); - if (parmnum == -1) { - return -1; - } - parm = &parm_table[parmnum]; - parm_ptr = parm->ptr; - } - - if (parm == NULL || parm_ptr == NULL) { - return -1; - } - - /* construct and return the right type of ejs object */ - switch (parm->type) { - case P_STRING: - case P_USTRING: - espSetReturnString(ep, *(char **)parm_ptr); - break; - case P_BOOL: - espSetReturn(ep, mprCreateBoolVar(*(BOOL *)parm_ptr)); - break; - case P_INTEGER: - espSetReturn(ep, mprCreateIntegerVar(*(int *)parm_ptr)); - break; - case P_ENUM: - for (i=0; parm->enum_list[i].name; i++) { - if (*(int *)parm_ptr == parm->enum_list[i].value) { - espSetReturnString(ep, parm->enum_list[i].name); - return 0; - } - } - return -1; - - case P_LIST: { - const char **list = *(const char ***)parm_ptr; - struct MprVar var; - var = mprCreateObjVar(parm->label, 10); - for (i=0;list[i];i++) { - char idx[16]; - struct MprVar val; - mprItoa(i, idx, sizeof(idx)); - val = mprCreateStringVar(list[i], 1); - mprCreateProperty(&var, idx, &val); - } - espSetReturn(ep, var); - break; - case P_SEP: - return -1; - } - } - return 0; -} -- cgit From 631f9782a6f499b14aad035f1eee5b2aab18878c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 27 May 2005 11:55:30 +0000 Subject: r7012: added smb.conf parameters web tls keyfile web tls certfile web tls cafile web tls crlfile (This used to be commit abfa3e9179557cf1853f490a479a0003ce4e11f7) --- source4/param/loadparm.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index af9c30d80e..ab9dbdf47f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -179,6 +179,10 @@ typedef struct char *szIDMapBackend; char *szGuestaccount; char *swat_directory; + char *web_keyfile; + char *web_certfile; + char *web_cafile; + char *web_crlfile; int max_mux; int max_xmit; int pwordlevel; @@ -591,6 +595,10 @@ static struct parm_struct parm_table[] = { {"dgram port", P_INTEGER, P_GLOBAL, &Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"cldap port", P_INTEGER, P_GLOBAL, &Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"web port", P_INTEGER, P_GLOBAL, &Globals.web_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"web tls keyfile", P_STRING, P_GLOBAL, &Globals.web_keyfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"web tls certfile", P_STRING, P_GLOBAL, &Globals.web_certfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"web tls cafile", P_STRING, P_GLOBAL, &Globals.web_cafile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"web tls crlfile", P_STRING, P_GLOBAL, &Globals.web_crlfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"swat directory", P_STRING, P_GLOBAL, &Globals.swat_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -1035,6 +1043,10 @@ static void init_globals(void) do_parameter("max wins ttl", "432000"); do_parameter("min wins ttl", "10"); + + do_parameter_var("web tls keyfile", "%s/tls/key.pem", dyn_PRIVATE_DIR); + do_parameter_var("web tls certfile", "%s/tls/cert.pem", dyn_PRIVATE_DIR); + do_parameter_var("web tls cafile", "%s/tls/ca.pem", dyn_PRIVATE_DIR); } static TALLOC_CTX *lp_talloc; @@ -1136,6 +1148,10 @@ FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) FN_GLOBAL_STRING(lp_swat_directory, &Globals.swat_directory) +FN_GLOBAL_STRING(lp_web_keyfile, &Globals.web_keyfile) +FN_GLOBAL_STRING(lp_web_certfile, &Globals.web_certfile) +FN_GLOBAL_STRING(lp_web_cafile, &Globals.web_cafile) +FN_GLOBAL_STRING(lp_web_crlfile, &Globals.web_crlfile) FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) -- cgit From f466b722224d15a9674e04eca1175975d73e7d7a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 27 May 2005 12:23:52 +0000 Subject: r7016: - added smb.conf parm 'web tls = true/false' - by default enable tls if the certfile is set in smb.conf and gnutls library was compiled in (This used to be commit bbafdeae3a68c0ff1170b0a4ecc568664ec1a925) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index ab9dbdf47f..10660ffde7 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -179,6 +179,7 @@ typedef struct char *szIDMapBackend; char *szGuestaccount; char *swat_directory; + BOOL web_tls; char *web_keyfile; char *web_certfile; char *web_cafile; @@ -595,6 +596,7 @@ static struct parm_struct parm_table[] = { {"dgram port", P_INTEGER, P_GLOBAL, &Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"cldap port", P_INTEGER, P_GLOBAL, &Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"web port", P_INTEGER, P_GLOBAL, &Globals.web_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"web tls", P_BOOL, P_GLOBAL, &Globals.web_tls, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"web tls keyfile", P_STRING, P_GLOBAL, &Globals.web_keyfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"web tls certfile", P_STRING, P_GLOBAL, &Globals.web_certfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"web tls cafile", P_STRING, P_GLOBAL, &Globals.web_cafile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -1044,6 +1046,7 @@ static void init_globals(void) do_parameter("max wins ttl", "432000"); do_parameter("min wins ttl", "10"); + do_parameter("web tls", "True"); do_parameter_var("web tls keyfile", "%s/tls/key.pem", dyn_PRIVATE_DIR); do_parameter_var("web tls certfile", "%s/tls/cert.pem", dyn_PRIVATE_DIR); do_parameter_var("web tls cafile", "%s/tls/ca.pem", dyn_PRIVATE_DIR); @@ -1148,6 +1151,7 @@ FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) FN_GLOBAL_STRING(lp_swat_directory, &Globals.swat_directory) +FN_GLOBAL_BOOL(lp_web_tls, &Globals.web_tls) FN_GLOBAL_STRING(lp_web_keyfile, &Globals.web_keyfile) FN_GLOBAL_STRING(lp_web_certfile, &Globals.web_certfile) FN_GLOBAL_STRING(lp_web_cafile, &Globals.web_cafile) -- cgit From 51fc6842277edf25486a48a5318e3570c256ea4e Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 3 Jun 2005 11:23:15 +0000 Subject: r7221: Add the start of a KDC service (to be built on a 'libkdc' from a to be included Heimdal) to Samba4. Andrew Bartlett (This used to be commit 51ba3ea60c265b837821b6c3e031dfe229c10d6a) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 10660ffde7..15a054863f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -211,6 +211,7 @@ typedef struct int nbt_port; int dgram_port; int cldap_port; + int krb5_port; int web_port; char *socket_options; BOOL bDNSproxy; @@ -595,6 +596,7 @@ static struct parm_struct parm_table[] = { {"nbt port", P_INTEGER, P_GLOBAL, &Globals.nbt_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"dgram port", P_INTEGER, P_GLOBAL, &Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"cldap port", P_INTEGER, P_GLOBAL, &Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"krb5 port", P_INTEGER, P_GLOBAL, &Globals.krb5_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"web port", P_INTEGER, P_GLOBAL, &Globals.web_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"web tls", P_BOOL, P_GLOBAL, &Globals.web_tls, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"web tls keyfile", P_STRING, P_GLOBAL, &Globals.web_keyfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -1038,6 +1040,7 @@ static void init_globals(void) do_parameter("nbt port", "137"); do_parameter("dgram port", "138"); do_parameter("cldap port", "389"); + do_parameter("krb5 port", "88"); do_parameter("web port", "901"); do_parameter("swat directory", dyn_SWATDIR); @@ -1148,6 +1151,7 @@ FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) FN_GLOBAL_INTEGER(lp_dgram_port, &Globals.dgram_port) FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) +FN_GLOBAL_INTEGER(lp_krb5_port, &Globals.krb5_port) FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) FN_GLOBAL_STRING(lp_swat_directory, &Globals.swat_directory) -- cgit From 00e2b7c1b49b128488cf977b40b086b935fb605a Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 13 Jun 2005 10:01:11 +0000 Subject: r7530: Simply calling convention of lp_load(). This always loads all the services, as we now don't have an easy way to split out smbd. Andrew Bartlett (This used to be commit 990e061939c76b559c4f5914c5fc6ca1b13e19dd) --- source4/param/loadparm.c | 65 ++++++------------------------------------------ 1 file changed, 7 insertions(+), 58 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 15a054863f..a546d51438 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -381,7 +381,6 @@ static service **ServicePtrs = NULL; static int iNumServices = 0; static int iServiceIndex = 0; static BOOL bInGlobalSection = True; -static BOOL bGlobalOnly = False; static int server_role; static int default_server_announce; @@ -2429,7 +2428,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue static BOOL do_parameter(const char *pszParmName, const char *pszParmValue) { - if (!bInGlobalSection && bGlobalOnly) + if (!bInGlobalSection) return (True); return (lp_do_parameter(bInGlobalSection ? -2 : iServiceIndex, @@ -2632,7 +2631,7 @@ static BOOL do_section(const char *pszSectionName) return (True); } - if (!bInGlobalSection && bGlobalOnly) + if (!bInGlobalSection) return (True); /* if we have a current service, tidy it up before moving on */ @@ -2907,47 +2906,6 @@ void lp_killservice(int iServiceIn) } } -/*************************************************************************** - Save the curent values of all global and sDefault parameters into the - defaults union. This allows swat and testparm to show only the - changed (ie. non-default) parameters. -***************************************************************************/ - -static void lp_save_defaults(void) -{ - int i; - for (i = 0; parm_table[i].label; i++) { - if (i > 0 && parm_table[i].ptr == parm_table[i - 1].ptr) - continue; - switch (parm_table[i].type) { - case P_LIST: - parm_table[i].def.lvalue = str_list_copy(talloc_autofree_context(), - *(const char ***)parm_table[i].ptr); - break; - case P_STRING: - case P_USTRING: - if (parm_table[i].ptr) { - parm_table[i].def.svalue = strdup(*(char **)parm_table[i].ptr); - } else { - parm_table[i].def.svalue = NULL; - } - break; - case P_BOOL: - parm_table[i].def.bvalue = - *(BOOL *)parm_table[i].ptr; - break; - case P_INTEGER: - case P_ENUM: - parm_table[i].def.ivalue = - *(int *)parm_table[i].ptr; - break; - case P_SEP: - break; - } - } - defaults_saved = True; -} - /******************************************************************* Set the server type we will announce as via nmbd. ********************************************************************/ @@ -3010,8 +2968,7 @@ static void set_server_role(void) False on failure. ***************************************************************************/ -BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, - BOOL add_ipc) +BOOL lp_load(const char *pszFname) { pstring n2; BOOL bRetval; @@ -3027,7 +2984,6 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, DEBUG(2, ("lp_load: refreshing parameters from %s\n", pszFname)); bInGlobalSection = True; - bGlobalOnly = global_only; if (Globals.param_opt != NULL) { struct param_opt *next; @@ -3043,11 +2999,6 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, init_globals(); - if (save_defaults) - { - lp_save_defaults(); - } - /* We get sections first, so have to start 'behind' to make up */ iServiceIndex = -1; bRetval = pm_process(n2, do_section, do_parameter); @@ -3060,12 +3011,10 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults, lp_add_auto_services(lp_auto_services()); - if (add_ipc) { - /* When 'restrict anonymous = 2' guest connections to ipc$ - are denied */ - lp_add_hidden("IPC$", "IPC", (lp_restrict_anonymous() < 2)); - lp_add_hidden("ADMIN$", "DISK", False); - } + /* When 'restrict anonymous = 2' guest connections to ipc$ + are denied */ + lp_add_hidden("IPC$", "IPC", (lp_restrict_anonymous() < 2)); + lp_add_hidden("ADMIN$", "DISK", False); set_server_role(); set_default_server_announce_type(); -- cgit From e76397739d472ab699a8faf7c0d9e09aad8a29ed Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 13 Jun 2005 10:54:18 +0000 Subject: r7531: Finally fix lp_load(). I had left hooks in place which restricted us to globals only (no shares). Andrew Bartlett (This used to be commit 9e6112eee37927cd4deaa078ea09813e07c7c386) --- source4/param/loadparm.c | 6 ------ 1 file changed, 6 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index a546d51438..deb7d2284f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2428,9 +2428,6 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue static BOOL do_parameter(const char *pszParmName, const char *pszParmValue) { - if (!bInGlobalSection) - return (True); - return (lp_do_parameter(bInGlobalSection ? -2 : iServiceIndex, pszParmName, pszParmValue)); } @@ -2631,9 +2628,6 @@ static BOOL do_section(const char *pszSectionName) return (True); } - if (!bInGlobalSection) - return (True); - /* if we have a current service, tidy it up before moving on */ bRetval = True; -- cgit From 8f85427d6d8fa7e6bfd76ed5335c8dbe7dd14afe Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 16 Jun 2005 17:27:57 +0000 Subject: r7643: This patch adds a new NTPTR subsystem: - this is an abstraction layer for print services, like out NTVFS subsystem for file services - all protocol specific details are still in rpc_server/spoolss/ - like the stupid in and out Buffer handling - checking of the r->in.server_name - ... - this subsystem can have multiple implementation selected by the "ntptr providor" global-section parameter - I currently added a "simple_ldb" backend, that stores Printers, Forms, Ports, Monitors, ... in the spoolss.db, and does no real printing this backend is basicly for testing, how the spoolss protocol works - the interface is just a prototype and will be changed a bit the next days or weeks, till the simple_ldb backend can handle all calls that are used by normal w2k3/xp clients - I'll also make the api async, as the ntvfs api this will make things like the RemoteFindFirstPrinterChangeNotifyEx(), that opens a connection back to the client, easier to implement, as we should not block the whole smbd for that - the idea is to later implement a "unix" backend that works like the current samba3 code - and maybe some embedded print server vendors can write there own backend that can directly talk to a printer without having cups or something like this - the default settings are (it currently makes no sense to change them :-): ntptr providor = simple_ldb spoolss database = $private_dir/spoolss.db metze (This used to be commit 455b5536d41bc31ebef8290812f45d4a38afa8e9) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index deb7d2284f..92e98dcf7d 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -167,6 +167,7 @@ typedef struct char *szWINSPartners; char **dcerpc_ep_servers; char **server_services; + char *ntptr_providor; char *szWinbindUID; char *szWinbindGID; char *szNonUnixAccountRange; @@ -528,6 +529,7 @@ static struct parm_struct parm_table[] = { {"interfaces", P_LIST, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"ntvfs handler", P_LIST, P_LOCAL, &sDefault.ntvfs_handler, NULL, NULL, FLAG_ADVANCED}, + {"ntptr providor", P_STRING, P_GLOBAL, &Globals.ntptr_providor, NULL, NULL, FLAG_ADVANCED}, {"dcerpc endpoint servers", P_LIST, P_GLOBAL, &Globals.dcerpc_ep_servers, NULL, NULL, FLAG_ADVANCED}, {"server services", P_LIST, P_GLOBAL, &Globals.server_services, NULL, NULL, FLAG_ADVANCED}, @@ -921,6 +923,7 @@ static void init_globals(void) do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup"); do_parameter("server services", "smb rpc nbt ldap cldap web"); + do_parameter("ntptr providor", "simple_ldb"); do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); do_parameter("private dir", dyn_PRIVATE_DIR); @@ -1175,6 +1178,7 @@ FN_GLOBAL_STRING(lp_ncalrpc_dir, &Globals.ncalrpc_dir) FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) FN_GLOBAL_LIST(lp_server_services, &Globals.server_services) +FN_GLOBAL_STRING(lp_ntptr_providor, &Globals.ntptr_providor) FN_GLOBAL_STRING(lp_rootdir, &Globals.szRootdir) FN_GLOBAL_STRING(lp_defaultservice, &Globals.szDefaultService) FN_GLOBAL_STRING(lp_hosts_equiv, &Globals.szHostsEquiv) -- cgit From 822498b7f536e4c4e552c524b14d6cb691ec5b62 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 19 Jun 2005 04:21:45 +0000 Subject: r7744: converted the web server to use the lib/tls/ generic tls code (This used to be commit 023fc567badba38b87895ea73515b2ce0b703a8c) --- source4/param/loadparm.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 92e98dcf7d..26466797ad 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -180,11 +180,11 @@ typedef struct char *szIDMapBackend; char *szGuestaccount; char *swat_directory; - BOOL web_tls; - char *web_keyfile; - char *web_certfile; - char *web_cafile; - char *web_crlfile; + BOOL tls_enabled; + char *tls_keyfile; + char *tls_certfile; + char *tls_cafile; + char *tls_crlfile; int max_mux; int max_xmit; int pwordlevel; @@ -599,11 +599,11 @@ static struct parm_struct parm_table[] = { {"cldap port", P_INTEGER, P_GLOBAL, &Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"krb5 port", P_INTEGER, P_GLOBAL, &Globals.krb5_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"web port", P_INTEGER, P_GLOBAL, &Globals.web_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"web tls", P_BOOL, P_GLOBAL, &Globals.web_tls, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"web tls keyfile", P_STRING, P_GLOBAL, &Globals.web_keyfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"web tls certfile", P_STRING, P_GLOBAL, &Globals.web_certfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"web tls cafile", P_STRING, P_GLOBAL, &Globals.web_cafile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"web tls crlfile", P_STRING, P_GLOBAL, &Globals.web_crlfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls enabled", P_BOOL, P_GLOBAL, &Globals.tls_enabled, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls keyfile", P_STRING, P_GLOBAL, &Globals.tls_keyfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls certfile", P_STRING, P_GLOBAL, &Globals.tls_certfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls cafile", P_STRING, P_GLOBAL, &Globals.tls_cafile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls crlfile", P_STRING, P_GLOBAL, &Globals.tls_crlfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"swat directory", P_STRING, P_GLOBAL, &Globals.swat_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -1051,10 +1051,10 @@ static void init_globals(void) do_parameter("max wins ttl", "432000"); do_parameter("min wins ttl", "10"); - do_parameter("web tls", "True"); - do_parameter_var("web tls keyfile", "%s/tls/key.pem", dyn_PRIVATE_DIR); - do_parameter_var("web tls certfile", "%s/tls/cert.pem", dyn_PRIVATE_DIR); - do_parameter_var("web tls cafile", "%s/tls/ca.pem", dyn_PRIVATE_DIR); + do_parameter("tls enabled", "True"); + do_parameter_var("tls keyfile", "%s/tls/key.pem", dyn_PRIVATE_DIR); + do_parameter_var("tls certfile", "%s/tls/cert.pem", dyn_PRIVATE_DIR); + do_parameter_var("tls cafile", "%s/tls/ca.pem", dyn_PRIVATE_DIR); } static TALLOC_CTX *lp_talloc; @@ -1157,11 +1157,11 @@ FN_GLOBAL_INTEGER(lp_krb5_port, &Globals.krb5_port) FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) FN_GLOBAL_STRING(lp_swat_directory, &Globals.swat_directory) -FN_GLOBAL_BOOL(lp_web_tls, &Globals.web_tls) -FN_GLOBAL_STRING(lp_web_keyfile, &Globals.web_keyfile) -FN_GLOBAL_STRING(lp_web_certfile, &Globals.web_certfile) -FN_GLOBAL_STRING(lp_web_cafile, &Globals.web_cafile) -FN_GLOBAL_STRING(lp_web_crlfile, &Globals.web_crlfile) +FN_GLOBAL_BOOL(lp_tls_enabled, &Globals.tls_enabled) +FN_GLOBAL_STRING(lp_tls_keyfile, &Globals.tls_keyfile) +FN_GLOBAL_STRING(lp_tls_certfile, &Globals.tls_certfile) +FN_GLOBAL_STRING(lp_tls_cafile, &Globals.tls_cafile) +FN_GLOBAL_STRING(lp_tls_crlfile, &Globals.tls_crlfile) FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) -- cgit From e578c33c2c8bc23a9a78259613f33b65d7d1668f Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sun, 19 Jun 2005 13:26:32 +0000 Subject: r7757: Add NTLMv2 support to the NT1 Session setup (ie, not SPNEGO/NTLMSSP) Session Setup code. Add a mem_ctx argument to a few of the NTLMv2 support functions, and add smb.conf options to control client NTLMv2 behaviour. Andrew Bartlett (This used to be commit 3f35cdb218a3dae08a05e77452ca9f73716ceb28) --- source4/param/loadparm.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 26466797ad..49bb52230e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -235,11 +235,13 @@ typedef struct BOOL bNTSmbSupport; BOOL bNTStatusSupport; BOOL bAllowTrustedDomains; + BOOL bPlaintextAuth; BOOL bLanmanAuth; BOOL bNTLMAuth; BOOL bUseSpnego; int server_signing; int client_signing; + BOOL bClientPlaintextAuth; BOOL bClientLanManAuth; BOOL bClientNTLMv2Auth; BOOL bHostMSDfs; @@ -561,10 +563,12 @@ static struct parm_struct parm_table[] = { {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"username level", P_INTEGER, P_GLOBAL, &Globals.unamelevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"restrict anonymous", P_INTEGER, P_GLOBAL, &Globals.restrict_anonymous, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"plaintext auth", P_BOOL, P_GLOBAL, &Globals.bPlaintextAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"lanman auth", P_BOOL, P_GLOBAL, &Globals.bLanmanAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"ntlm auth", P_BOOL, P_GLOBAL, &Globals.bNTLMAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"client NTLMv2 auth", P_BOOL, P_GLOBAL, &Globals.bClientNTLMv2Auth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"client lanman auth", P_BOOL, P_GLOBAL, &Globals.bClientLanManAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client plaintext auth", P_BOOL, P_GLOBAL, &Globals.bClientPlaintextAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"username", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, {"user", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_HIDE}, @@ -1242,8 +1246,10 @@ FN_GLOBAL_BOOL(lp_unicode, &Globals.bUnicode) FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport) FN_GLOBAL_BOOL(lp_allow_trusted_domains, &Globals.bAllowTrustedDomains) FN_GLOBAL_INTEGER(lp_restrict_anonymous, &Globals.restrict_anonymous) +FN_GLOBAL_BOOL(lp_plaintext_auth, &Globals.bPlaintextAuth) FN_GLOBAL_BOOL(lp_lanman_auth, &Globals.bLanmanAuth) FN_GLOBAL_BOOL(lp_ntlm_auth, &Globals.bNTLMAuth) +FN_GLOBAL_BOOL(lp_client_plaintext_auth, &Globals.bClientPlaintextAuth) FN_GLOBAL_BOOL(lp_client_lanman_auth, &Globals.bClientLanManAuth) FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, &Globals.bClientNTLMv2Auth) FN_GLOBAL_BOOL(lp_host_msdfs, &Globals.bHostMSDfs) -- cgit From 9cc64156c48837944a41e8e9eb2f3283a3859072 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 21 Jun 2005 04:24:49 +0000 Subject: r7793: allow integers in smb.conf to be specified in octal or hex (This used to be commit ce6257b316bc66a3fc554487099976a853d25ddd) --- source4/param/loadparm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 49bb52230e..d59d4efadf 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1398,7 +1398,7 @@ static int lp_int(const char *s) return (-1); } - return atoi(s); + return strtol(s, NULL, 0); } /******************************************************************* @@ -1412,7 +1412,7 @@ static int lp_ulong(const char *s) return (-1); } - return strtoul(s, NULL, 10); + return strtoul(s, NULL, 0); } /******************************************************************* -- cgit From 8c53aba485e7986baacf91b2c99ef7999142aee4 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 26 Jun 2005 00:12:44 +0000 Subject: r7912: make private_path() recognise a non-relative filename, so we can have sam database = sam.ldb and it will know to put it in the private dir, but if you use sam database = ldap://server it knows to use it as-is (This used to be commit c5bccbc366db144d3e1cb7b21f0e3284d841dd06) --- source4/param/loadparm.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index d59d4efadf..80f7709280 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -931,10 +931,10 @@ static void init_globals(void) do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); do_parameter("private dir", dyn_PRIVATE_DIR); - do_parameter_var("sam database", "tdb://%s/sam.ldb", dyn_PRIVATE_DIR); - do_parameter_var("spoolss database", "tdb://%s/spoolss.ldb", dyn_PRIVATE_DIR); - do_parameter_var("wins database", "tdb://%s/wins.ldb", dyn_PRIVATE_DIR); - do_parameter_var("registry:HKEY_LOCAL_MACHINE", "ldb:/%s/hklm.ldb", dyn_PRIVATE_DIR); + do_parameter("sam database", "sam.ldb"); + do_parameter("spoolss database", "spoolss.ldb"); + do_parameter("wins database", "wins.ldb"); + do_parameter("registry:HKEY_LOCAL_MACHINE", "hklm.ldb"); do_parameter("guest account", GUEST_ACCOUNT); /* using UTF8 by default allows us to support all chars */ @@ -1056,9 +1056,9 @@ static void init_globals(void) do_parameter("min wins ttl", "10"); do_parameter("tls enabled", "True"); - do_parameter_var("tls keyfile", "%s/tls/key.pem", dyn_PRIVATE_DIR); - do_parameter_var("tls certfile", "%s/tls/cert.pem", dyn_PRIVATE_DIR); - do_parameter_var("tls cafile", "%s/tls/ca.pem", dyn_PRIVATE_DIR); + do_parameter("tls keyfile", "tls/key.pem"); + do_parameter("tls certfile", "tls/cert.pem"); + do_parameter("tls cafile", "tls/ca.pem"); } static TALLOC_CTX *lp_talloc; -- cgit From 2a90c448bd0c4f05038f0936aa0b3390b275c6dc Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 26 Jun 2005 01:11:12 +0000 Subject: r7916: - got rid of the in_client global - make not finding smb.conf a level 1 message, not level 0. Most of our tools handle no smb.conf, and those that don't should check for the specific parameters they need, or use the defaults (This used to be commit 8c17b61f8e0f6eefa6a1f853abc06d023627bbbb) --- source4/param/loadparm.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 80f7709280..d968157a3a 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -65,7 +65,6 @@ #include "dlinklist.h" #include "param/loadparm.h" -BOOL in_client = False; /* Not in the client by default */ static BOOL bLoaded = False; #ifndef GLOBAL_NAME @@ -3025,9 +3024,7 @@ BOOL lp_load(const char *pszFname) bLoaded = True; - /* Now we check bWINSsupport and set szWINSserver to 127.0.0.1 */ - /* if bWINSsupport is true and we are in the client */ - if (in_client && Globals.bWINSsupport) { + if (Globals.bWINSsupport) { lp_do_parameter(-1, "wins server", "127.0.0.1"); } -- cgit From edb86cf196296c3cb887fd112f680248573d78ad Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 28 Jun 2005 00:51:35 +0000 Subject: r7966: We need a better way to do this, but enable the KDC by default, if we have kerberos. Andrew Bartlett (This used to be commit 3d82b1417b9f2e31089cb8ee7e4f98bd226f2e75) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index d968157a3a..49dbd74a69 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -925,7 +925,11 @@ static void init_globals(void) do_parameter("max connections", "-1"); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup"); +#ifdef WITH_KRB5 + do_parameter("server services", "smb rpc nbt ldap cldap web kdc"); +#else do_parameter("server services", "smb rpc nbt ldap cldap web"); +#endif do_parameter("ntptr providor", "simple_ldb"); do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); -- cgit From b2f132182174d13c8bcb535f62522687675947c2 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 11 Jul 2005 00:13:11 +0000 Subject: r8297: add libinclude() function in ejs, which is like include() but searches a js library path set in "js include" in smb.conf. This will allow us to start building up a library of common js code, while avoiding the problem of hard-coding include paths in scripts (This used to be commit ff60529ba2515df29a20b4a417327a3565ec8ee9) --- source4/param/loadparm.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 49dbd74a69..d6184fd9ae 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -138,6 +138,7 @@ typedef struct char *szSPOOLSS_URL; char *szWINS_URL; char *szPrivateDir; + char **jsInclude; char **szPreloadModules; char **szPasswordServers; char *szSocketOptions; @@ -734,6 +735,7 @@ static struct parm_struct parm_table[] = { {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_HIDE}, {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"js include", P_LIST, P_GLOBAL, &Globals.jsInclude, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"default service", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"default", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_DEVELOPER}, @@ -1062,6 +1064,7 @@ static void init_globals(void) do_parameter("tls keyfile", "tls/key.pem"); do_parameter("tls certfile", "tls/cert.pem"); do_parameter("tls cafile", "tls/ca.pem"); + do_parameter_var("js include", "%s/js", dyn_LIBDIR); } static TALLOC_CTX *lp_talloc; @@ -1284,6 +1287,9 @@ FN_GLOBAL_INTEGER(lp_lm_interval, &Globals.lm_interval) FN_GLOBAL_INTEGER(lp_machine_password_timeout, &Globals.machine_password_timeout) FN_GLOBAL_INTEGER(lp_lock_spin_count, &Globals.iLockSpinCount) FN_GLOBAL_INTEGER(lp_lock_sleep_time, &Globals.iLockSpinTime) +FN_GLOBAL_LIST(lp_js_include, &Globals.jsInclude) + + FN_LOCAL_STRING(lp_servicename, szService) FN_LOCAL_CONST_STRING(lp_const_servicename, szService) FN_LOCAL_STRING(lp_pathname, szPath) -- cgit From b3320581ff2e1e3b73d61bbe1e5e78ca630855e1 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 12 Jul 2005 05:57:14 +0000 Subject: r8344: added a "setup directory" smb.conf parameter, pointing at the setup template files (This used to be commit c842144cbf642b10df21c979d3c4b9fe94384b96) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index d6184fd9ae..0b1eb2dcd6 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -125,6 +125,7 @@ typedef struct char *szLockDir; char *szPidDir; char *szRootdir; + char *szSetupDir; char *szDefaultService; char *szHostsEquiv; char *szServerString; @@ -736,6 +737,7 @@ static struct parm_struct parm_table[] = { {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"js include", P_LIST, P_GLOBAL, &Globals.jsInclude, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"setup directory", P_STRING, P_GLOBAL, &Globals.szSetupDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"default service", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"default", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_DEVELOPER}, @@ -1065,6 +1067,7 @@ static void init_globals(void) do_parameter("tls certfile", "tls/cert.pem"); do_parameter("tls cafile", "tls/ca.pem"); do_parameter_var("js include", "%s/js", dyn_LIBDIR); + do_parameter_var("setup directory", "%s/setup", dyn_LIBDIR); } static TALLOC_CTX *lp_talloc; @@ -1184,6 +1187,7 @@ FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) FN_GLOBAL_STRING(lp_printcapname, &Globals.szPrintcapname) FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) +FN_GLOBAL_STRING(lp_setupdir, &Globals.szSetupDir) FN_GLOBAL_STRING(lp_ncalrpc_dir, &Globals.ncalrpc_dir) FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) -- cgit From 61edb97bdfabf1ab313fbec5f47f5e6c8a79da1a Mon Sep 17 00:00:00 2001 From: Love Hörnquist Åstrand Date: Tue, 12 Jul 2005 22:22:59 +0000 Subject: r8394: Make sure the argument to ctype is*(3) macros are unsigned char as required by ISO C99. (This used to be commit 56fd21c806e816cf4c3d23881f26474f858b45e2) --- source4/param/loadparm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 0b1eb2dcd6..354318b2bd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2283,7 +2283,7 @@ static BOOL lp_do_parameter_parametric(int snum, const char *pszParmName, const struct param_opt *paramo, *data; char *name; - while (isspace(*pszParmName)) { + while (isspace((unsigned char)*pszParmName)) { pszParmName++; } @@ -2485,7 +2485,7 @@ BOOL lp_set_cmdline(const char *pszParmName, const char *pszParmValue) int parmnum = map_parameter(pszParmName); int i; - while (isspace(*pszParmValue)) pszParmValue++; + while (isspace((unsigned char)*pszParmValue)) pszParmValue++; if (parmnum < 0 && strchr(pszParmName, ':')) { -- cgit From 2f5f01567b4c30cd764843a1ca0c7ab6d9bc0882 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 20 Jul 2005 10:07:48 +0000 Subject: r8643: - make lp_configfile() work again - get rid of redundeny dyn_CONFIGFILE argument to lp_load() - fixed provisioning to work with completely pristine install, creating an initial smb.conf is none is present - added lp.set() and lp.reload() to loadparm ejs object interface (This used to be commit c2691ef7126ddcee5f95970b78759b40a049d0a7) --- source4/param/loadparm.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 354318b2bd..160a7d12de 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -910,6 +910,8 @@ static void init_globals(void) } } + do_parameter("config file", dyn_CONFIGFILE); + /* options that can be set on the command line must be initialised via the slower do_parameter() to ensure that FLAG_CMDLINE is obeyed */ #ifdef TCP_NODELAY @@ -2985,21 +2987,14 @@ static void set_server_role(void) False on failure. ***************************************************************************/ -BOOL lp_load(const char *pszFname) +BOOL lp_load(void) { pstring n2; BOOL bRetval; struct param_opt *data; - pstrcpy(n2, pszFname); - standard_sub_basic(n2,sizeof(n2)); - - add_to_file_list(pszFname, n2); - bRetval = False; - DEBUG(2, ("lp_load: refreshing parameters from %s\n", pszFname)); - bInGlobalSection = True; if (Globals.param_opt != NULL) { @@ -3016,6 +3011,12 @@ BOOL lp_load(const char *pszFname) init_globals(); + pstrcpy(n2, lp_configfile()); + standard_sub_basic(n2,sizeof(n2)); + DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); + + add_to_file_list(lp_configfile(), n2); + /* We get sections first, so have to start 'behind' to make up */ iServiceIndex = -1; bRetval = pm_process(n2, do_section, do_parameter); -- cgit From beed5b8532400d79fd40fc53ebae1666adc9af34 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 5 Aug 2005 15:30:33 +0000 Subject: r9119: added a lp.categories() call in the loadparm js object, to allow retrieval of the smb.conf parameter categories. This will make writing a smb.conf editor easier. (This used to be commit 8db549b1506b5260c9eb16f40bbdae6a7c006fa2) --- source4/param/loadparm.c | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 160a7d12de..eb757d40e4 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -89,21 +89,6 @@ static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...); static BOOL defaults_saved = False; -#define FLAG_BASIC 0x0001 /* fundamental options */ -#define FLAG_SHARE 0x0002 /* file sharing options */ -#define FLAG_PRINT 0x0004 /* printing options */ -#define FLAG_GLOBAL 0x0008 /* local options that should be globally settable in SWAT */ -#define FLAG_WIZARD 0x0010 /* Parameters that the wizard will operate on */ -#define FLAG_ADVANCED 0x0020 /* Parameters that the wizard will operate on */ -#define FLAG_DEVELOPER 0x0040 /* Parameters that the wizard will operate on */ -#define FLAG_DEPRECATED 0x1000 /* options that should no longer be used */ -#define FLAG_HIDE 0x2000 /* options that should be hidden in SWAT */ -#define FLAG_DOS_STRING 0x4000 /* convert from UNIX to DOS codepage when reading this string. */ -#define FLAG_CMDLINE 0x8000 /* this option was set from the command line */ - - - - struct param_opt { struct param_opt *prev, *next; char *key; @@ -760,6 +745,7 @@ static struct parm_struct parm_table[] = { {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, {"msdfs proxy", P_STRING, P_LOCAL, &sDefault.szMSDfsProxy, NULL, NULL, FLAG_SHARE}, {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"Winbind options", P_SEP, P_SEPARATOR}, {"winbind uid", P_STRING, P_GLOBAL, &Globals.szWinbindUID, handle_winbind_uid, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -775,6 +761,16 @@ static struct parm_struct parm_table[] = { {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} }; + +/* + return the parameter table +*/ +struct parm_struct *lp_parm_table(void) +{ + return parm_table; +} + + /*************************************************************************** Initialise the sDefault parameter structure for the printer values. ***************************************************************************/ @@ -931,11 +927,7 @@ static void init_globals(void) do_parameter("max connections", "-1"); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup"); -#ifdef WITH_KRB5 do_parameter("server services", "smb rpc nbt ldap cldap web kdc"); -#else - do_parameter("server services", "smb rpc nbt ldap cldap web"); -#endif do_parameter("ntptr providor", "simple_ldb"); do_parameter("auth methods", "anonymous sam_ignoredomain"); do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); -- cgit From 92789c05efd61f7c500816ddd0e0b3a5b28b485a Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Thu, 18 Aug 2005 07:06:19 +0000 Subject: r9382: Add a dummy registry for HKEY_USERS to get rid of the annoying dialog presented by regedt32. I think this hive is dynamically generated from SAM information. (This used to be commit feb341969e59540bc22e78df0d44b4d42c336d31) --- source4/param/loadparm.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index eb757d40e4..3320fd824f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -936,6 +936,12 @@ static void init_globals(void) do_parameter("spoolss database", "spoolss.ldb"); do_parameter("wins database", "wins.ldb"); do_parameter("registry:HKEY_LOCAL_MACHINE", "hklm.ldb"); + + /* This hive should be dynamically generated by Samba using + data from the sam, but for the moment leave it in a tdb to + keep regedt32 from popping up an annoying dialog. */ + do_parameter("registry:HKEY_USERS", "hku.ldb"); + do_parameter("guest account", GUEST_ACCOUNT); /* using UTF8 by default allows us to support all chars */ -- cgit From dcd27d550fcc6fc8ddbec2f4a310a862f3fbbffc Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 25 Aug 2005 01:12:43 +0000 Subject: r9602: Add support for reading share_info.tdb and smb.conf. Add userdata argument to function pointers for pm_process() (This used to be commit 84b2fb34675fa557173621433838c5a7ec0f1283) --- source4/param/loadparm.c | 330 +++++++++++++++++++++++------------------------ 1 file changed, 165 insertions(+), 165 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 3320fd824f..5191d10825 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -83,7 +83,7 @@ static BOOL bLoaded = False; #define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && ServicePtrs[(i)]->valid) #define VALID(i) ServicePtrs[i]->valid -static BOOL do_parameter(const char *, const char *); +static BOOL do_parameter(const char *, const char *, void *); static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...); static BOOL defaults_saved = False; @@ -783,103 +783,103 @@ static void init_printer_values(void) case PRINT_AIX: case PRINT_LPRNT: case PRINT_LPROS2: - do_parameter("Lpqcommand", "lpq -P'%p'"); - do_parameter("Lprmcommand", "lprm -P'%p' %j"); + do_parameter("Lpqcommand", "lpq -P'%p'", NULL); + do_parameter("Lprmcommand", "lprm -P'%p' %j", NULL); do_parameter("Printcommand", - "lpr -r -P'%p' %s"); + "lpr -r -P'%p' %s", NULL); break; case PRINT_LPRNG: case PRINT_PLP: - do_parameter("Lpqcommand", "lpq -P'%p'"); - do_parameter("Lprmcommand", "lprm -P'%p' %j"); + do_parameter("Lpqcommand", "lpq -P'%p'", NULL); + do_parameter("Lprmcommand", "lprm -P'%p' %j", NULL); do_parameter("Printcommand", - "lpr -r -P'%p' %s"); + "lpr -r -P'%p' %s", NULL); do_parameter("Queuepausecommand", - "lpc stop '%p'"); + "lpc stop '%p'", NULL); do_parameter("Queueresumecommand", - "lpc start '%p'"); + "lpc start '%p'", NULL); do_parameter("Lppausecommand", - "lpc hold '%p' %j"); + "lpc hold '%p' %j", NULL); do_parameter("Lpresumecommand", - "lpc release '%p' %j"); + "lpc release '%p' %j", NULL); break; case PRINT_CUPS: #ifdef HAVE_CUPS - do_parameter("Lpqcommand", ""); - do_parameter("Lprmcommand", ""); - do_parameter("Printcommand", ""); - do_parameter("Lppausecommand", ""); - do_parameter("Lpresumecommand", ""); - do_parameter("Queuepausecommand", ""); - do_parameter("Queueresumecommand", ""); - - do_parameter("Printcapname", "cups"); + do_parameter("Lpqcommand", "", NULL); + do_parameter("Lprmcommand", "", NULL); + do_parameter("Printcommand", "", NULL); + do_parameter("Lppausecommand", "", NULL); + do_parameter("Lpresumecommand", "", NULL); + do_parameter("Queuepausecommand", "", NULL); + do_parameter("Queueresumecommand", "", NULL); + + do_parameter("Printcapname", "cups", NULL); #else do_parameter("Lpqcommand", - "/usr/bin/lpstat -o '%p'"); + "/usr/bin/lpstat -o '%p'", NULL); do_parameter("Lprmcommand", - "/usr/bin/cancel '%p-%j'"); + "/usr/bin/cancel '%p-%j'", NULL); do_parameter("Printcommand", - "/usr/bin/lp -d '%p' %s; rm %s"); + "/usr/bin/lp -d '%p' %s; rm %s", NULL); do_parameter("Lppausecommand", - "lp -i '%p-%j' -H hold"); + "lp -i '%p-%j' -H hold", NULL); do_parameter("Lpresumecommand", - "lp -i '%p-%j' -H resume"); + "lp -i '%p-%j' -H resume", NULL); do_parameter("Queuepausecommand", - "/usr/bin/disable '%p'"); + "/usr/bin/disable '%p'", NULL); do_parameter("Queueresumecommand", - "/usr/bin/enable '%p'"); - do_parameter("Printcapname", "lpstat"); + "/usr/bin/enable '%p'", NULL); + do_parameter("Printcapname", "lpstat", NULL); #endif /* HAVE_CUPS */ break; case PRINT_SYSV: case PRINT_HPUX: - do_parameter("Lpqcommand", "lpstat -o%p"); - do_parameter("Lprmcommand", "cancel %p-%j"); + do_parameter("Lpqcommand", "lpstat -o%p", NULL); + do_parameter("Lprmcommand", "cancel %p-%j", NULL); do_parameter("Printcommand", - "lp -c -d%p %s; rm %s"); + "lp -c -d%p %s; rm %s", NULL); do_parameter("Queuepausecommand", - "disable %p"); + "disable %p", NULL); do_parameter("Queueresumecommand", - "enable %p"); + "enable %p", NULL); #ifndef HPUX do_parameter("Lppausecommand", - "lp -i %p-%j -H hold"); + "lp -i %p-%j -H hold", NULL); do_parameter("Lpresumecommand", - "lp -i %p-%j -H resume"); + "lp -i %p-%j -H resume", NULL); #endif /* HPUX */ break; case PRINT_QNX: - do_parameter("Lpqcommand", "lpq -P%p"); - do_parameter("Lprmcommand", "lprm -P%p %j"); - do_parameter("Printcommand", "lp -r -P%p %s"); + do_parameter("Lpqcommand", "lpq -P%p", NULL); + do_parameter("Lprmcommand", "lprm -P%p %j", NULL); + do_parameter("Printcommand", "lp -r -P%p %s", NULL); break; case PRINT_SOFTQ: - do_parameter("Lpqcommand", "qstat -l -d%p"); + do_parameter("Lpqcommand", "qstat -l -d%p", NULL); do_parameter("Lprmcommand", - "qstat -s -j%j -c"); + "qstat -s -j%j -c", NULL); do_parameter("Printcommand", - "lp -d%p -s %s; rm %s"); + "lp -d%p -s %s; rm %s", NULL); do_parameter("Lppausecommand", - "qstat -s -j%j -h"); + "qstat -s -j%j -h", NULL); do_parameter("Lpresumecommand", - "qstat -s -j%j -r"); + "qstat -s -j%j -r", NULL); break; #ifdef DEVELOPER case PRINT_TEST: case PRINT_VLP: - do_parameter("Printcommand", "vlp print %p %s"); - do_parameter("Lpqcommand", "vlp lpq %p"); - do_parameter("Lprmcommand", "vlp lprm %p %j"); - do_parameter("Lppausecommand", "vlp lppause %p %j"); - do_parameter("Lpresumecommand", "vlp lpresum %p %j"); - do_parameter("Queuepausecommand", "vlp queuepause %p"); - do_parameter("Queueresumecommand", "vlp queueresume %p"); + do_parameter("Printcommand", "vlp print %p %s", NULL); + do_parameter("Lpqcommand", "vlp lpq %p", NULL); + do_parameter("Lprmcommand", "vlp lprm %p %j", NULL); + do_parameter("Lppausecommand", "vlp lppause %p %j", NULL); + do_parameter("Lpresumecommand", "vlp lpresum %p %j", NULL); + do_parameter("Queuepausecommand", "vlp queuepause %p", NULL); + do_parameter("Queueresumecommand", "vlp queueresume %p", NULL); break; #endif /* DEVELOPER */ @@ -906,166 +906,166 @@ static void init_globals(void) } } - do_parameter("config file", dyn_CONFIGFILE); + do_parameter("config file", dyn_CONFIGFILE, NULL); /* options that can be set on the command line must be initialised via the slower do_parameter() to ensure that FLAG_CMDLINE is obeyed */ #ifdef TCP_NODELAY - do_parameter("socket options", "TCP_NODELAY"); + do_parameter("socket options", "TCP_NODELAY", NULL); #endif - do_parameter("workgroup", DEFAULT_WORKGROUP); + do_parameter("workgroup", DEFAULT_WORKGROUP, NULL); myname = get_myname(); - do_parameter("netbios name", myname); + do_parameter("netbios name", myname, NULL); SAFE_FREE(myname); - do_parameter("max protocol", "NT1"); - do_parameter("name resolve order", "lmhosts wins host bcast"); + do_parameter("max protocol", "NT1", NULL); + do_parameter("name resolve order", "lmhosts wins host bcast", NULL); init_printer_values(); - do_parameter("fstype", FSTYPE_STRING); - do_parameter("ntvfs handler", "unixuid default"); - do_parameter("max connections", "-1"); - - do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup"); - do_parameter("server services", "smb rpc nbt ldap cldap web kdc"); - do_parameter("ntptr providor", "simple_ldb"); - do_parameter("auth methods", "anonymous sam_ignoredomain"); - do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE); - do_parameter("private dir", dyn_PRIVATE_DIR); - do_parameter("sam database", "sam.ldb"); - do_parameter("spoolss database", "spoolss.ldb"); - do_parameter("wins database", "wins.ldb"); - do_parameter("registry:HKEY_LOCAL_MACHINE", "hklm.ldb"); + do_parameter("fstype", FSTYPE_STRING, NULL); + do_parameter("ntvfs handler", "unixuid default", NULL); + do_parameter("max connections", "-1", NULL); + + do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup", NULL); + do_parameter("server services", "smb rpc nbt ldap cldap web kdc", NULL); + do_parameter("ntptr providor", "simple_ldb", NULL); + do_parameter("auth methods", "anonymous sam_ignoredomain", NULL); + do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE, NULL); + do_parameter("private dir", dyn_PRIVATE_DIR, NULL); + do_parameter("sam database", "sam.ldb", NULL); + do_parameter("spoolss database", "spoolss.ldb", NULL); + do_parameter("wins database", "wins.ldb", NULL); + do_parameter("registry:HKEY_LOCAL_MACHINE", "hklm.ldb", NULL); /* This hive should be dynamically generated by Samba using data from the sam, but for the moment leave it in a tdb to keep regedt32 from popping up an annoying dialog. */ - do_parameter("registry:HKEY_USERS", "hku.ldb"); + do_parameter("registry:HKEY_USERS", "hku.ldb", NULL); - do_parameter("guest account", GUEST_ACCOUNT); + do_parameter("guest account", GUEST_ACCOUNT, NULL); /* using UTF8 by default allows us to support all chars */ - do_parameter("unix charset", "UTF8"); + do_parameter("unix charset", "UTF8", NULL); /* Use codepage 850 as a default for the dos character set */ - do_parameter("dos charset", "CP850"); + do_parameter("dos charset", "CP850", NULL); /* * Allow the default PASSWD_CHAT to be overridden in local.h. */ - do_parameter("passwd chat", DEFAULT_PASSWD_CHAT); + do_parameter("passwd chat", DEFAULT_PASSWD_CHAT, NULL); - do_parameter("passwd program", ""); - do_parameter("printcap name", PRINTCAP_NAME); + do_parameter("passwd program", "", NULL); + do_parameter("printcap name", PRINTCAP_NAME, NULL); - do_parameter("pid directory", dyn_PIDDIR); - do_parameter("lock dir", dyn_LOCKDIR); - do_parameter("ncalrpc dir", dyn_NCALRPCDIR); + do_parameter("pid directory", dyn_PIDDIR, NULL); + do_parameter("lock dir", dyn_LOCKDIR, NULL); + do_parameter("ncalrpc dir", dyn_NCALRPCDIR, NULL); - do_parameter("socket address", "0.0.0.0"); + do_parameter("socket address", "0.0.0.0", NULL); do_parameter_var("server string", "Samba %s", SAMBA_VERSION_STRING); do_parameter_var("announce version", "%d.%d", DEFAULT_MAJOR_VERSION, DEFAULT_MINOR_VERSION); - do_parameter("logon drive", ""); - - do_parameter("logon home", "\\\\%N\\%U"); - do_parameter("logon path", "\\\\%N\\%U\\profile"); - do_parameter("password server", "*"); - - do_parameter("load printers", "True"); - - do_parameter("max mux", "50"); - do_parameter("max xmit", "12288"); - do_parameter("lpqcachetime", "10"); - do_parameter("DisableSpoolss", "False"); - do_parameter("password level", "0"); - do_parameter("username level", "0"); - do_parameter("LargeReadwrite", "True"); - do_parameter("minprotocol", "CORE"); - do_parameter("security", "USER"); - do_parameter("paranoid server security", "True"); - do_parameter("EncryptPasswords", "True"); - do_parameter("ReadRaw", "True"); - do_parameter("WriteRaw", "True"); - do_parameter("NullPasswords", "False"); - do_parameter("ObeyPamRestrictions", "False"); - do_parameter("lm announce", "Auto"); - do_parameter("lm interval", "60"); - do_parameter("announce as", "NT SERVER"); - - do_parameter("TimeServer", "False"); - do_parameter("BindInterfacesOnly", "False"); - do_parameter("PamPasswordChange", "False"); - do_parameter("Unicode", "True"); - do_parameter("restrict anonymous", "0"); - do_parameter("ClientLanManAuth", "True"); - do_parameter("LanmanAuth", "True"); - do_parameter("NTLMAuth", "True"); + do_parameter("logon drive", "", NULL); + + do_parameter("logon home", "\\\\%N\\%U", NULL); + do_parameter("logon path", "\\\\%N\\%U\\profile", NULL); + do_parameter("password server", "*", NULL); + + do_parameter("load printers", "True", NULL); + + do_parameter("max mux", "50", NULL); + do_parameter("max xmit", "12288", NULL); + do_parameter("lpqcachetime", "10", NULL); + do_parameter("DisableSpoolss", "False", NULL); + do_parameter("password level", "0", NULL); + do_parameter("username level", "0", NULL); + do_parameter("LargeReadwrite", "True", NULL); + do_parameter("minprotocol", "CORE", NULL); + do_parameter("security", "USER", NULL); + do_parameter("paranoid server security", "True", NULL); + do_parameter("EncryptPasswords", "True", NULL); + do_parameter("ReadRaw", "True", NULL); + do_parameter("WriteRaw", "True", NULL); + do_parameter("NullPasswords", "False", NULL); + do_parameter("ObeyPamRestrictions", "False", NULL); + do_parameter("lm announce", "Auto", NULL); + do_parameter("lm interval", "60", NULL); + do_parameter("announce as", "NT SERVER", NULL); + + do_parameter("TimeServer", "False", NULL); + do_parameter("BindInterfacesOnly", "False", NULL); + do_parameter("PamPasswordChange", "False", NULL); + do_parameter("Unicode", "True", NULL); + do_parameter("restrict anonymous", "0", NULL); + do_parameter("ClientLanManAuth", "True", NULL); + do_parameter("LanmanAuth", "True", NULL); + do_parameter("NTLMAuth", "True", NULL); - do_parameter("enhanced browsing", "True"); - do_parameter("LockSpinCount", "3"); - do_parameter("LockSpinTime", "10"); + do_parameter("enhanced browsing", "True", NULL); + do_parameter("LockSpinCount", "3", NULL); + do_parameter("LockSpinTime", "10", NULL); #ifdef MMAP_BLACKLIST - do_parameter("UseMmap", "False"); + do_parameter("UseMmap", "False", NULL); #else - do_parameter("UseMmap", "True"); + do_parameter("UseMmap", "True", NULL); #endif - do_parameter("UnixExtensions", "False"); + do_parameter("UnixExtensions", "False", NULL); /* hostname lookups can be very expensive and are broken on a large number of sites (tridge) */ - do_parameter("HostnameLookups", "False"); + do_parameter("HostnameLookups", "False", NULL); - do_parameter("PreferredMaster", "Auto"); - do_parameter("os level", "20"); - do_parameter("LocalMaster", "True"); - do_parameter("DomainMaster", "Auto"); /* depending on bDomainLogons */ - do_parameter("DomainLogons", "False"); - do_parameter("WINSsupport", "False"); - do_parameter("WINSproxy", "False"); + do_parameter("PreferredMaster", "Auto", NULL); + do_parameter("os level", "20", NULL); + do_parameter("LocalMaster", "True", NULL); + do_parameter("DomainMaster", "Auto", NULL); /* depending on bDomainLogons */ + do_parameter("DomainLogons", "False", NULL); + do_parameter("WINSsupport", "False", NULL); + do_parameter("WINSproxy", "False", NULL); - do_parameter("DNSproxy", "True"); + do_parameter("DNSproxy", "True", NULL); - do_parameter("AllowTrustedDomains", "True"); + do_parameter("AllowTrustedDomains", "True", NULL); - do_parameter("TemplateShell", "/bin/false"); - do_parameter("TemplateHomedir", "/home/%D/%U"); - do_parameter("WinbindSeparator", "\\"); + do_parameter("TemplateShell", "/bin/false", NULL); + do_parameter("TemplateHomedir", "/home/%D/%U", NULL); + do_parameter("WinbindSeparator", "\\", NULL); - do_parameter("winbind cache time", "15"); - do_parameter("WinbindEnumUsers", "True"); - do_parameter("WinbindEnumGroups", "True"); - do_parameter("WinbindUseDefaultDomain", "False"); + do_parameter("winbind cache time", "15", NULL); + do_parameter("WinbindEnumUsers", "True", NULL); + do_parameter("WinbindEnumGroups", "True", NULL); + do_parameter("WinbindUseDefaultDomain", "False", NULL); - do_parameter("IDMapBackend", "tdb"); + do_parameter("IDMapBackend", "tdb", NULL); - do_parameter("name cache timeout", "660"); /* In seconds */ + do_parameter("name cache timeout", "660", NULL); /* In seconds */ - do_parameter("client signing", "Yes"); - do_parameter("server signing", "auto"); + do_parameter("client signing", "Yes", NULL); + do_parameter("server signing", "auto", NULL); - do_parameter("use spnego", "True"); + do_parameter("use spnego", "True", NULL); - do_parameter("smb ports", SMB_PORTS); - do_parameter("nbt port", "137"); - do_parameter("dgram port", "138"); - do_parameter("cldap port", "389"); - do_parameter("krb5 port", "88"); - do_parameter("web port", "901"); - do_parameter("swat directory", dyn_SWATDIR); + do_parameter("smb ports", SMB_PORTS, NULL); + do_parameter("nbt port", "137", NULL); + do_parameter("dgram port", "138", NULL); + do_parameter("cldap port", "389", NULL); + do_parameter("krb5 port", "88", NULL); + do_parameter("web port", "901", NULL); + do_parameter("swat directory", dyn_SWATDIR, NULL); - do_parameter("nt status support", "True"); + do_parameter("nt status support", "True", NULL); - do_parameter("max wins ttl", "432000"); - do_parameter("min wins ttl", "10"); + do_parameter("max wins ttl", "432000", NULL); + do_parameter("min wins ttl", "10", NULL); - do_parameter("tls enabled", "True"); - do_parameter("tls keyfile", "tls/key.pem"); - do_parameter("tls certfile", "tls/cert.pem"); - do_parameter("tls cafile", "tls/ca.pem"); + do_parameter("tls enabled", "True", NULL); + do_parameter("tls keyfile", "tls/key.pem", NULL); + do_parameter("tls certfile", "tls/cert.pem", NULL); + do_parameter("tls cafile", "tls/ca.pem", NULL); do_parameter_var("js include", "%s/js", dyn_LIBDIR); do_parameter_var("setup directory", "%s/setup", dyn_LIBDIR); } @@ -1354,7 +1354,7 @@ static int getservicebyname(const char *pszServiceName, static void copy_service(service * pserviceDest, service * pserviceSource, BOOL *pcopymapDest); static BOOL service_ok(int iService); -static BOOL do_section(const char *pszSectionName); +static BOOL do_section(const char *pszSectionName, void *); static void init_copymap(service * pservice); /* This is a helper function for parametrical options support. */ @@ -2083,7 +2083,7 @@ static BOOL handle_include(const char *pszParmValue, char **ptr) string_set(ptr, fname); if (file_exist(fname)) - return (pm_process(fname, do_section, do_parameter)); + return (pm_process(fname, do_section, do_parameter, NULL)); DEBUG(2, ("Can't find include file %s\n", fname)); @@ -2449,7 +2449,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue Process a parameter. ***************************************************************************/ -static BOOL do_parameter(const char *pszParmName, const char *pszParmValue) +static BOOL do_parameter(const char *pszParmName, const char *pszParmValue, void *userdata) { return (lp_do_parameter(bInGlobalSection ? -2 : iServiceIndex, pszParmName, pszParmValue)); @@ -2469,7 +2469,7 @@ static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...) va_start(ap, fmt); s = talloc_vasprintf(NULL, fmt, ap); va_end(ap); - ret = do_parameter(pszParmName, s); + ret = do_parameter(pszParmName, s, NULL); talloc_free(s); return ret; } @@ -2635,7 +2635,7 @@ static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) Returns True on success, False on failure. ***************************************************************************/ -static BOOL do_section(const char *pszSectionName) +static BOOL do_section(const char *pszSectionName, void *userdata) { BOOL bRetval; BOOL isglobal = ((strwicmp(pszSectionName, GLOBAL_NAME) == 0) || @@ -3017,7 +3017,7 @@ BOOL lp_load(void) /* We get sections first, so have to start 'behind' to make up */ iServiceIndex = -1; - bRetval = pm_process(n2, do_section, do_parameter); + bRetval = pm_process(n2, do_section, do_parameter, NULL); /* finish up the last section */ DEBUG(4, ("pm_process() returned %s\n", BOOLSTR(bRetval))); @@ -3241,7 +3241,7 @@ void lp_remove_service(int snum) void lp_copy_service(int snum, const char *new_name) { const char *oldname = lp_servicename(snum); - do_section(new_name); + do_section(new_name, NULL); if (snum >= 0) { snum = lp_servicenumber(new_name); if (snum >= 0) -- cgit From e3dcc92deef81972a6f38bdbab75256d3d038357 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 27 Aug 2005 12:56:24 +0000 Subject: r9684: Remove unused parameters (about 70) (This used to be commit 4a51a31571d12078e3c2c78641c0c844fc26925d) --- source4/param/loadparm.c | 468 +---------------------------------------------- 1 file changed, 3 insertions(+), 465 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 5191d10825..3728881e33 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -106,16 +106,11 @@ typedef struct char *unix_charset; char *ncalrpc_dir; char *display_charset; - char *szPrintcapname; char *szLockDir; char *szPidDir; - char *szRootdir; char *szSetupDir; - char *szDefaultService; - char *szHostsEquiv; char *szServerString; char *szAutoServices; - char *szPasswdProgram; char *szPasswdChat; char *szLogFile; char *szConfigFile; @@ -125,19 +120,11 @@ typedef struct char *szWINS_URL; char *szPrivateDir; char **jsInclude; - char **szPreloadModules; char **szPasswordServers; char *szSocketOptions; char *szRealm; - char *szADSserver; - char *szLogonScript; - char *szLogonPath; - char *szLogonDrive; - char *szLogonHome; char **szWINSservers; char **szInterfaces; - char *szRemoteAnnounce; - char *szRemoteBrowseSync; char *szSocketAddress; char *szAnnounceVersion; /* This is initialised in init_globals */ char *szWorkgroup; @@ -147,24 +134,13 @@ typedef struct char *szDomainOtherSIDs; char **szNameResolveOrder; char *szPanicAction; - char *szAddUserScript; - char *szAddMachineScript; - char *szWINSHook; - char *szWINSPartners; char **dcerpc_ep_servers; char **server_services; char *ntptr_providor; char *szWinbindUID; char *szWinbindGID; char *szNonUnixAccountRange; - char *szTemplateHomedir; - char *szTemplateShell; char *szWinbindSeparator; - BOOL bWinbindEnumUsers; - BOOL bWinbindEnumGroups; - BOOL bWinbindUseDefaultDomain; - char *szIDMapBackend; - char *szGuestaccount; char *swat_directory; BOOL tls_enabled; char *tls_keyfile; @@ -174,36 +150,21 @@ typedef struct int max_mux; int max_xmit; int pwordlevel; - int unamelevel; int maxprotocol; int minprotocol; int security; char **AuthMethods; BOOL paranoid_server_security; - int lpqcachetime; - BOOL bDisableSpoolss; - int os_level; - int enhanced_browsing; - int time_offset; - int max_ttl; int max_wins_ttl; int min_wins_ttl; - int lm_announce; - int lm_interval; int announce_as; /* This is initialised in init_globals */ - int machine_password_timeout; - int winbind_cache_time; - int iLockSpinCount; - int iLockSpinTime; int nbt_port; int dgram_port; int cldap_port; int krb5_port; int web_port; char *socket_options; - BOOL bDNSproxy; BOOL bWINSsupport; - BOOL bWINSproxy; BOOL bLocalMaster; BOOL bPreferredMaster; BOOL bDomainMaster; @@ -211,17 +172,13 @@ typedef struct BOOL bEncryptPasswords; BOOL bNullPasswords; BOOL bObeyPamRestrictions; - BOOL bLoadPrinters; BOOL bLargeReadwrite; BOOL bReadRaw; BOOL bWriteRaw; BOOL bTimeServer; BOOL bBindInterfacesOnly; - BOOL bPamPasswordChange; BOOL bNTSmbSupport; BOOL bNTStatusSupport; - BOOL bAllowTrustedDomains; - BOOL bPlaintextAuth; BOOL bLanmanAuth; BOOL bNTLMAuth; BOOL bUseSpnego; @@ -231,15 +188,10 @@ typedef struct BOOL bClientLanManAuth; BOOL bClientNTLMv2Auth; BOOL bHostMSDfs; - BOOL bHideLocalUsers; BOOL bUnicode; - BOOL bUseMmap; - BOOL bHostnameLookups; BOOL bUnixExtensions; BOOL bDisableNetbios; BOOL bRpcBigEndian; - int restrict_anonymous; - int name_cache_timeout; struct param_opt *param_opt; } global; @@ -252,34 +204,19 @@ static global Globals; typedef struct { BOOL valid; - BOOL autoloaded; char *szService; char *szPath; - char *szUsername; - char **szInvalidUsers; - char **szValidUsers; - char **szAdminUsers; char *szCopy; char *szInclude; - char *szPrintcommand; - char *szLpqcommand; - char *szLprmcommand; - char *szLppausecommand; - char *szLpresumecommand; - char *szQueuepausecommand; - char *szQueueresumecommand; char *szPrintername; char **szHostsallow; char **szHostsdeny; char *comment; char *volume; char *fstype; - char *szMSDfsProxy; char **ntvfs_handler; - int iMinPrintSpace; int iMaxPrintJobs; int iMaxConnections; - int iPrinting; int iCSCPolicy; BOOL bAvailable; BOOL bBrowseable; @@ -288,17 +225,9 @@ typedef struct BOOL bMap_system; BOOL bMap_hidden; BOOL bMap_archive; - BOOL bLocking; BOOL bStrictLocking; - BOOL bPosixLocking; - BOOL bOpLocks; - BOOL bLevel2OpLocks; - BOOL bOnlyUser; - BOOL bGuest_only; - BOOL bGuest_ok; BOOL *copymap; BOOL bMSDfsRoot; - BOOL bShareModes; BOOL bStrictSync; BOOL bCIFileSystem; struct param_opt *param_opt; @@ -311,34 +240,19 @@ service; /* This is a default service used to prime a services structure */ static service sDefault = { True, /* valid */ - False, /* not autoloaded */ NULL, /* szService */ NULL, /* szPath */ - NULL, /* szUsername */ - NULL, /* szInvalidUsers */ - NULL, /* szValidUsers */ - NULL, /* szAdminUsers */ NULL, /* szCopy */ NULL, /* szInclude */ - NULL, /* szPrintcommand */ - NULL, /* szLpqcommand */ - NULL, /* szLprmcommand */ - NULL, /* szLppausecommand */ - NULL, /* szLpresumecommand */ - NULL, /* szQueuepausecommand */ - NULL, /* szQueueresumecommand */ NULL, /* szPrintername */ NULL, /* szHostsallow */ NULL, /* szHostsdeny */ NULL, /* comment */ NULL, /* volume */ NULL, /* fstype */ - NULL, /* szMSDfsProxy */ NULL, /* ntvfs_handler */ - 0, /* iMinPrintSpace */ 1000, /* iMaxPrintJobs */ 0, /* iMaxConnections */ - DEFAULT_PRINTING, /* iPrinting */ 0, /* iCSCPolicy */ True, /* bAvailable */ True, /* bBrowseable */ @@ -347,17 +261,9 @@ static service sDefault = { False, /* bMap_system */ False, /* bMap_hidden */ True, /* bMap_archive */ - True, /* bLocking */ True, /* bStrictLocking */ - True, /* bPosixLocking */ - True, /* bOpLocks */ - True, /* bLevel2OpLocks */ - False, /* bOnlyUser */ - False, /* bGuest_only */ - False, /* bGuest_ok */ NULL, /* copymap */ False, /* bMSDfsRoot */ - True, /* bShareModes */ False, /* bStrictSync */ False, /* bCIFileSystem */ NULL, /* Parametric options */ @@ -406,25 +312,6 @@ static const struct enum_list enum_security[] = { {-1, NULL} }; -static const struct enum_list enum_printing[] = { - {PRINT_SYSV, "sysv"}, - {PRINT_AIX, "aix"}, - {PRINT_HPUX, "hpux"}, - {PRINT_BSD, "bsd"}, - {PRINT_QNX, "qnx"}, - {PRINT_PLP, "plp"}, - {PRINT_LPRNG, "lprng"}, - {PRINT_SOFTQ, "softq"}, - {PRINT_CUPS, "cups"}, - {PRINT_LPRNT, "nt"}, - {PRINT_LPROS2, "os2"}, -#ifdef DEVELOPER - {PRINT_TEST, "test"}, - {PRINT_VLP, "vlp"}, -#endif /* DEVELOPER */ - {-1, NULL} -}; - /* Types of machine we can announce as. */ #define ANNOUNCE_AS_NT_SERVER 1 #define ANNOUNCE_AS_WIN95 2 @@ -509,7 +396,6 @@ static struct parm_struct parm_table[] = { {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_HIDE}, {"workgroup", P_USTRING, P_GLOBAL, &Globals.szWorkgroup, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"realm", P_STRING, P_GLOBAL, &Globals.szRealm, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"ADS server", P_STRING, P_GLOBAL, &Globals.szADSserver, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"netbios name", P_USTRING, P_GLOBAL, &Globals.szNetbiosName, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"netbios aliases", P_LIST, P_GLOBAL, &Globals.szNetbiosAliases, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"netbios scope", P_USTRING, P_GLOBAL, &Globals.szNetbiosScope, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -526,9 +412,6 @@ static struct parm_struct parm_table[] = { {"security", P_ENUM, P_GLOBAL, &Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"auth methods", P_LIST, P_GLOBAL, &Globals.AuthMethods, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"encrypt passwords", P_BOOL, P_GLOBAL, &Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"allow trusted domains", P_BOOL, P_GLOBAL, &Globals.bAllowTrustedDomains, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"hosts equiv", P_STRING, P_GLOBAL, &Globals.szHostsEquiv, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"idmap backend", P_STRING, P_GLOBAL, &Globals.szIDMapBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"null passwords", P_BOOL, P_GLOBAL, &Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"password server", P_LIST, P_GLOBAL, &Globals.szPasswordServers, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, @@ -538,42 +421,19 @@ static struct parm_struct parm_table[] = { {"wins database", P_STRING, P_GLOBAL, &Globals.szWINS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"root dir", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"root", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_HIDE | FLAG_DEVELOPER}, - {"guest account", P_STRING, P_GLOBAL, &Globals.szGuestaccount, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"pam password change", P_BOOL, P_GLOBAL, &Globals.bPamPasswordChange, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"passwd program", P_STRING, P_GLOBAL, &Globals.szPasswdProgram, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"username level", P_INTEGER, P_GLOBAL, &Globals.unamelevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"restrict anonymous", P_INTEGER, P_GLOBAL, &Globals.restrict_anonymous, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"plaintext auth", P_BOOL, P_GLOBAL, &Globals.bPlaintextAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"lanman auth", P_BOOL, P_GLOBAL, &Globals.bLanmanAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"ntlm auth", P_BOOL, P_GLOBAL, &Globals.bNTLMAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"client NTLMv2 auth", P_BOOL, P_GLOBAL, &Globals.bClientNTLMv2Auth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"client lanman auth", P_BOOL, P_GLOBAL, &Globals.bClientLanManAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"client plaintext auth", P_BOOL, P_GLOBAL, &Globals.bClientPlaintextAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"username", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"user", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_HIDE}, - {"users", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_HIDE}, - - {"invalid users", P_LIST, P_LOCAL, &sDefault.szInvalidUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"valid users", P_LIST, P_LOCAL, &sDefault.szValidUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"admin users", P_LIST, P_LOCAL, &sDefault.szAdminUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE}, - {"read only", P_BOOL, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE}, - {"guest only", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, FLAG_SHARE}, - - {"guest ok", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - - {"only user", P_BOOL, P_LOCAL, &sDefault.bOnlyUser, NULL, NULL, FLAG_SHARE}, {"hosts allow", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"preload modules", P_LIST, P_GLOBAL, &Globals.szPreloadModules, NULL, NULL, FLAG_BASIC | FLAG_GLOBAL}, {"Logging Options", P_SEP, P_SEPARATOR}, @@ -611,7 +471,6 @@ static struct parm_struct parm_table[] = { {"max xmit", P_INTEGER, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"name resolve order", P_LIST, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"max ttl", P_INTEGER, P_GLOBAL, &Globals.max_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"max wins ttl", P_INTEGER, P_GLOBAL, &Globals.max_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"min wins ttl", P_INTEGER, P_GLOBAL, &Globals.min_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"time server", P_BOOL, P_GLOBAL, &Globals.bTimeServer, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -623,36 +482,18 @@ static struct parm_struct parm_table[] = { {"Tuning Options", P_SEP, P_SEPARATOR}, - {"lpq cache time", P_INTEGER, P_GLOBAL, &Globals.lpqcachetime, NULL, NULL, FLAG_DEVELOPER}, {"max connections", P_INTEGER, P_LOCAL, &sDefault.iMaxConnections, NULL, NULL, FLAG_SHARE}, {"paranoid server security", P_BOOL, P_GLOBAL, &Globals.paranoid_server_security, NULL, NULL, FLAG_DEVELOPER}, - {"min print space", P_INTEGER, P_LOCAL, &sDefault.iMinPrintSpace, NULL, NULL, FLAG_PRINT}, - {"socket options", P_STRING, P_GLOBAL, &Globals.socket_options, NULL, NULL, FLAG_DEVELOPER}, - {"use mmap", P_BOOL, P_GLOBAL, &Globals.bUseMmap, NULL, NULL, FLAG_DEVELOPER}, - {"hostname lookups", P_BOOL, P_GLOBAL, &Globals.bHostnameLookups, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, {"case insensitive filesystem", P_BOOL, P_LOCAL, &sDefault.bCIFileSystem, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, {"Printing Options", P_SEP, P_SEPARATOR}, {"max print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxPrintJobs, NULL, NULL, FLAG_PRINT}, - {"load printers", P_BOOL, P_GLOBAL, &Globals.bLoadPrinters, NULL, NULL, FLAG_PRINT}, - {"printcap name", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, FLAG_PRINT | FLAG_DEVELOPER}, - {"printcap", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, FLAG_HIDE}, {"printable", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_PRINT}, {"print ok", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_HIDE}, - {"printing", P_ENUM, P_LOCAL, &sDefault.iPrinting, NULL, enum_printing, FLAG_PRINT | FLAG_GLOBAL}, - {"print command", P_STRING, P_LOCAL, &sDefault.szPrintcommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, - {"disable spoolss", P_BOOL, P_GLOBAL, &Globals.bDisableSpoolss, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, - {"lpq command", P_STRING, P_LOCAL, &sDefault.szLpqcommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, - {"lprm command", P_STRING, P_LOCAL, &sDefault.szLprmcommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, - {"lppause command", P_STRING, P_LOCAL, &sDefault.szLppausecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, - {"lpresume command", P_STRING, P_LOCAL, &sDefault.szLpresumecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, - {"queuepause command", P_STRING, P_LOCAL, &sDefault.szQueuepausecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, - {"queueresume command", P_STRING, P_LOCAL, &sDefault.szQueueresumecommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL}, {"printer name", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_PRINT}, {"printer", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_HIDE}, @@ -665,53 +506,29 @@ static struct parm_struct parm_table[] = { {"Domain Options", P_SEP, P_SEPARATOR}, - {"machine password timeout", P_INTEGER, P_GLOBAL, &Globals.machine_password_timeout, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"Logon Options", P_SEP, P_SEPARATOR}, - {"add user script", P_STRING, P_GLOBAL, &Globals.szAddUserScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"add machine script", P_STRING, P_GLOBAL, &Globals.szAddMachineScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - - {"logon script", P_STRING, P_GLOBAL, &Globals.szLogonScript, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"logon path", P_STRING, P_GLOBAL, &Globals.szLogonPath, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"logon drive", P_STRING, P_GLOBAL, &Globals.szLogonDrive, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"logon home", P_STRING, P_GLOBAL, &Globals.szLogonHome, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"domain logons", P_BOOL, P_GLOBAL, &Globals.bDomainLogons, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"Browse Options", P_SEP, P_SEPARATOR}, - {"os level", P_INTEGER, P_GLOBAL, &Globals.os_level, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"lm announce", P_ENUM, P_GLOBAL, &Globals.lm_announce, NULL, enum_bool_auto, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"lm interval", P_INTEGER, P_GLOBAL, &Globals.lm_interval, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"preferred master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"prefered master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_HIDE}, {"local master", P_BOOL, P_GLOBAL, &Globals.bLocalMaster, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"domain master", P_ENUM, P_GLOBAL, &Globals.bDomainMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"browseable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_HIDE}, - {"enhanced browsing", P_BOOL, P_GLOBAL, &Globals.enhanced_browsing, NULL, NULL, FLAG_DEVELOPER | FLAG_ADVANCED}, {"WINS Options", P_SEP, P_SEPARATOR}, - {"dns proxy", P_BOOL, P_GLOBAL, &Globals.bDNSproxy, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"wins proxy", P_BOOL, P_GLOBAL, &Globals.bWINSproxy, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"wins server", P_LIST, P_GLOBAL, &Globals.szWINSservers, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"wins support", P_BOOL, P_GLOBAL, &Globals.bWINSsupport, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"wins hook", P_STRING, P_GLOBAL, &Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"wins partners", P_STRING, P_GLOBAL, &Globals.szWINSPartners, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"Locking Options", P_SEP, P_SEPARATOR}, {"csc policy", P_ENUM, P_LOCAL, &sDefault.iCSCPolicy, NULL, enum_csc_policy, FLAG_SHARE | FLAG_GLOBAL}, - {"locking", P_BOOL, P_LOCAL, &sDefault.bLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"lock spin count", P_INTEGER, P_GLOBAL, &Globals.iLockSpinCount, NULL, NULL, FLAG_GLOBAL}, - {"lock spin time", P_INTEGER, P_GLOBAL, &Globals.iLockSpinTime, NULL, NULL, FLAG_GLOBAL}, - {"oplocks", P_BOOL, P_LOCAL, &sDefault.bOpLocks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"level2 oplocks", P_BOOL, P_LOCAL, &sDefault.bLevel2OpLocks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"posix locking", P_BOOL, P_LOCAL, &sDefault.bPosixLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"strict locking", P_BOOL, P_LOCAL, &sDefault.bStrictLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"share modes", P_BOOL, P_LOCAL, &sDefault.bShareModes, NULL, NULL, FLAG_SHARE|FLAG_GLOBAL}, {"Miscellaneous Options", P_SEP, P_SEPARATOR}, @@ -724,12 +541,7 @@ static struct parm_struct parm_table[] = { {"js include", P_LIST, P_GLOBAL, &Globals.jsInclude, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"setup directory", P_STRING, P_GLOBAL, &Globals.szSetupDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"default service", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"default", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, FLAG_DEVELOPER}, - {"remote announce", P_STRING, P_GLOBAL, &Globals.szRemoteAnnounce, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"remote browse sync", P_STRING, P_GLOBAL, &Globals.szRemoteBrowseSync, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER}, - {"time offset", P_INTEGER, P_GLOBAL, &Globals.time_offset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"-valid", P_BOOL, P_LOCAL, &sDefault.valid, NULL, NULL, FLAG_HIDE}, {"copy", P_STRING, P_LOCAL, &sDefault.szCopy, handle_copy, NULL, FLAG_HIDE}, @@ -740,23 +552,15 @@ static struct parm_struct parm_table[] = { {"fstype", P_STRING, P_LOCAL, &sDefault.fstype, NULL, NULL, FLAG_SHARE}, {"panic action", P_STRING, P_GLOBAL, &Globals.szPanicAction, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"hide local users", P_BOOL, P_GLOBAL, &Globals.bHideLocalUsers, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, - {"msdfs proxy", P_STRING, P_LOCAL, &sDefault.szMSDfsProxy, NULL, NULL, FLAG_SHARE}, {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"Winbind options", P_SEP, P_SEPARATOR}, {"winbind uid", P_STRING, P_GLOBAL, &Globals.szWinbindUID, handle_winbind_uid, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"winbind gid", P_STRING, P_GLOBAL, &Globals.szWinbindGID, handle_winbind_gid, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"template homedir", P_STRING, P_GLOBAL, &Globals.szTemplateHomedir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"template shell", P_STRING, P_GLOBAL, &Globals.szTemplateShell, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"winbind cache time", P_INTEGER, P_GLOBAL, &Globals.winbind_cache_time, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"winbind enum users", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumUsers, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"winbind enum groups", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumGroups, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"winbind use default domain", P_BOOL, P_GLOBAL, &Globals.bWinbindUseDefaultDomain, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} }; @@ -770,123 +574,6 @@ struct parm_struct *lp_parm_table(void) return parm_table; } - -/*************************************************************************** - Initialise the sDefault parameter structure for the printer values. -***************************************************************************/ - -static void init_printer_values(void) -{ - /* choose defaults depending on the type of printing */ - switch (sDefault.iPrinting) { - case PRINT_BSD: - case PRINT_AIX: - case PRINT_LPRNT: - case PRINT_LPROS2: - do_parameter("Lpqcommand", "lpq -P'%p'", NULL); - do_parameter("Lprmcommand", "lprm -P'%p' %j", NULL); - do_parameter("Printcommand", - "lpr -r -P'%p' %s", NULL); - break; - - case PRINT_LPRNG: - case PRINT_PLP: - do_parameter("Lpqcommand", "lpq -P'%p'", NULL); - do_parameter("Lprmcommand", "lprm -P'%p' %j", NULL); - do_parameter("Printcommand", - "lpr -r -P'%p' %s", NULL); - do_parameter("Queuepausecommand", - "lpc stop '%p'", NULL); - do_parameter("Queueresumecommand", - "lpc start '%p'", NULL); - do_parameter("Lppausecommand", - "lpc hold '%p' %j", NULL); - do_parameter("Lpresumecommand", - "lpc release '%p' %j", NULL); - break; - - case PRINT_CUPS: -#ifdef HAVE_CUPS - do_parameter("Lpqcommand", "", NULL); - do_parameter("Lprmcommand", "", NULL); - do_parameter("Printcommand", "", NULL); - do_parameter("Lppausecommand", "", NULL); - do_parameter("Lpresumecommand", "", NULL); - do_parameter("Queuepausecommand", "", NULL); - do_parameter("Queueresumecommand", "", NULL); - - do_parameter("Printcapname", "cups", NULL); -#else - do_parameter("Lpqcommand", - "/usr/bin/lpstat -o '%p'", NULL); - do_parameter("Lprmcommand", - "/usr/bin/cancel '%p-%j'", NULL); - do_parameter("Printcommand", - "/usr/bin/lp -d '%p' %s; rm %s", NULL); - do_parameter("Lppausecommand", - "lp -i '%p-%j' -H hold", NULL); - do_parameter("Lpresumecommand", - "lp -i '%p-%j' -H resume", NULL); - do_parameter("Queuepausecommand", - "/usr/bin/disable '%p'", NULL); - do_parameter("Queueresumecommand", - "/usr/bin/enable '%p'", NULL); - do_parameter("Printcapname", "lpstat", NULL); -#endif /* HAVE_CUPS */ - break; - - case PRINT_SYSV: - case PRINT_HPUX: - do_parameter("Lpqcommand", "lpstat -o%p", NULL); - do_parameter("Lprmcommand", "cancel %p-%j", NULL); - do_parameter("Printcommand", - "lp -c -d%p %s; rm %s", NULL); - do_parameter("Queuepausecommand", - "disable %p", NULL); - do_parameter("Queueresumecommand", - "enable %p", NULL); -#ifndef HPUX - do_parameter("Lppausecommand", - "lp -i %p-%j -H hold", NULL); - do_parameter("Lpresumecommand", - "lp -i %p-%j -H resume", NULL); -#endif /* HPUX */ - break; - - case PRINT_QNX: - do_parameter("Lpqcommand", "lpq -P%p", NULL); - do_parameter("Lprmcommand", "lprm -P%p %j", NULL); - do_parameter("Printcommand", "lp -r -P%p %s", NULL); - break; - - case PRINT_SOFTQ: - do_parameter("Lpqcommand", "qstat -l -d%p", NULL); - do_parameter("Lprmcommand", - "qstat -s -j%j -c", NULL); - do_parameter("Printcommand", - "lp -d%p -s %s; rm %s", NULL); - do_parameter("Lppausecommand", - "qstat -s -j%j -h", NULL); - do_parameter("Lpresumecommand", - "qstat -s -j%j -r", NULL); - break; -#ifdef DEVELOPER - case PRINT_TEST: - case PRINT_VLP: - do_parameter("Printcommand", "vlp print %p %s", NULL); - do_parameter("Lpqcommand", "vlp lpq %p", NULL); - do_parameter("Lprmcommand", "vlp lprm %p %j", NULL); - do_parameter("Lppausecommand", "vlp lppause %p %j", NULL); - do_parameter("Lpresumecommand", "vlp lpresum %p %j", NULL); - do_parameter("Queuepausecommand", "vlp queuepause %p", NULL); - do_parameter("Queueresumecommand", "vlp queueresume %p", NULL); - break; -#endif /* DEVELOPER */ - - } -} - - /*************************************************************************** Initialise the global parameter structure. ***************************************************************************/ @@ -920,8 +607,6 @@ static void init_globals(void) do_parameter("max protocol", "NT1", NULL); do_parameter("name resolve order", "lmhosts wins host bcast", NULL); - init_printer_values(); - do_parameter("fstype", FSTYPE_STRING, NULL); do_parameter("ntvfs handler", "unixuid default", NULL); do_parameter("max connections", "-1", NULL); @@ -942,8 +627,6 @@ static void init_globals(void) keep regedt32 from popping up an annoying dialog. */ do_parameter("registry:HKEY_USERS", "hku.ldb", NULL); - do_parameter("guest account", GUEST_ACCOUNT, NULL); - /* using UTF8 by default allows us to support all chars */ do_parameter("unix charset", "UTF8", NULL); @@ -955,9 +638,6 @@ static void init_globals(void) */ do_parameter("passwd chat", DEFAULT_PASSWD_CHAT, NULL); - do_parameter("passwd program", "", NULL); - do_parameter("printcap name", PRINTCAP_NAME, NULL); - do_parameter("pid directory", dyn_PIDDIR, NULL); do_parameter("lock dir", dyn_LOCKDIR, NULL); do_parameter("ncalrpc dir", dyn_NCALRPCDIR, NULL); @@ -969,20 +649,11 @@ static void init_globals(void) DEFAULT_MAJOR_VERSION, DEFAULT_MINOR_VERSION); - do_parameter("logon drive", "", NULL); - - do_parameter("logon home", "\\\\%N\\%U", NULL); - do_parameter("logon path", "\\\\%N\\%U\\profile", NULL); do_parameter("password server", "*", NULL); - do_parameter("load printers", "True", NULL); - do_parameter("max mux", "50", NULL); do_parameter("max xmit", "12288", NULL); - do_parameter("lpqcachetime", "10", NULL); - do_parameter("DisableSpoolss", "False", NULL); do_parameter("password level", "0", NULL); - do_parameter("username level", "0", NULL); do_parameter("LargeReadwrite", "True", NULL); do_parameter("minprotocol", "CORE", NULL); do_parameter("security", "USER", NULL); @@ -992,58 +663,25 @@ static void init_globals(void) do_parameter("WriteRaw", "True", NULL); do_parameter("NullPasswords", "False", NULL); do_parameter("ObeyPamRestrictions", "False", NULL); - do_parameter("lm announce", "Auto", NULL); - do_parameter("lm interval", "60", NULL); do_parameter("announce as", "NT SERVER", NULL); do_parameter("TimeServer", "False", NULL); do_parameter("BindInterfacesOnly", "False", NULL); - do_parameter("PamPasswordChange", "False", NULL); do_parameter("Unicode", "True", NULL); - do_parameter("restrict anonymous", "0", NULL); do_parameter("ClientLanManAuth", "True", NULL); do_parameter("LanmanAuth", "True", NULL); do_parameter("NTLMAuth", "True", NULL); - do_parameter("enhanced browsing", "True", NULL); - do_parameter("LockSpinCount", "3", NULL); - do_parameter("LockSpinTime", "10", NULL); -#ifdef MMAP_BLACKLIST - do_parameter("UseMmap", "False", NULL); -#else - do_parameter("UseMmap", "True", NULL); -#endif do_parameter("UnixExtensions", "False", NULL); - /* hostname lookups can be very expensive and are broken on - a large number of sites (tridge) */ - do_parameter("HostnameLookups", "False", NULL); - do_parameter("PreferredMaster", "Auto", NULL); - do_parameter("os level", "20", NULL); do_parameter("LocalMaster", "True", NULL); do_parameter("DomainMaster", "Auto", NULL); /* depending on bDomainLogons */ do_parameter("DomainLogons", "False", NULL); do_parameter("WINSsupport", "False", NULL); - do_parameter("WINSproxy", "False", NULL); - do_parameter("DNSproxy", "True", NULL); - - do_parameter("AllowTrustedDomains", "True", NULL); - - do_parameter("TemplateShell", "/bin/false", NULL); - do_parameter("TemplateHomedir", "/home/%D/%U", NULL); do_parameter("WinbindSeparator", "\\", NULL); - do_parameter("winbind cache time", "15", NULL); - do_parameter("WinbindEnumUsers", "True", NULL); - do_parameter("WinbindEnumGroups", "True", NULL); - do_parameter("WinbindUseDefaultDomain", "False", NULL); - - do_parameter("IDMapBackend", "tdb", NULL); - - do_parameter("name cache timeout", "660", NULL); /* In seconds */ - do_parameter("client signing", "Yes", NULL); do_parameter("server signing", "auto", NULL); @@ -1185,7 +823,6 @@ FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) -FN_GLOBAL_STRING(lp_printcapname, &Globals.szPrintcapname) FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) FN_GLOBAL_STRING(lp_setupdir, &Globals.szSetupDir) FN_GLOBAL_STRING(lp_ncalrpc_dir, &Globals.ncalrpc_dir) @@ -1193,56 +830,28 @@ FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) FN_GLOBAL_LIST(lp_server_services, &Globals.server_services) FN_GLOBAL_STRING(lp_ntptr_providor, &Globals.ntptr_providor) -FN_GLOBAL_STRING(lp_rootdir, &Globals.szRootdir) -FN_GLOBAL_STRING(lp_defaultservice, &Globals.szDefaultService) -FN_GLOBAL_STRING(lp_hosts_equiv, &Globals.szHostsEquiv) FN_GLOBAL_STRING(lp_auto_services, &Globals.szAutoServices) -FN_GLOBAL_STRING(lp_passwd_program, &Globals.szPasswdProgram) FN_GLOBAL_STRING(lp_passwd_chat, &Globals.szPasswdChat) FN_GLOBAL_LIST(lp_passwordserver, &Globals.szPasswordServers) FN_GLOBAL_LIST(lp_name_resolve_order, &Globals.szNameResolveOrder) FN_GLOBAL_STRING(lp_realm, &Globals.szRealm) -FN_GLOBAL_STRING(lp_ads_server, &Globals.szADSserver) FN_GLOBAL_STRING(lp_socket_options, &Globals.socket_options) FN_GLOBAL_STRING(lp_workgroup, &Globals.szWorkgroup) FN_GLOBAL_STRING(lp_netbios_name, &Globals.szNetbiosName) FN_GLOBAL_STRING(lp_netbios_scope, &Globals.szNetbiosScope) -FN_GLOBAL_CONST_STRING(lp_logon_script, &Globals.szLogonScript) -FN_GLOBAL_CONST_STRING(lp_logon_path, &Globals.szLogonPath) -FN_GLOBAL_CONST_STRING(lp_logon_drive, &Globals.szLogonDrive) -FN_GLOBAL_CONST_STRING(lp_logon_home, &Globals.szLogonHome) -FN_GLOBAL_STRING(lp_remote_announce, &Globals.szRemoteAnnounce) -FN_GLOBAL_STRING(lp_remote_browse_sync, &Globals.szRemoteBrowseSync) FN_GLOBAL_LIST(lp_wins_server_list, &Globals.szWINSservers) FN_GLOBAL_LIST(lp_interfaces, &Globals.szInterfaces) FN_GLOBAL_STRING(lp_socket_address, &Globals.szSocketAddress) FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases) -FN_GLOBAL_LIST(lp_preload_modules, &Globals.szPreloadModules) FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) -FN_GLOBAL_STRING(lp_adduser_script, &Globals.szAddUserScript) -FN_GLOBAL_CONST_STRING(lp_guestaccount, &Globals.szGuestaccount) -FN_GLOBAL_STRING(lp_addmachine_script, &Globals.szAddMachineScript) - -FN_GLOBAL_STRING(lp_wins_hook, &Globals.szWINSHook) -FN_GLOBAL_STRING(lp_wins_partners, &Globals.szWINSPartners) -FN_GLOBAL_STRING(lp_template_homedir, &Globals.szTemplateHomedir) -FN_GLOBAL_STRING(lp_template_shell, &Globals.szTemplateShell) FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) -FN_GLOBAL_BOOL(lp_winbind_enum_users, &Globals.bWinbindEnumUsers) -FN_GLOBAL_BOOL(lp_winbind_enum_groups, &Globals.bWinbindEnumGroups) -FN_GLOBAL_BOOL(lp_winbind_use_default_domain, &Globals.bWinbindUseDefaultDomain) -FN_GLOBAL_STRING(lp_idmap_backend, &Globals.szIDMapBackend) FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) -FN_GLOBAL_BOOL(lp_dns_proxy, &Globals.bDNSproxy) FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) -FN_GLOBAL_BOOL(lp_we_are_a_wins_server, &Globals.bWINSsupport) -FN_GLOBAL_BOOL(lp_wins_proxy, &Globals.bWINSproxy) FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) FN_GLOBAL_BOOL(lp_domain_logons, &Globals.bDomainLogons) -FN_GLOBAL_BOOL(lp_load_printers, &Globals.bLoadPrinters) FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw) FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite) FN_GLOBAL_BOOL(lp_writeraw, &Globals.bWriteRaw) @@ -1251,97 +860,53 @@ FN_GLOBAL_BOOL(lp_obey_pam_restrictions, &Globals.bObeyPamRestrictions) FN_GLOBAL_BOOL(lp_encrypted_passwords, &Globals.bEncryptPasswords) static FN_GLOBAL_BOOL(lp_time_server, &Globals.bTimeServer) FN_GLOBAL_BOOL(lp_bind_interfaces_only, &Globals.bBindInterfacesOnly) -FN_GLOBAL_BOOL(lp_pam_password_change, &Globals.bPamPasswordChange) FN_GLOBAL_BOOL(lp_unicode, &Globals.bUnicode) FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport) -FN_GLOBAL_BOOL(lp_allow_trusted_domains, &Globals.bAllowTrustedDomains) -FN_GLOBAL_INTEGER(lp_restrict_anonymous, &Globals.restrict_anonymous) -FN_GLOBAL_BOOL(lp_plaintext_auth, &Globals.bPlaintextAuth) FN_GLOBAL_BOOL(lp_lanman_auth, &Globals.bLanmanAuth) FN_GLOBAL_BOOL(lp_ntlm_auth, &Globals.bNTLMAuth) FN_GLOBAL_BOOL(lp_client_plaintext_auth, &Globals.bClientPlaintextAuth) FN_GLOBAL_BOOL(lp_client_lanman_auth, &Globals.bClientLanManAuth) FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, &Globals.bClientNTLMv2Auth) FN_GLOBAL_BOOL(lp_host_msdfs, &Globals.bHostMSDfs) -FN_GLOBAL_BOOL(lp_enhanced_browsing, &Globals.enhanced_browsing) -FN_GLOBAL_BOOL(lp_use_mmap, &Globals.bUseMmap) FN_GLOBAL_BOOL(lp_unix_extensions, &Globals.bUnixExtensions) FN_GLOBAL_BOOL(lp_use_spnego, &Globals.bUseSpnego) -FN_GLOBAL_BOOL(lp_hostname_lookups, &Globals.bHostnameLookups) FN_GLOBAL_BOOL(lp_rpc_big_endian, &Globals.bRpcBigEndian) -FN_GLOBAL_INTEGER(lp_os_level, &Globals.os_level) -FN_GLOBAL_INTEGER(lp_max_ttl, &Globals.max_ttl) FN_GLOBAL_INTEGER(lp_max_wins_ttl, &Globals.max_wins_ttl) FN_GLOBAL_INTEGER(lp_min_wins_ttl, &Globals.min_wins_ttl) -FN_GLOBAL_INTEGER(lp_time_offset, &Globals.time_offset) FN_GLOBAL_INTEGER(lp_maxmux, &Globals.max_mux) FN_GLOBAL_INTEGER(lp_max_xmit, &Globals.max_xmit) FN_GLOBAL_INTEGER(lp_passwordlevel, &Globals.pwordlevel) -FN_GLOBAL_INTEGER(lp_usernamelevel, &Globals.unamelevel) FN_GLOBAL_INTEGER(lp_maxprotocol, &Globals.maxprotocol) FN_GLOBAL_INTEGER(lp_minprotocol, &Globals.minprotocol) FN_GLOBAL_INTEGER(lp_security, &Globals.security) FN_GLOBAL_LIST(lp_auth_methods, &Globals.AuthMethods) FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) -FN_GLOBAL_INTEGER(lp_lpqcachetime, &Globals.lpqcachetime) -FN_GLOBAL_INTEGER(lp_disable_spoolss, &Globals.bDisableSpoolss) static FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) -FN_GLOBAL_INTEGER(lp_lm_announce, &Globals.lm_announce) -FN_GLOBAL_INTEGER(lp_lm_interval, &Globals.lm_interval) -FN_GLOBAL_INTEGER(lp_machine_password_timeout, &Globals.machine_password_timeout) -FN_GLOBAL_INTEGER(lp_lock_spin_count, &Globals.iLockSpinCount) -FN_GLOBAL_INTEGER(lp_lock_sleep_time, &Globals.iLockSpinTime) FN_GLOBAL_LIST(lp_js_include, &Globals.jsInclude) FN_LOCAL_STRING(lp_servicename, szService) FN_LOCAL_CONST_STRING(lp_const_servicename, szService) FN_LOCAL_STRING(lp_pathname, szPath) -FN_LOCAL_STRING(lp_username, szUsername) -FN_LOCAL_LIST(lp_invalid_users, szInvalidUsers) -FN_LOCAL_LIST(lp_valid_users, szValidUsers) -FN_LOCAL_LIST(lp_admin_users, szAdminUsers) -FN_LOCAL_STRING(lp_printcommand, szPrintcommand) -FN_LOCAL_STRING(lp_lpqcommand, szLpqcommand) -FN_LOCAL_STRING(lp_lprmcommand, szLprmcommand) -FN_LOCAL_STRING(lp_lppausecommand, szLppausecommand) -FN_LOCAL_STRING(lp_lpresumecommand, szLpresumecommand) -FN_LOCAL_STRING(lp_queuepausecommand, szQueuepausecommand) -FN_LOCAL_STRING(lp_queueresumecommand, szQueueresumecommand) static FN_LOCAL_STRING(_lp_printername, szPrintername) FN_LOCAL_LIST(lp_hostsallow, szHostsallow) FN_LOCAL_LIST(lp_hostsdeny, szHostsdeny) FN_LOCAL_STRING(lp_comment, comment) FN_LOCAL_STRING(lp_fstype, fstype) -FN_LOCAL_STRING(lp_msdfs_proxy, szMSDfsProxy) static FN_LOCAL_STRING(lp_volume, volume) FN_LOCAL_LIST(lp_ntvfs_handler, ntvfs_handler) FN_LOCAL_BOOL(lp_msdfs_root, bMSDfsRoot) -FN_LOCAL_BOOL(lp_autoloaded, autoloaded) FN_LOCAL_BOOL(lp_browseable, bBrowseable) FN_LOCAL_BOOL(lp_readonly, bRead_only) -FN_LOCAL_BOOL(lp_guest_ok, bGuest_ok) -FN_LOCAL_BOOL(lp_guest_only, bGuest_only) FN_LOCAL_BOOL(lp_print_ok, bPrint_ok) FN_LOCAL_BOOL(lp_map_hidden, bMap_hidden) FN_LOCAL_BOOL(lp_map_archive, bMap_archive) -FN_LOCAL_BOOL(lp_locking, bLocking) FN_LOCAL_BOOL(lp_strict_locking, bStrictLocking) -FN_LOCAL_BOOL(lp_posix_locking, bPosixLocking) FN_LOCAL_BOOL(lp_strict_sync, bStrictSync) FN_LOCAL_BOOL(lp_ci_filesystem, bCIFileSystem) -FN_LOCAL_BOOL(lp_share_modes, bShareModes) -FN_LOCAL_BOOL(lp_oplocks, bOpLocks) -FN_LOCAL_BOOL(lp_level2_oplocks, bLevel2OpLocks) -FN_LOCAL_BOOL(lp_onlyuser, bOnlyUser) FN_LOCAL_BOOL(lp_map_system, bMap_system) FN_LOCAL_INTEGER(lp_max_connections, iMaxConnections) -FN_LOCAL_INTEGER(lp_minprintspace, iMinPrintSpace) -FN_LOCAL_INTEGER(lp_printing, iPrinting) FN_LOCAL_INTEGER(lp_csc_policy, iCSCPolicy) -FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time) -FN_GLOBAL_BOOL(lp_hide_local_users, &Globals.bHideLocalUsers) -FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout) FN_GLOBAL_INTEGER(lp_server_signing, &Globals.server_signing) FN_GLOBAL_INTEGER(lp_client_signing, &Globals.client_signing) @@ -1700,7 +1265,7 @@ int lp_add_service(const char *pszService, int iDefaultService) Add the IPC service. ***************************************************************************/ -static BOOL lp_add_hidden(const char *name, const char *fstype, BOOL guest_ok) +static BOOL lp_add_hidden(const char *name, const char *fstype) { pstring comment; int i = add_a_service(&sDefault, name); @@ -1712,14 +1277,11 @@ static BOOL lp_add_hidden(const char *name, const char *fstype, BOOL guest_ok) "%s Service (%s)", fstype, Globals.szServerString); string_set(&ServicePtrs[i]->szPath, tmpdir()); - string_set(&ServicePtrs[i]->szUsername, ""); string_set(&ServicePtrs[i]->comment, comment); string_set(&ServicePtrs[i]->fstype, fstype); ServicePtrs[i]->iMaxConnections = -1; ServicePtrs[i]->bAvailable = True; ServicePtrs[i]->bRead_only = True; - ServicePtrs[i]->bGuest_only = False; - ServicePtrs[i]->bGuest_ok = guest_ok; ServicePtrs[i]->bPrint_ok = False; ServicePtrs[i]->bBrowseable = False; @@ -1755,10 +1317,6 @@ BOOL lp_add_printer(const char *pszPrintername, int iDefaultService) ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; /* Printers cannot be read_only. */ ServicePtrs[i]->bRead_only = False; - /* No share modes on printer services. */ - ServicePtrs[i]->bShareModes = False; - /* No oplocks on printer services. */ - ServicePtrs[i]->bOpLocks = False; /* Printer services must be printable. */ ServicePtrs[i]->bPrint_ok = True; @@ -2857,24 +2415,6 @@ static void lp_add_auto_services(const char *str) return; } -/*************************************************************************** - Auto-load one printer. -***************************************************************************/ - -void lp_add_one_printer(char *name, char *comment) -{ - int printers = lp_servicenumber(PRINTERS_NAME); - int i; - - if (lp_servicenumber(name) < 0) { - lp_add_printer(name, printers); - if ((i = lp_servicenumber(name)) >= 0) { - string_set(&ServicePtrs[i]->comment, comment); - ServicePtrs[i]->autoloaded = True; - } - } -} - /*************************************************************************** Announce ourselves as a print server. ***************************************************************************/ @@ -3027,10 +2567,8 @@ BOOL lp_load(void) lp_add_auto_services(lp_auto_services()); - /* When 'restrict anonymous = 2' guest connections to ipc$ - are denied */ - lp_add_hidden("IPC$", "IPC", (lp_restrict_anonymous() < 2)); - lp_add_hidden("ADMIN$", "DISK", False); + lp_add_hidden("IPC$", "IPC"); + lp_add_hidden("ADMIN$", "DISK"); set_server_role(); set_default_server_announce_type(); -- cgit From 7e3838dd2d8647e9c621a08c61a2a22ef1d94bb2 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 27 Aug 2005 15:13:15 +0000 Subject: r9685: Add tests for samba3sam mapping module Fix a couple of bugs Move samba3sam backend to lib/ldb/ Remove some more unused parameters (This used to be commit 7f864d446d6af7cfd9fb8dbc496a29b36ec57ce9) --- source4/param/loadparm.c | 140 +---------------------------------------------- 1 file changed, 3 insertions(+), 137 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 3728881e33..3f6a22d404 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -137,9 +137,6 @@ typedef struct char **dcerpc_ep_servers; char **server_services; char *ntptr_providor; - char *szWinbindUID; - char *szWinbindGID; - char *szNonUnixAccountRange; char *szWinbindSeparator; char *swat_directory; BOOL tls_enabled; @@ -284,9 +281,6 @@ static int default_server_announce; /* prototypes for the special type handlers */ static BOOL handle_include(const char *pszParmValue, char **ptr); static BOOL handle_copy(const char *pszParmValue, char **ptr); -static BOOL handle_winbind_uid(const char *pszParmValue, char **ptr); -static BOOL handle_winbind_gid(const char *pszParmValue, char **ptr); -static BOOL handle_non_unix_account_range(const char *pszParmValue, char **ptr); static void set_server_role(void); static void set_default_server_announce_type(void); @@ -420,7 +414,6 @@ static struct parm_struct parm_table[] = { {"spoolss database", P_STRING, P_GLOBAL, &Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"wins database", P_STRING, P_GLOBAL, &Globals.szWINS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -555,12 +548,7 @@ static struct parm_struct parm_table[] = { {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - - {"Winbind options", P_SEP, P_SEPARATOR}, - - {"winbind uid", P_STRING, P_GLOBAL, &Globals.szWinbindUID, handle_winbind_uid, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"winbind gid", P_STRING, P_GLOBAL, &Globals.szWinbindGID, handle_winbind_gid, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} }; @@ -680,7 +668,7 @@ static void init_globals(void) do_parameter("DomainLogons", "False", NULL); do_parameter("WINSsupport", "False", NULL); - do_parameter("WinbindSeparator", "\\", NULL); + do_parameter("winbind separator", "\\", NULL); do_parameter("client signing", "Yes", NULL); do_parameter("server signing", "auto", NULL); @@ -821,6 +809,7 @@ FN_GLOBAL_STRING(lp_smb_passwd_file, &Globals.szSMBPasswdFile) FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) +FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) @@ -845,9 +834,6 @@ FN_GLOBAL_STRING(lp_socket_address, &Globals.szSocketAddress) FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases) FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) - -FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) - FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) @@ -1684,126 +1670,6 @@ static BOOL handle_copy(const char *pszParmValue, char **ptr) return (bRetval); } -/*************************************************************************** - Handle winbind/non unix account uid and gid allocation parameters. The format of these - parameters is: - - [global] - - winbind uid = 1000-1999 - winbind gid = 700-899 - - We only do simple parsing checks here. The strings are parsed into useful - structures in the winbind daemon code. - -***************************************************************************/ - -/* Some lp_ routines to return winbind [ug]id information */ - -static uid_t winbind_uid_low, winbind_uid_high; -static gid_t winbind_gid_low, winbind_gid_high; -static uint32_t non_unix_account_low, non_unix_account_high; - -BOOL lp_winbind_uid(uid_t *low, uid_t *high) -{ - if (winbind_uid_low == 0 || winbind_uid_high == 0) - return False; - - if (low) - *low = winbind_uid_low; - - if (high) - *high = winbind_uid_high; - - return True; -} - -BOOL lp_winbind_gid(gid_t *low, gid_t *high) -{ - if (winbind_gid_low == 0 || winbind_gid_high == 0) - return False; - - if (low) - *low = winbind_gid_low; - - if (high) - *high = winbind_gid_high; - - return True; -} - -BOOL lp_non_unix_account_range(uint32_t *low, uint32_t *high) -{ - if (non_unix_account_low == 0 || non_unix_account_high == 0) - return False; - - if (low) - *low = non_unix_account_low; - - if (high) - *high = non_unix_account_high; - - return True; -} - -/* Do some simple checks on "winbind [ug]id" parameter values */ - -static BOOL handle_winbind_uid(const char *pszParmValue, char **ptr) -{ - uint32_t low, high; - - if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low) - return False; - - /* Parse OK */ - - string_set(ptr, pszParmValue); - - winbind_uid_low = low; - winbind_uid_high = high; - - return True; -} - -static BOOL handle_winbind_gid(const char *pszParmValue, char **ptr) -{ - uint32_t low, high; - - if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low) - return False; - - /* Parse OK */ - - string_set(ptr, pszParmValue); - - winbind_gid_low = low; - winbind_gid_high = high; - - return True; -} - -/*************************************************************************** - Do some simple checks on "non unix account range" parameter values. -***************************************************************************/ - -static BOOL handle_non_unix_account_range(const char *pszParmValue, char **ptr) -{ - uint32_t low, high; - - if (sscanf(pszParmValue, "%u-%u", &low, &high) != 2 || high < low) - return False; - - /* Parse OK */ - - string_set(ptr, pszParmValue); - - non_unix_account_low = low; - non_unix_account_high = high; - - return True; -} - - /*************************************************************************** Initialise a copymap. ***************************************************************************/ -- cgit From f281d7782451efe4211e6e18435ed367c137ea06 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sat, 17 Sep 2005 09:46:20 +0000 Subject: r10291: The patch optionally (off by default, not available in all cases) allows Samba to use the target principal name supplied in the mechTokenMIC of an SPNEGO negTokenInit. This isn't a great idea for security reasons, but is how Samba3 behaves, and allows kerberos to function more often in some environments. It is only available for CIFS session setups, due to the ordering of the exchange. Andrew Bartlett (This used to be commit f6a645644127ae695a9f7288e0a469f2eb7f3066) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 3f6a22d404..244ce27419 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -184,6 +184,7 @@ typedef struct BOOL bClientPlaintextAuth; BOOL bClientLanManAuth; BOOL bClientNTLMv2Auth; + BOOL client_use_spnego_principal; BOOL bHostMSDfs; BOOL bUnicode; BOOL bUnixExtensions; @@ -422,6 +423,7 @@ static struct parm_struct parm_table[] = { {"client NTLMv2 auth", P_BOOL, P_GLOBAL, &Globals.bClientNTLMv2Auth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"client lanman auth", P_BOOL, P_GLOBAL, &Globals.bClientLanManAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"client plaintext auth", P_BOOL, P_GLOBAL, &Globals.bClientPlaintextAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client use spnego principal", P_BOOL, P_GLOBAL, &Globals.client_use_spnego_principal, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"read only", P_BOOL, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE}, @@ -659,6 +661,7 @@ static void init_globals(void) do_parameter("ClientLanManAuth", "True", NULL); do_parameter("LanmanAuth", "True", NULL); do_parameter("NTLMAuth", "True", NULL); + do_parameter("client use spnego principal", "False", NULL); do_parameter("UnixExtensions", "False", NULL); @@ -853,6 +856,7 @@ FN_GLOBAL_BOOL(lp_ntlm_auth, &Globals.bNTLMAuth) FN_GLOBAL_BOOL(lp_client_plaintext_auth, &Globals.bClientPlaintextAuth) FN_GLOBAL_BOOL(lp_client_lanman_auth, &Globals.bClientLanManAuth) FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, &Globals.bClientNTLMv2Auth) +FN_GLOBAL_BOOL(lp_client_use_spnego_principal, &Globals.client_use_spnego_principal) FN_GLOBAL_BOOL(lp_host_msdfs, &Globals.bHostMSDfs) FN_GLOBAL_BOOL(lp_unix_extensions, &Globals.bUnixExtensions) FN_GLOBAL_BOOL(lp_use_spnego, &Globals.bUseSpnego) -- cgit From a388d683de520f26ada240bfded2c09c067163fa Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 19 Sep 2005 11:55:34 +0000 Subject: r10314: Apply the controvertial 'server role =' patch after discussion on the list: This patch removes the 'domain logon' and 'domain master' controls from Samba4, in favour of a 'server role =' that users can actually understand. We can expand the list of roles as needed, and nobody has to figure out what a 'domain master' actually means. Andrew Bartlett (This used to be commit 31e755c2ced64dbd2681d5f6ef021a87dbeda689) --- source4/param/loadparm.c | 101 +++++++++++------------------------------------ 1 file changed, 22 insertions(+), 79 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 244ce27419..184d63d7b9 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -101,6 +101,8 @@ struct param_opt { */ typedef struct { + int server_role; + char **smb_ports; char *dos_charset; char *unix_charset; @@ -164,8 +166,6 @@ typedef struct BOOL bWINSsupport; BOOL bLocalMaster; BOOL bPreferredMaster; - BOOL bDomainMaster; - BOOL bDomainLogons; BOOL bEncryptPasswords; BOOL bNullPasswords; BOOL bObeyPamRestrictions; @@ -274,7 +274,6 @@ static service **ServicePtrs = NULL; static int iNumServices = 0; static int iServiceIndex = 0; static BOOL bInGlobalSection = True; -static int server_role; static int default_server_announce; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) @@ -283,7 +282,6 @@ static int default_server_announce; static BOOL handle_include(const char *pszParmValue, char **ptr); static BOOL handle_copy(const char *pszParmValue, char **ptr); -static void set_server_role(void); static void set_default_server_announce_type(void); static const struct enum_list enum_protocol[] = { @@ -368,6 +366,14 @@ static const struct enum_list enum_smb_signing_vals[] = { {-1, NULL} }; +static const struct enum_list enum_server_role[] = { + {ROLE_STANDALONE, "standalone"}, + {ROLE_DOMAIN_MEMBER, "member server"}, + {ROLE_DOMAIN_BDC, "bdc"}, + {ROLE_DOMAIN_PDC, "pdc"}, + {-1, NULL} +}; + /* Note: We do not initialise the defaults union - it is not allowed in ANSI C * @@ -382,6 +388,8 @@ static const struct enum_list enum_smb_signing_vals[] = { static struct parm_struct parm_table[] = { {"Base Options", P_SEP, P_SEPARATOR}, + {"server role", P_ENUM, P_GLOBAL, &Globals.server_role, NULL, enum_server_role, FLAG_BASIC}, + {"dos charset", P_STRING, P_GLOBAL, &Globals.dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"unix charset", P_STRING, P_GLOBAL, &Globals.unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"ncalrpc dir", P_STRING, P_GLOBAL, &Globals.ncalrpc_dir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -503,14 +511,12 @@ static struct parm_struct parm_table[] = { {"Logon Options", P_SEP, P_SEPARATOR}, - {"domain logons", P_BOOL, P_GLOBAL, &Globals.bDomainLogons, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"Browse Options", P_SEP, P_SEPARATOR}, {"preferred master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"prefered master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_HIDE}, {"local master", P_BOOL, P_GLOBAL, &Globals.bLocalMaster, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"domain master", P_ENUM, P_GLOBAL, &Globals.bDomainMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"browseable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_HIDE}, @@ -585,6 +591,8 @@ static void init_globals(void) do_parameter("config file", dyn_CONFIGFILE, NULL); + do_parameter("server role", "standalone", NULL); + /* options that can be set on the command line must be initialised via the slower do_parameter() to ensure that FLAG_CMDLINE is obeyed */ #ifdef TCP_NODELAY @@ -667,8 +675,7 @@ static void init_globals(void) do_parameter("PreferredMaster", "Auto", NULL); do_parameter("LocalMaster", "True", NULL); - do_parameter("DomainMaster", "Auto", NULL); /* depending on bDomainLogons */ - do_parameter("DomainLogons", "False", NULL); + do_parameter("WINSsupport", "False", NULL); do_parameter("winbind separator", "\\", NULL); @@ -791,6 +798,7 @@ static const char *lp_string(const char *s) #define FN_LOCAL_INTEGER(fn_name,val) \ int fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} +FN_GLOBAL_INTEGER(lp_server_role, &Globals.server_role) FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) FN_GLOBAL_INTEGER(lp_dgram_port, &Globals.dgram_port) @@ -840,7 +848,6 @@ FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) -FN_GLOBAL_BOOL(lp_domain_logons, &Globals.bDomainLogons) FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw) FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite) FN_GLOBAL_BOOL(lp_writeraw, &Globals.bWriteRaw) @@ -2333,63 +2340,6 @@ void lp_killservice(int iServiceIn) } } -/******************************************************************* - Set the server type we will announce as via nmbd. -********************************************************************/ - -static void set_server_role(void) -{ - server_role = ROLE_STANDALONE; - - switch (lp_security()) { - case SEC_SHARE: - if (lp_domain_logons()) - DEBUG(0, ("Server's Role (logon server) conflicts with share-level security\n")); - break; - case SEC_SERVER: - case SEC_DOMAIN: - case SEC_ADS: - if (lp_domain_logons()) { - if (Globals.bDomainMaster) /* auto or yes */ - server_role = ROLE_DOMAIN_PDC; - else - server_role = ROLE_DOMAIN_BDC; - break; - } - server_role = ROLE_DOMAIN_MEMBER; - break; - case SEC_USER: - if (lp_domain_logons()) { - - if (Globals.bDomainMaster) /* auto or yes */ - server_role = ROLE_DOMAIN_PDC; - else - server_role = ROLE_DOMAIN_BDC; - } - break; - default: - DEBUG(0, ("Server's Role undefined due to unknown security mode\n")); - break; - } - - DEBUG(10, ("set_server_role: role = ")); - - switch(server_role) { - case ROLE_STANDALONE: - DEBUGADD(10, ("ROLE_STANDALONE\n")); - break; - case ROLE_DOMAIN_MEMBER: - DEBUGADD(10, ("ROLE_DOMAIN_MEMBER\n")); - break; - case ROLE_DOMAIN_BDC: - DEBUGADD(10, ("ROLE_DOMAIN_BDC\n")); - break; - case ROLE_DOMAIN_PDC: - DEBUGADD(10, ("ROLE_DOMAIN_PDC\n")); - break; - } -} - /*************************************************************************** Load the services array from the services file. Return True on success, False on failure. @@ -2440,7 +2390,6 @@ BOOL lp_load(void) lp_add_hidden("IPC$", "IPC"); lp_add_hidden("ADMIN$", "DISK"); - set_server_role(); set_default_server_announce_type(); bLoaded = True; @@ -2601,24 +2550,21 @@ static void set_default_server_announce_type(void) } /*********************************************************** - returns role of Samba server + If we are PDC then prefer us as DMB ************************************************************/ -int lp_server_role(void) +BOOL lp_domain_master(void) { - return server_role; + return (lp_server_role() == ROLE_DOMAIN_PDC); } /*********************************************************** If we are PDC then prefer us as DMB ************************************************************/ -BOOL lp_domain_master(void) +BOOL lp_domain_logons(void) { - if (Globals.bDomainMaster == Auto) - return (lp_server_role() == ROLE_DOMAIN_PDC); - - return Globals.bDomainMaster; + return (lp_server_role() == ROLE_DOMAIN_PDC) || (lp_server_role() == ROLE_DOMAIN_BDC); } /*********************************************************** @@ -2627,10 +2573,7 @@ BOOL lp_domain_master(void) BOOL lp_preferred_master(void) { - if (Globals.bPreferredMaster == Auto) - return (lp_local_master() && lp_domain_master()); - - return Globals.bPreferredMaster; + return (lp_local_master() && lp_domain_master()); } /******************************************************************* -- cgit From d2a666acbe04f741387ff4351e3971b24f1c3b14 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 19 Sep 2005 13:26:07 +0000 Subject: r10316: More dynconfig fixes (This used to be commit 0963ab9c148772b961f17ec779213b0eb861e1dd) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 184d63d7b9..8300f4598d 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -55,6 +55,7 @@ #include "includes.h" #include "version.h" #include "dynconfig.h" +#include "pstring.h" #include "system/time.h" #include "system/iconv.h" #include "system/network.h" -- cgit From 8db177b652cdede2f509d6c96d1c99e875c2d284 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 20 Sep 2005 22:10:40 +0000 Subject: r10366: More scons fixes. Building et, asn1, lex and yacc files sort-of works now (This used to be commit 22f18a84242e5e68a2d57b6d7ff77c089ee7434a) --- source4/param/loadparm.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8300f4598d..1ea1ac48cd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -117,7 +117,6 @@ typedef struct char *szPasswdChat; char *szLogFile; char *szConfigFile; - char *szSMBPasswdFile; char *szSAM_URL; char *szSPOOLSS_URL; char *szWINS_URL; @@ -419,12 +418,10 @@ static struct parm_struct parm_table[] = { {"null passwords", P_BOOL, P_GLOBAL, &Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"password server", P_LIST, P_GLOBAL, &Globals.szPasswordServers, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"sam database", P_STRING, P_GLOBAL, &Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"spoolss database", P_STRING, P_GLOBAL, &Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"wins database", P_STRING, P_GLOBAL, &Globals.szWINS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"lanman auth", P_BOOL, P_GLOBAL, &Globals.bLanmanAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -614,7 +611,6 @@ static void init_globals(void) do_parameter("server services", "smb rpc nbt ldap cldap web kdc", NULL); do_parameter("ntptr providor", "simple_ldb", NULL); do_parameter("auth methods", "anonymous sam_ignoredomain", NULL); - do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE, NULL); do_parameter("private dir", dyn_PRIVATE_DIR, NULL); do_parameter("sam database", "sam.ldb", NULL); do_parameter("spoolss database", "spoolss.ldb", NULL); @@ -817,7 +813,6 @@ FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) -FN_GLOBAL_STRING(lp_smb_passwd_file, &Globals.szSMBPasswdFile) FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) -- cgit From 49839f356f493d0de1b719c8c3bfdee4713c0728 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 26 Sep 2005 16:57:08 +0000 Subject: r10513: Reduce some use of pstring. The main reason some parts of the code still use pstring is next_token() now. (This used to be commit a5b88bcd420eb7ae42283293541519e142be36e3) --- source4/param/loadparm.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 1ea1ac48cd..7576b05d83 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -297,11 +297,6 @@ static const struct enum_list enum_protocol[] = { static const struct enum_list enum_security[] = { {SEC_SHARE, "SHARE"}, {SEC_USER, "USER"}, - {SEC_SERVER, "SERVER"}, - {SEC_DOMAIN, "DOMAIN"}, -#ifdef HAVE_ADS - {SEC_ADS, "ADS"}, -#endif {-1, NULL} }; -- cgit From 4abb4797613868e518baafb5f3618e78f67ac05c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 28 Sep 2005 19:56:21 +0000 Subject: r10588: Remove more unused files, macros (This used to be commit d2f80c0457f7404b2cac9df59a400130e9ad025f) --- source4/param/loadparm.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 7576b05d83..18c8d47746 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1485,7 +1485,9 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL pdata = pdata->next; } if (not_added) { - paramo = smb_xmalloc_p(struct param_opt); + paramo = malloc_p(struct param_opt); + if (!paramo) + smb_panic("OOM"); paramo->key = strdup(data->key); paramo->value = strdup(data->value); DLIST_ADD(pserviceDest->param_opt, paramo); @@ -1742,7 +1744,9 @@ static BOOL lp_do_parameter_parametric(int snum, const char *pszParmName, const } } - paramo = smb_xmalloc_p(struct param_opt); + paramo = malloc_p(struct param_opt); + if (!paramo) + smb_panic("OOM"); paramo->key = strdup(name); paramo->value = strdup(pszParmValue); paramo->flags = flags; -- cgit From 305b2b0c492626a0f03a1a53ffba60a94061d94d Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sat, 15 Oct 2005 11:04:46 +0000 Subject: r11089: start the winsreplication task when we run with wins support = yes metze (This used to be commit d49a1d2b15c7d17a5d6928a971fbe87d13686c2d) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 18c8d47746..5957dfc025 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -603,7 +603,7 @@ static void init_globals(void) do_parameter("max connections", "-1", NULL); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup", NULL); - do_parameter("server services", "smb rpc nbt ldap cldap web kdc", NULL); + do_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc", NULL); do_parameter("ntptr providor", "simple_ldb", NULL); do_parameter("auth methods", "anonymous sam_ignoredomain", NULL); do_parameter("private dir", dyn_PRIVATE_DIR, NULL); -- cgit From 0f51ae83f09fa90362cae12a37ca4debc35f8491 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Wed, 19 Oct 2005 13:45:44 +0000 Subject: r11181: Implement wbinfo -s and wbinfo --user-sids. The patch is so large because --user-sids required the extension to trusted domains. Implement "winbind sealed pipes" parameter for debugging purposes. Volker (This used to be commit 3821a17bdb68b2f1389b5a150502c057d28569d2) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 5957dfc025..03c0599871 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -140,6 +140,7 @@ typedef struct char **server_services; char *ntptr_providor; char *szWinbindSeparator; + BOOL bWinbindSealedPipes; char *swat_directory; BOOL tls_enabled; char *tls_keyfile; @@ -550,6 +551,7 @@ static struct parm_struct parm_table[] = { {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"winbind sealed pipes", P_BOOL, P_GLOBAL, &Globals.bWinbindSealedPipes, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} }; @@ -671,6 +673,7 @@ static void init_globals(void) do_parameter("WINSsupport", "False", NULL); do_parameter("winbind separator", "\\", NULL); + do_parameter("winbind sealed pipes", "True", NULL); do_parameter("client signing", "Yes", NULL); do_parameter("server signing", "auto", NULL); @@ -812,6 +815,7 @@ FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) +FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &Globals.bWinbindSealedPipes) FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) -- cgit From 16bbafb7e862016e4c6281c32cc5b25adeae3cfc Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 21 Oct 2005 01:25:55 +0000 Subject: r11239: Use ${REALM} for the realm in rootdse.ldif Add the kpasswd server to our KDC, implementing the 'original' and Microsoft versions of the protocol. This works with the Heimdal kpasswd client, but not with MIT, I think due to ordering issues. It may not be worth the pain to have this code go via GENSEC, as it is very, very tied to krb5. This gets us one step closer to joins from Apple, Samba3 and other similar implementations. Andrew Bartlett (This used to be commit ab5dbbe10a162286aa6694c7e08de43b48e34cdb) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 03c0599871..6395bff182 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -162,6 +162,7 @@ typedef struct int dgram_port; int cldap_port; int krb5_port; + int kpasswd_port; int web_port; char *socket_options; BOOL bWINSsupport; @@ -445,6 +446,7 @@ static struct parm_struct parm_table[] = { {"dgram port", P_INTEGER, P_GLOBAL, &Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"cldap port", P_INTEGER, P_GLOBAL, &Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"krb5 port", P_INTEGER, P_GLOBAL, &Globals.krb5_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"kpasswd port", P_INTEGER, P_GLOBAL, &Globals.kpasswd_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"web port", P_INTEGER, P_GLOBAL, &Globals.web_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"tls enabled", P_BOOL, P_GLOBAL, &Globals.tls_enabled, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"tls keyfile", P_STRING, P_GLOBAL, &Globals.tls_keyfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -685,6 +687,7 @@ static void init_globals(void) do_parameter("dgram port", "138", NULL); do_parameter("cldap port", "389", NULL); do_parameter("krb5 port", "88", NULL); + do_parameter("kpasswd port", "464", NULL); do_parameter("web port", "901", NULL); do_parameter("swat directory", dyn_SWATDIR, NULL); @@ -799,6 +802,7 @@ FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) FN_GLOBAL_INTEGER(lp_dgram_port, &Globals.dgram_port) FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) FN_GLOBAL_INTEGER(lp_krb5_port, &Globals.krb5_port) +FN_GLOBAL_INTEGER(lp_kpasswd_port, &Globals.kpasswd_port) FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) FN_GLOBAL_STRING(lp_swat_directory, &Globals.swat_directory) -- cgit From 736543016e35882d2ad784c3598a3e8c2c7fcc7b Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sat, 17 Dec 2005 15:45:38 +0000 Subject: r12304: split out the wins partner configuration into a seperate ldb. now $privatedir/wins_config.ldb contains the wins partners and $lockdir/wins.ldb contains the name records metze (This used to be commit baa4a7a9d4f16adf476846850a63dfbfd51b10b3) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 6395bff182..7051c61d5c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -119,6 +119,7 @@ typedef struct char *szConfigFile; char *szSAM_URL; char *szSPOOLSS_URL; + char *szWINS_CONFIG_URL; char *szWINS_URL; char *szPrivateDir; char **jsInclude; @@ -417,6 +418,7 @@ static struct parm_struct parm_table[] = { {"password server", P_LIST, P_GLOBAL, &Globals.szPasswordServers, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"sam database", P_STRING, P_GLOBAL, &Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"spoolss database", P_STRING, P_GLOBAL, &Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"wins config database", P_STRING, P_GLOBAL, &Globals.szWINS_CONFIG_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"wins database", P_STRING, P_GLOBAL, &Globals.szWINS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -613,6 +615,7 @@ static void init_globals(void) do_parameter("private dir", dyn_PRIVATE_DIR, NULL); do_parameter("sam database", "sam.ldb", NULL); do_parameter("spoolss database", "spoolss.ldb", NULL); + do_parameter("wins config database", "wins_config.ldb", NULL); do_parameter("wins database", "wins.ldb", NULL); do_parameter("registry:HKEY_LOCAL_MACHINE", "hklm.ldb", NULL); @@ -817,6 +820,7 @@ FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) +FN_GLOBAL_STRING(lp_wins_config_url, &Globals.szWINS_CONFIG_URL) FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &Globals.bWinbindSealedPipes) -- cgit From ae0801c8005f49138e6669b2361396a985cba1fa Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 22 Dec 2005 18:21:19 +0000 Subject: r12435: the max wins ttl is 6 days in windows and samba3 metze (This used to be commit 0ed07057d37ec6684a01ba699073b4ba6d671697) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 7051c61d5c..361450821a 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -696,7 +696,7 @@ static void init_globals(void) do_parameter("nt status support", "True", NULL); - do_parameter("max wins ttl", "432000", NULL); + do_parameter("max wins ttl", "518400", NULL); /* 6 days */ do_parameter("min wins ttl", "10", NULL); do_parameter("tls enabled", "True", NULL); -- cgit From 2cd2c87e889d7a852e3fe94e37c18fe60daf7b9c Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 22 Dec 2005 23:03:02 +0000 Subject: r12442: only set the "wins server" parameter if it's not set metze (This used to be commit 5054890b6871f1e25938ae76a2d660ce168877e8) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 361450821a..290dd361e8 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2401,7 +2401,7 @@ BOOL lp_load(void) bLoaded = True; - if (Globals.bWINSsupport) { + if (!Globals.szWINSservers && Globals.bWINSsupport) { lp_do_parameter(-1, "wins server", "127.0.0.1"); } -- cgit From d4de4c2d210d2e8c9b5aedf70695594809ad6a0b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 30 Dec 2005 13:16:54 +0000 Subject: r12608: Remove some unused #include lines. (This used to be commit 70e7449318aa0e9d2639c76730a7d1683b2f4981) --- source4/param/loadparm.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 290dd361e8..a87e5897e3 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -58,11 +58,8 @@ #include "pstring.h" #include "system/time.h" #include "system/iconv.h" -#include "system/network.h" -#include "system/printing.h" #include "librpc/gen_ndr/ndr_svcctl.h" #include "librpc/gen_ndr/ndr_samr.h" -#include "librpc/gen_ndr/ndr_nbt.h" #include "dlinklist.h" #include "param/loadparm.h" -- cgit From 706ef631f7d456de93078b8d0dca2c22e39d7ad1 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sat, 31 Dec 2005 10:41:59 +0000 Subject: r12644: prepare the dns proxy feature for the wins server metze (This used to be commit 48842cd9abcff744851ad1481309fb901be3a73b) --- source4/param/loadparm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index a87e5897e3..e6b4b95500 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -164,6 +164,7 @@ typedef struct int web_port; char *socket_options; BOOL bWINSsupport; + BOOL bWINSdnsProxy; BOOL bLocalMaster; BOOL bPreferredMaster; BOOL bEncryptPasswords; @@ -519,6 +520,7 @@ static struct parm_struct parm_table[] = { {"wins server", P_LIST, P_GLOBAL, &Globals.szWINSservers, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"wins support", P_BOOL, P_GLOBAL, &Globals.bWINSsupport, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"dns proxy", P_BOOL, P_GLOBAL, &Globals.bWINSdnsProxy, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"Locking Options", P_SEP, P_SEPARATOR}, @@ -672,7 +674,8 @@ static void init_globals(void) do_parameter("PreferredMaster", "Auto", NULL); do_parameter("LocalMaster", "True", NULL); - do_parameter("WINSsupport", "False", NULL); + do_parameter("wins support", "False", NULL); + do_parameter("dns proxy", "False", NULL); do_parameter("winbind separator", "\\", NULL); do_parameter("winbind sealed pipes", "True", NULL); @@ -847,6 +850,7 @@ FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) +FN_GLOBAL_BOOL(lp_wins_dns_proxy, &Globals.bWINSdnsProxy) FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw) FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite) -- cgit From 0283bd7bf718513825abe4479b8cea4d08a3a456 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sat, 31 Dec 2005 11:57:15 +0000 Subject: r12649: use the same default('yes') for 'dns proxy' as samba3 metze (This used to be commit d430fc278b8782f625cfafbff2a4efb936fdea36) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index e6b4b95500..72eb1d83cd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -675,7 +675,7 @@ static void init_globals(void) do_parameter("LocalMaster", "True", NULL); do_parameter("wins support", "False", NULL); - do_parameter("dns proxy", "False", NULL); + do_parameter("dns proxy", "True", NULL); do_parameter("winbind separator", "\\", NULL); do_parameter("winbind sealed pipes", "True", NULL); -- cgit From 78c50015bb8bd5a1d831a6e7ec796b3367c73145 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 3 Jan 2006 15:40:05 +0000 Subject: r12694: Move some headers to the directory of the subsystem they belong to. (This used to be commit c722f665c90103f3ed57621c460e32ad33e7a8a3) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 72eb1d83cd..08abc3aa48 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -53,6 +53,7 @@ */ #include "includes.h" +#include "smb.h" #include "version.h" #include "dynconfig.h" #include "pstring.h" -- cgit From 03ab3429090a9fccc8778d949cd9d92042575558 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 6 Jan 2006 02:13:01 +0000 Subject: r12729: Implement the --section-name option, for dumping only one section. Andrew Bartlett (This used to be commit 3c49dd9219b12f5ed229ba108a02b85a18146df8) --- source4/param/loadparm.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 08abc3aa48..6e7716b1f2 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -66,18 +66,6 @@ static BOOL bLoaded = False; -#ifndef GLOBAL_NAME -#define GLOBAL_NAME "global" -#endif - -#ifndef PRINTERS_NAME -#define PRINTERS_NAME "printers" -#endif - -#ifndef HOMES_NAME -#define HOMES_NAME "homes" -#endif - /* some helpful bits */ #define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && ServicePtrs[(i)]->valid) #define VALID(i) ServicePtrs[i]->valid @@ -706,6 +694,12 @@ static void init_globals(void) do_parameter("tls cafile", "tls/ca.pem", NULL); do_parameter_var("js include", "%s/js", dyn_LIBDIR); do_parameter_var("setup directory", "%s/setup", dyn_LIBDIR); + + for (i = 0; parm_table[i].label; i++) { + if (!(parm_table[i].flags & FLAG_CMDLINE)) { + parm_table[i].flags |= FLAG_DEFAULT; + } + } } static TALLOC_CTX *lp_talloc; @@ -1886,6 +1880,17 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue break; } + if (parm_table[parmnum].flags & FLAG_DEFAULT) { + parm_table[parmnum].flags &= ~FLAG_DEFAULT; + /* we have to also unset FLAG_DEFAULT on aliases */ + for (i=parmnum-1;i>=0 && parm_table[i].ptr == parm_table[parmnum].ptr;i--) { + parm_table[i].flags &= ~FLAG_DEFAULT; + } + for (i=parmnum+1;i Date: Fri, 6 Jan 2006 02:50:46 +0000 Subject: r12731: Simplify and re-implemenet support for --parameter-name=foo --service-name=bar in testparm. Andrew Bartlett (This used to be commit be067e9a04a4dca02a9472ae7385dc0bf26735ea) --- source4/param/loadparm.c | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 3d079f3e3e..c79db6e584 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2231,40 +2231,31 @@ static void dump_a_service(service * pService, FILE * f) BOOL lp_dump_a_parameter(int snum, char *parm_name, FILE * f, BOOL isGlobal) { service * pService = ServicePtrs[snum]; - int i, result = False; parm_class p_class; unsigned flag = 0; - + struct parm_struct *parm; + void *ptr; if (isGlobal) { p_class = P_GLOBAL; flag = FLAG_GLOBAL; } else p_class = P_LOCAL; - for (i = 0; parm_table[i].label; i++) { - if (strwicmp(parm_table[i].label, parm_name) == 0 && - (parm_table[i].class == p_class || parm_table[i].flags & flag) && - parm_table[i].ptr && - (*parm_table[i].label != '-') && - (i == 0 || (parm_table[i].ptr != parm_table[i - 1].ptr))) - { - void *ptr; - - if (isGlobal) - ptr = parm_table[i].ptr; - else - ptr = ((char *)pService) + - PTR_DIFF(parm_table[i].ptr, &sDefault); - - print_parameter(&parm_table[i], - ptr, f); - fprintf(f, "\n"); - result = True; - break; - } + parm = lp_parm_struct(parm_name); + if (!parm) { + return False; } - - return result; + + if (isGlobal) + ptr = parm->ptr; + else + ptr = ((char *)pService) + + PTR_DIFF(parm->ptr, &sDefault); + + print_parameter(parm, + ptr, f); + fprintf(f, "\n"); + return True; } /*************************************************************************** -- cgit From c4a5381154b23869c5543ef36dfd064155e70cb1 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 13 Jan 2006 10:26:47 +0000 Subject: r12898: prepare the 'wins hook' feature, but we only debug out a 'TODO: run script ...' metze (This used to be commit d28c8ce66db61cff193ac06e8e5d7d6aa5059e9e) --- source4/param/loadparm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c79db6e584..ae0e4b3bf0 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -154,6 +154,7 @@ typedef struct char *socket_options; BOOL bWINSsupport; BOOL bWINSdnsProxy; + char *szWINSHook; BOOL bLocalMaster; BOOL bPreferredMaster; BOOL bEncryptPasswords; @@ -510,6 +511,7 @@ static struct parm_struct parm_table[] = { {"wins server", P_LIST, P_GLOBAL, &Globals.szWINSservers, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"wins support", P_BOOL, P_GLOBAL, &Globals.bWINSsupport, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"dns proxy", P_BOOL, P_GLOBAL, &Globals.bWINSdnsProxy, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"wins hook", P_STRING, P_GLOBAL, &Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED}, {"Locking Options", P_SEP, P_SEPARATOR}, @@ -846,6 +848,7 @@ FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) FN_GLOBAL_BOOL(lp_wins_dns_proxy, &Globals.bWINSdnsProxy) +FN_GLOBAL_STRING(lp_wins_hook, &Globals.szWINSHook) FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw) FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite) -- cgit From 8adec6d36373e89c0037105c0867fe6776c45449 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 26 Jan 2006 10:18:26 +0000 Subject: r13158: Fix setup and ejs paths (This used to be commit c3bc39bd713e2a2b0a270d22e38fe39959a6a7c9) --- source4/param/loadparm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index ae0e4b3bf0..a92bc68371 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -694,8 +694,8 @@ static void init_globals(void) do_parameter("tls keyfile", "tls/key.pem", NULL); do_parameter("tls certfile", "tls/cert.pem", NULL); do_parameter("tls cafile", "tls/ca.pem", NULL); - do_parameter_var("js include", "%s/js", dyn_LIBDIR); - do_parameter_var("setup directory", "%s/setup", dyn_LIBDIR); + do_parameter_var("js include", "%s", dyn_JSDIR); + do_parameter_var("setup directory", "%s", dyn_SETUPDIR); for (i = 0; parm_table[i].label; i++) { if (!(parm_table[i].flags & FLAG_CMDLINE)) { -- cgit From 44e601b5ad635ba29088fd4c747627dee8d62112 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sat, 28 Jan 2006 12:15:24 +0000 Subject: r13206: This patch finally re-adds a -k option that works reasonably. From here we can add tests to Samba for kerberos, forcing it on and off. In the process, I also remove the dependency of credentials on GENSEC. This also picks up on the idea of bringing 'set_boolean' into general code from jpeach's cifsdd patch. Andrew Bartlett (This used to be commit 1ac7976ea6e3ad6184c911de5df624c44e7c5228) --- source4/param/loadparm.c | 36 +++++------------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index a92bc68371..bd01581eae 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -912,7 +912,6 @@ FN_GLOBAL_INTEGER(lp_client_signing, &Globals.client_signing) /* local prototypes */ static int map_parameter(const char *pszParmName); -static BOOL set_boolean(BOOL *pb, const char *pszParmValue); static int getservicebyname(const char *pszServiceName, service * pserviceDest); static void copy_service(service * pserviceDest, @@ -1004,7 +1003,7 @@ static BOOL lp_bool(const char *s) return False; } - if (!set_boolean(&ret,s)) { + if (!set_boolean(s, &ret)) { DEBUG(0,("lp_bool(%s): value is not boolean!\n",s)); return False; } @@ -1373,34 +1372,6 @@ void *lp_parm_ptr(int snum, struct parm_struct *parm) return ((char *)ServicePtrs[snum]) + PTR_DIFF(parm->ptr, &sDefault); } -/*************************************************************************** - Set a boolean variable from the text value stored in the passed string. - Returns True in success, False if the passed string does not correctly - represent a boolean. -***************************************************************************/ - -static BOOL set_boolean(BOOL *pb, const char *pszParmValue) -{ - BOOL bRetval; - - bRetval = True; - if (strwicmp(pszParmValue, "yes") == 0 || - strwicmp(pszParmValue, "true") == 0 || - strwicmp(pszParmValue, "1") == 0) - *pb = True; - else if (strwicmp(pszParmValue, "no") == 0 || - strwicmp(pszParmValue, "False") == 0 || - strwicmp(pszParmValue, "0") == 0) - *pb = False; - else { - DEBUG(0, - ("ERROR: Badly formed boolean in configuration file: \"%s\".\n", - pszParmValue)); - bRetval = False; - } - return (bRetval); -} - /*************************************************************************** Find a service by name. Otherwise works like get_service. ***************************************************************************/ @@ -1841,7 +1812,10 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue switch (parm_table[parmnum].type) { case P_BOOL: - set_boolean(parm_ptr, pszParmValue); + if (!set_boolean(pszParmValue, parm_ptr)) { + DEBUG(0,("lp_do_parameter(%s): value is not boolean!\n", pszParmValue)); + return False; + } break; case P_INTEGER: -- cgit From b70009649a23ee8f0e88c1b9935e739537f4a960 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 31 Jan 2006 00:48:57 +0000 Subject: r13244: Allow control of the location of the Samba3-compatible winbindd pipe in Samba4. This allows us to start winbindd by default, including in 'make test'. This is via a new 'winbindd socket directory' parameter for utilities linked against loadparm, as well as a --with-winbindd-socket-dir option to configure (setting the default and the value for simple clients). I hope to add basic winbindd tests, to ensure continued correct operation, but at least now I don't have to manually change my 'server services' line. The other problem with the hard-coded /tmp/.winbind is that RedHat has moved this in Fedora (to /var/run I think). For this reason, this functionality should probably be ported to Samba3 as well. The default for Samba4 is PREFIX/var/run/winbind_pipe. I have also re-added the paranoia checks from Samba3 for correct permissions on the socket directory. Andrew Bartlett (This used to be commit 8866aa06ffc3896094c878e9c07b40c03826d9a7) --- source4/param/loadparm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index bd01581eae..96ba2bbc73 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -127,6 +127,7 @@ typedef struct char **server_services; char *ntptr_providor; char *szWinbindSeparator; + char *szWinbinddSocketDirectory; BOOL bWinbindSealedPipes; char *swat_directory; BOOL tls_enabled; @@ -545,6 +546,7 @@ static struct parm_struct parm_table[] = { {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"winbindd socket directory", P_STRING, P_GLOBAL, &Globals.szWinbinddSocketDirectory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {"winbind sealed pipes", P_BOOL, P_GLOBAL, &Globals.bWinbindSealedPipes, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} @@ -599,7 +601,7 @@ static void init_globals(void) do_parameter("max connections", "-1", NULL); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup", NULL); - do_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc", NULL); + do_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc winbind", NULL); do_parameter("ntptr providor", "simple_ldb", NULL); do_parameter("auth methods", "anonymous sam_ignoredomain", NULL); do_parameter("private dir", dyn_PRIVATE_DIR, NULL); @@ -670,6 +672,7 @@ static void init_globals(void) do_parameter("winbind separator", "\\", NULL); do_parameter("winbind sealed pipes", "True", NULL); + do_parameter("winbindd socket directory", dyn_WINBINDD_SOCKET_DIR, NULL); do_parameter("client signing", "Yes", NULL); do_parameter("server signing", "auto", NULL); @@ -820,6 +823,7 @@ FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) FN_GLOBAL_STRING(lp_wins_config_url, &Globals.szWINS_CONFIG_URL) FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) +FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, &Globals.szWinbinddSocketDirectory) FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &Globals.bWinbindSealedPipes) FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) -- cgit From dfc517b05395d925a4d7b1ce9633a849f9468e70 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 23 Feb 2006 15:52:24 +0000 Subject: r13658: More moving around of files: - Collect the generic utility functions into a lib/util/ (a la GLib is for the GNOME folks) - Remove even more files from include/ (This used to be commit ba62880f5b05c2a505dc7f54676b231197a7e707) --- source4/param/loadparm.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 96ba2bbc73..8fc061b53f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -61,6 +61,8 @@ #include "system/iconv.h" #include "librpc/gen_ndr/ndr_svcctl.h" #include "librpc/gen_ndr/ndr_samr.h" +#include "smb_server/smb_server.h" +#include "libcli/raw/signing.h" #include "dlinklist.h" #include "param/loadparm.h" -- cgit From d8503c6ba120172e9aae737c5510e547e8dea4a5 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 6 Mar 2006 14:19:11 +0000 Subject: r13860: - add support for SMB2 ("SMB 2.001") negotiation in SMB negprot requests - the default max protocol is still NT1 metze (This used to be commit d1bae931b327dda28e648efc473e0462cf036f7c) --- source4/param/loadparm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8fc061b53f..16692daec4 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -279,6 +279,7 @@ static BOOL handle_copy(const char *pszParmValue, char **ptr); static void set_default_server_announce_type(void); static const struct enum_list enum_protocol[] = { + {PROTOCOL_SMB2, "SMB2"}, {PROTOCOL_NT1, "NT1"}, {PROTOCOL_LANMAN2, "LANMAN2"}, {PROTOCOL_LANMAN1, "LANMAN1"}, @@ -595,7 +596,6 @@ static void init_globals(void) myname = get_myname(); do_parameter("netbios name", myname, NULL); SAFE_FREE(myname); - do_parameter("max protocol", "NT1", NULL); do_parameter("name resolve order", "lmhosts wins host bcast", NULL); do_parameter("fstype", FSTYPE_STRING, NULL); @@ -646,7 +646,8 @@ static void init_globals(void) do_parameter("max xmit", "12288", NULL); do_parameter("password level", "0", NULL); do_parameter("LargeReadwrite", "True", NULL); - do_parameter("minprotocol", "CORE", NULL); + do_parameter("min protocol", "CORE", NULL); + do_parameter("max protocol", "NT1", NULL); do_parameter("security", "USER", NULL); do_parameter("paranoid server security", "True", NULL); do_parameter("EncryptPasswords", "True", NULL); -- cgit From 324fcc27f9e63b63e0c7403f1c100949952fb0b5 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 7 Mar 2006 16:51:56 +0000 Subject: r13964: make lp_* functions public metze (This used to be commit 2db081fd708ff2403082e31a777320a713e74756) --- source4/param/loadparm.c | 218 +++++++++++++++++++++++------------------------ 1 file changed, 109 insertions(+), 109 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 16692daec4..b8445e2a8a 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -802,119 +802,119 @@ static const char *lp_string(const char *s) #define FN_LOCAL_INTEGER(fn_name,val) \ int fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} -FN_GLOBAL_INTEGER(lp_server_role, &Globals.server_role) -FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) -FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) -FN_GLOBAL_INTEGER(lp_dgram_port, &Globals.dgram_port) -FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) -FN_GLOBAL_INTEGER(lp_krb5_port, &Globals.krb5_port) -FN_GLOBAL_INTEGER(lp_kpasswd_port, &Globals.kpasswd_port) -FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) -FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) -FN_GLOBAL_STRING(lp_swat_directory, &Globals.swat_directory) -FN_GLOBAL_BOOL(lp_tls_enabled, &Globals.tls_enabled) -FN_GLOBAL_STRING(lp_tls_keyfile, &Globals.tls_keyfile) -FN_GLOBAL_STRING(lp_tls_certfile, &Globals.tls_certfile) -FN_GLOBAL_STRING(lp_tls_cafile, &Globals.tls_cafile) -FN_GLOBAL_STRING(lp_tls_crlfile, &Globals.tls_crlfile) -FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) -FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) -FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) -FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) -FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) -FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) -FN_GLOBAL_STRING(lp_wins_config_url, &Globals.szWINS_CONFIG_URL) -FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) -FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) -FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, &Globals.szWinbinddSocketDirectory) -FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &Globals.bWinbindSealedPipes) -FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) -FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) -FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) -FN_GLOBAL_STRING(lp_setupdir, &Globals.szSetupDir) -FN_GLOBAL_STRING(lp_ncalrpc_dir, &Globals.ncalrpc_dir) -FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) -FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) -FN_GLOBAL_LIST(lp_server_services, &Globals.server_services) -FN_GLOBAL_STRING(lp_ntptr_providor, &Globals.ntptr_providor) -FN_GLOBAL_STRING(lp_auto_services, &Globals.szAutoServices) -FN_GLOBAL_STRING(lp_passwd_chat, &Globals.szPasswdChat) -FN_GLOBAL_LIST(lp_passwordserver, &Globals.szPasswordServers) -FN_GLOBAL_LIST(lp_name_resolve_order, &Globals.szNameResolveOrder) -FN_GLOBAL_STRING(lp_realm, &Globals.szRealm) -FN_GLOBAL_STRING(lp_socket_options, &Globals.socket_options) -FN_GLOBAL_STRING(lp_workgroup, &Globals.szWorkgroup) -FN_GLOBAL_STRING(lp_netbios_name, &Globals.szNetbiosName) -FN_GLOBAL_STRING(lp_netbios_scope, &Globals.szNetbiosScope) -FN_GLOBAL_LIST(lp_wins_server_list, &Globals.szWINSservers) -FN_GLOBAL_LIST(lp_interfaces, &Globals.szInterfaces) -FN_GLOBAL_STRING(lp_socket_address, &Globals.szSocketAddress) -FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases) -FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) - -FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) -FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) -FN_GLOBAL_BOOL(lp_wins_dns_proxy, &Globals.bWINSdnsProxy) -FN_GLOBAL_STRING(lp_wins_hook, &Globals.szWINSHook) -FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) -FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw) -FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite) -FN_GLOBAL_BOOL(lp_writeraw, &Globals.bWriteRaw) -FN_GLOBAL_BOOL(lp_null_passwords, &Globals.bNullPasswords) -FN_GLOBAL_BOOL(lp_obey_pam_restrictions, &Globals.bObeyPamRestrictions) -FN_GLOBAL_BOOL(lp_encrypted_passwords, &Globals.bEncryptPasswords) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_server_role, &Globals.server_role) +_PUBLIC_ FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_dgram_port, &Globals.dgram_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_krb5_port, &Globals.krb5_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_kpasswd_port, &Globals.kpasswd_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) +_PUBLIC_ FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) +_PUBLIC_ FN_GLOBAL_STRING(lp_swat_directory, &Globals.swat_directory) +_PUBLIC_ FN_GLOBAL_BOOL(lp_tls_enabled, &Globals.tls_enabled) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_keyfile, &Globals.tls_keyfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_certfile, &Globals.tls_certfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_cafile, &Globals.tls_cafile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_crlfile, &Globals.tls_crlfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) +_PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) +_PUBLIC_ FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) +_PUBLIC_ FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) +_PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, &Globals.szWINS_CONFIG_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, &Globals.szWinbinddSocketDirectory) +_PUBLIC_ FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &Globals.bWinbindSealedPipes) +_PUBLIC_ FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) +_PUBLIC_ FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_setupdir, &Globals.szSetupDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_ncalrpc_dir, &Globals.ncalrpc_dir) +_PUBLIC_ FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) +_PUBLIC_ FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) +_PUBLIC_ FN_GLOBAL_LIST(lp_server_services, &Globals.server_services) +_PUBLIC_ FN_GLOBAL_STRING(lp_ntptr_providor, &Globals.ntptr_providor) +_PUBLIC_ FN_GLOBAL_STRING(lp_auto_services, &Globals.szAutoServices) +_PUBLIC_ FN_GLOBAL_STRING(lp_passwd_chat, &Globals.szPasswdChat) +_PUBLIC_ FN_GLOBAL_LIST(lp_passwordserver, &Globals.szPasswordServers) +_PUBLIC_ FN_GLOBAL_LIST(lp_name_resolve_order, &Globals.szNameResolveOrder) +_PUBLIC_ FN_GLOBAL_STRING(lp_realm, &Globals.szRealm) +_PUBLIC_ FN_GLOBAL_STRING(lp_socket_options, &Globals.socket_options) +_PUBLIC_ FN_GLOBAL_STRING(lp_workgroup, &Globals.szWorkgroup) +_PUBLIC_ FN_GLOBAL_STRING(lp_netbios_name, &Globals.szNetbiosName) +_PUBLIC_ FN_GLOBAL_STRING(lp_netbios_scope, &Globals.szNetbiosScope) +_PUBLIC_ FN_GLOBAL_LIST(lp_wins_server_list, &Globals.szWINSservers) +_PUBLIC_ FN_GLOBAL_LIST(lp_interfaces, &Globals.szInterfaces) +_PUBLIC_ FN_GLOBAL_STRING(lp_socket_address, &Globals.szSocketAddress) +_PUBLIC_ FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases) +_PUBLIC_ FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) + +_PUBLIC_ FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) +_PUBLIC_ FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) +_PUBLIC_ FN_GLOBAL_BOOL(lp_wins_dns_proxy, &Globals.bWINSdnsProxy) +_PUBLIC_ FN_GLOBAL_STRING(lp_wins_hook, &Globals.szWINSHook) +_PUBLIC_ FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) +_PUBLIC_ FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw) +_PUBLIC_ FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite) +_PUBLIC_ FN_GLOBAL_BOOL(lp_writeraw, &Globals.bWriteRaw) +_PUBLIC_ FN_GLOBAL_BOOL(lp_null_passwords, &Globals.bNullPasswords) +_PUBLIC_ FN_GLOBAL_BOOL(lp_obey_pam_restrictions, &Globals.bObeyPamRestrictions) +_PUBLIC_ FN_GLOBAL_BOOL(lp_encrypted_passwords, &Globals.bEncryptPasswords) static FN_GLOBAL_BOOL(lp_time_server, &Globals.bTimeServer) -FN_GLOBAL_BOOL(lp_bind_interfaces_only, &Globals.bBindInterfacesOnly) -FN_GLOBAL_BOOL(lp_unicode, &Globals.bUnicode) -FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport) -FN_GLOBAL_BOOL(lp_lanman_auth, &Globals.bLanmanAuth) -FN_GLOBAL_BOOL(lp_ntlm_auth, &Globals.bNTLMAuth) -FN_GLOBAL_BOOL(lp_client_plaintext_auth, &Globals.bClientPlaintextAuth) -FN_GLOBAL_BOOL(lp_client_lanman_auth, &Globals.bClientLanManAuth) -FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, &Globals.bClientNTLMv2Auth) -FN_GLOBAL_BOOL(lp_client_use_spnego_principal, &Globals.client_use_spnego_principal) -FN_GLOBAL_BOOL(lp_host_msdfs, &Globals.bHostMSDfs) -FN_GLOBAL_BOOL(lp_unix_extensions, &Globals.bUnixExtensions) -FN_GLOBAL_BOOL(lp_use_spnego, &Globals.bUseSpnego) -FN_GLOBAL_BOOL(lp_rpc_big_endian, &Globals.bRpcBigEndian) -FN_GLOBAL_INTEGER(lp_max_wins_ttl, &Globals.max_wins_ttl) -FN_GLOBAL_INTEGER(lp_min_wins_ttl, &Globals.min_wins_ttl) -FN_GLOBAL_INTEGER(lp_maxmux, &Globals.max_mux) -FN_GLOBAL_INTEGER(lp_max_xmit, &Globals.max_xmit) -FN_GLOBAL_INTEGER(lp_passwordlevel, &Globals.pwordlevel) -FN_GLOBAL_INTEGER(lp_maxprotocol, &Globals.maxprotocol) -FN_GLOBAL_INTEGER(lp_minprotocol, &Globals.minprotocol) -FN_GLOBAL_INTEGER(lp_security, &Globals.security) -FN_GLOBAL_LIST(lp_auth_methods, &Globals.AuthMethods) -FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) +_PUBLIC_ FN_GLOBAL_BOOL(lp_bind_interfaces_only, &Globals.bBindInterfacesOnly) +_PUBLIC_ FN_GLOBAL_BOOL(lp_unicode, &Globals.bUnicode) +_PUBLIC_ FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport) +_PUBLIC_ FN_GLOBAL_BOOL(lp_lanman_auth, &Globals.bLanmanAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_ntlm_auth, &Globals.bNTLMAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_plaintext_auth, &Globals.bClientPlaintextAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_lanman_auth, &Globals.bClientLanManAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, &Globals.bClientNTLMv2Auth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_use_spnego_principal, &Globals.client_use_spnego_principal) +_PUBLIC_ FN_GLOBAL_BOOL(lp_host_msdfs, &Globals.bHostMSDfs) +_PUBLIC_ FN_GLOBAL_BOOL(lp_unix_extensions, &Globals.bUnixExtensions) +_PUBLIC_ FN_GLOBAL_BOOL(lp_use_spnego, &Globals.bUseSpnego) +_PUBLIC_ FN_GLOBAL_BOOL(lp_rpc_big_endian, &Globals.bRpcBigEndian) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_max_wins_ttl, &Globals.max_wins_ttl) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_min_wins_ttl, &Globals.min_wins_ttl) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_maxmux, &Globals.max_mux) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_max_xmit, &Globals.max_xmit) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_passwordlevel, &Globals.pwordlevel) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_maxprotocol, &Globals.maxprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_minprotocol, &Globals.minprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_security, &Globals.security) +_PUBLIC_ FN_GLOBAL_LIST(lp_auth_methods, &Globals.AuthMethods) +_PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) static FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) -FN_GLOBAL_LIST(lp_js_include, &Globals.jsInclude) - - -FN_LOCAL_STRING(lp_servicename, szService) -FN_LOCAL_CONST_STRING(lp_const_servicename, szService) -FN_LOCAL_STRING(lp_pathname, szPath) +_PUBLIC_ FN_GLOBAL_LIST(lp_js_include, &Globals.jsInclude) +_PUBLIC_ +_PUBLIC_ +_PUBLIC_ FN_LOCAL_STRING(lp_servicename, szService) +_PUBLIC_ FN_LOCAL_CONST_STRING(lp_const_servicename, szService) +_PUBLIC_ FN_LOCAL_STRING(lp_pathname, szPath) static FN_LOCAL_STRING(_lp_printername, szPrintername) -FN_LOCAL_LIST(lp_hostsallow, szHostsallow) -FN_LOCAL_LIST(lp_hostsdeny, szHostsdeny) -FN_LOCAL_STRING(lp_comment, comment) -FN_LOCAL_STRING(lp_fstype, fstype) +_PUBLIC_ FN_LOCAL_LIST(lp_hostsallow, szHostsallow) +_PUBLIC_ FN_LOCAL_LIST(lp_hostsdeny, szHostsdeny) +_PUBLIC_ FN_LOCAL_STRING(lp_comment, comment) +_PUBLIC_ FN_LOCAL_STRING(lp_fstype, fstype) static FN_LOCAL_STRING(lp_volume, volume) -FN_LOCAL_LIST(lp_ntvfs_handler, ntvfs_handler) -FN_LOCAL_BOOL(lp_msdfs_root, bMSDfsRoot) -FN_LOCAL_BOOL(lp_browseable, bBrowseable) -FN_LOCAL_BOOL(lp_readonly, bRead_only) -FN_LOCAL_BOOL(lp_print_ok, bPrint_ok) -FN_LOCAL_BOOL(lp_map_hidden, bMap_hidden) -FN_LOCAL_BOOL(lp_map_archive, bMap_archive) -FN_LOCAL_BOOL(lp_strict_locking, bStrictLocking) -FN_LOCAL_BOOL(lp_strict_sync, bStrictSync) -FN_LOCAL_BOOL(lp_ci_filesystem, bCIFileSystem) -FN_LOCAL_BOOL(lp_map_system, bMap_system) -FN_LOCAL_INTEGER(lp_max_connections, iMaxConnections) -FN_LOCAL_INTEGER(lp_csc_policy, iCSCPolicy) -FN_GLOBAL_INTEGER(lp_server_signing, &Globals.server_signing) -FN_GLOBAL_INTEGER(lp_client_signing, &Globals.client_signing) +_PUBLIC_ FN_LOCAL_LIST(lp_ntvfs_handler, ntvfs_handler) +_PUBLIC_ FN_LOCAL_BOOL(lp_msdfs_root, bMSDfsRoot) +_PUBLIC_ FN_LOCAL_BOOL(lp_browseable, bBrowseable) +_PUBLIC_ FN_LOCAL_BOOL(lp_readonly, bRead_only) +_PUBLIC_ FN_LOCAL_BOOL(lp_print_ok, bPrint_ok) +_PUBLIC_ FN_LOCAL_BOOL(lp_map_hidden, bMap_hidden) +_PUBLIC_ FN_LOCAL_BOOL(lp_map_archive, bMap_archive) +_PUBLIC_ FN_LOCAL_BOOL(lp_strict_locking, bStrictLocking) +_PUBLIC_ FN_LOCAL_BOOL(lp_strict_sync, bStrictSync) +_PUBLIC_ FN_LOCAL_BOOL(lp_ci_filesystem, bCIFileSystem) +_PUBLIC_ FN_LOCAL_BOOL(lp_map_system, bMap_system) +_PUBLIC_ FN_LOCAL_INTEGER(lp_max_connections, iMaxConnections) +_PUBLIC_ FN_LOCAL_INTEGER(lp_csc_policy, iCSCPolicy) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_server_signing, &Globals.server_signing) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, &Globals.client_signing) /* local prototypes */ -- cgit From eb6e6c0c14b4672554e46613638f04b1bd30cc34 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 15 Mar 2006 02:43:04 +0000 Subject: r14415: remove an unusued var (This used to be commit b4172b53f3e01f518244ca80e07e351c7d51e282) --- source4/param/loadparm.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index b8445e2a8a..6cd87be733 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2215,15 +2215,11 @@ static void dump_a_service(service * pService, FILE * f) BOOL lp_dump_a_parameter(int snum, char *parm_name, FILE * f, BOOL isGlobal) { service * pService = ServicePtrs[snum]; - parm_class p_class; - unsigned flag = 0; struct parm_struct *parm; void *ptr; if (isGlobal) { - p_class = P_GLOBAL; flag = FLAG_GLOBAL; - } else - p_class = P_LOCAL; + } parm = lp_parm_struct(parm_name); if (!parm) { -- cgit From cd9532818340094ef05928c26366830f243169d5 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 15 Mar 2006 03:38:30 +0000 Subject: r14420: arrgh, make sure I test compile even little patches .... (This used to be commit 749a93c7c01401b1ccbb117500910b56a93d82b4) --- source4/param/loadparm.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 6cd87be733..0d871c58cb 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2217,9 +2217,6 @@ BOOL lp_dump_a_parameter(int snum, char *parm_name, FILE * f, BOOL isGlobal) service * pService = ServicePtrs[snum]; struct parm_struct *parm; void *ptr; - if (isGlobal) { - flag = FLAG_GLOBAL; - } parm = lp_parm_struct(parm_name); if (!parm) { -- cgit From 8528016978b084213ef53d66e1b6e831b1a01acc Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 16 Mar 2006 00:23:11 +0000 Subject: r14464: Don't include ndr_BASENAME.h files unless strictly required, instead try to include just the BASENAME.h files (containing only structs) (This used to be commit 3dd477ca5147f28a962b8437e2611a8222d706bd) --- source4/param/loadparm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 0d871c58cb..931eed626f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -59,8 +59,8 @@ #include "pstring.h" #include "system/time.h" #include "system/iconv.h" -#include "librpc/gen_ndr/ndr_svcctl.h" -#include "librpc/gen_ndr/ndr_samr.h" +#include "librpc/gen_ndr/svcctl.h" +#include "librpc/gen_ndr/samr.h" #include "smb_server/smb_server.h" #include "libcli/raw/signing.h" #include "dlinklist.h" -- cgit From 18cddd580e04344e05593d9f63beb9ead53cfab2 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 20 Mar 2006 00:28:12 +0000 Subject: r14575: Move some path-related functions to libsamba-config so libsamba-util doesn't have to depend on the lp_* functions. (This used to be commit f97df7d90a41b77a9edd2d6bdc47c27bf1b6bb07) --- source4/param/loadparm.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 931eed626f..21d1e0d57d 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -103,7 +103,6 @@ typedef struct char *szServerString; char *szAutoServices; char *szPasswdChat; - char *szLogFile; char *szConfigFile; char *szSAM_URL; char *szSPOOLSS_URL; @@ -124,7 +123,6 @@ typedef struct char *szNetbiosScope; char *szDomainOtherSIDs; char **szNameResolveOrder; - char *szPanicAction; char **dcerpc_ep_servers; char **server_services; char *ntptr_providor; @@ -431,7 +429,7 @@ static struct parm_struct parm_table[] = { {"log level", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"debuglevel", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_HIDE}, - {"log file", P_STRING, P_GLOBAL, &Globals.szLogFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"log file", P_STRING, P_GLOBAL, &logfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"Protocol Options", P_SEP, P_SEPARATOR}, @@ -544,7 +542,7 @@ static struct parm_struct parm_table[] = { {"volume", P_STRING, P_LOCAL, &sDefault.volume, NULL, NULL, FLAG_SHARE }, {"fstype", P_STRING, P_LOCAL, &sDefault.fstype, NULL, NULL, FLAG_SHARE}, - {"panic action", P_STRING, P_GLOBAL, &Globals.szPanicAction, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"panic action", P_STRING, P_GLOBAL, &panic_action, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -819,7 +817,6 @@ _PUBLIC_ FN_GLOBAL_STRING(lp_tls_cafile, &Globals.tls_cafile) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_crlfile, &Globals.tls_crlfile) _PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) -_PUBLIC_ FN_GLOBAL_STRING(lp_logfile, &Globals.szLogFile) _PUBLIC_ FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) _PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) @@ -850,7 +847,6 @@ _PUBLIC_ FN_GLOBAL_LIST(lp_wins_server_list, &Globals.szWINSservers) _PUBLIC_ FN_GLOBAL_LIST(lp_interfaces, &Globals.szInterfaces) _PUBLIC_ FN_GLOBAL_STRING(lp_socket_address, &Globals.szSocketAddress) _PUBLIC_ FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases) -_PUBLIC_ FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction) _PUBLIC_ FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) _PUBLIC_ FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) -- cgit From 25853252e52e12d3424ee4bb6fe684708e4ac203 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 1 Apr 2006 18:25:07 +0000 Subject: r14850: Don't assume that sizeof(BOOL) == sizeof(int) (This used to be commit 1557e1ba6f3576dcd28cb7f05ba97df7b549ba52) --- source4/param/loadparm.c | 92 ++++++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 46 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 21d1e0d57d..ed66fd093c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -128,9 +128,9 @@ typedef struct char *ntptr_providor; char *szWinbindSeparator; char *szWinbinddSocketDirectory; - BOOL bWinbindSealedPipes; + int bWinbindSealedPipes; char *swat_directory; - BOOL tls_enabled; + int tls_enabled; char *tls_keyfile; char *tls_certfile; char *tls_cafile; @@ -142,7 +142,7 @@ typedef struct int minprotocol; int security; char **AuthMethods; - BOOL paranoid_server_security; + int paranoid_server_security; int max_wins_ttl; int min_wins_ttl; int announce_as; /* This is initialised in init_globals */ @@ -153,35 +153,35 @@ typedef struct int kpasswd_port; int web_port; char *socket_options; - BOOL bWINSsupport; - BOOL bWINSdnsProxy; + int bWINSsupport; + int bWINSdnsProxy; char *szWINSHook; - BOOL bLocalMaster; - BOOL bPreferredMaster; - BOOL bEncryptPasswords; - BOOL bNullPasswords; - BOOL bObeyPamRestrictions; - BOOL bLargeReadwrite; - BOOL bReadRaw; - BOOL bWriteRaw; - BOOL bTimeServer; - BOOL bBindInterfacesOnly; - BOOL bNTSmbSupport; - BOOL bNTStatusSupport; - BOOL bLanmanAuth; - BOOL bNTLMAuth; - BOOL bUseSpnego; + int bLocalMaster; + int bPreferredMaster; + int bEncryptPasswords; + int bNullPasswords; + int bObeyPamRestrictions; + int bLargeReadwrite; + int bReadRaw; + int bWriteRaw; + int bTimeServer; + int bBindInterfacesOnly; + int bNTSmbSupport; + int bNTStatusSupport; + int bLanmanAuth; + int bNTLMAuth; + int bUseSpnego; int server_signing; int client_signing; - BOOL bClientPlaintextAuth; - BOOL bClientLanManAuth; - BOOL bClientNTLMv2Auth; - BOOL client_use_spnego_principal; - BOOL bHostMSDfs; - BOOL bUnicode; - BOOL bUnixExtensions; - BOOL bDisableNetbios; - BOOL bRpcBigEndian; + int bClientPlaintextAuth; + int bClientLanManAuth; + int bClientNTLMv2Auth; + int client_use_spnego_principal; + int bHostMSDfs; + int bUnicode; + int bUnixExtensions; + int bDisableNetbios; + int bRpcBigEndian; struct param_opt *param_opt; } global; @@ -193,7 +193,7 @@ static global Globals; */ typedef struct { - BOOL valid; + int valid; char *szService; char *szPath; char *szCopy; @@ -208,18 +208,18 @@ typedef struct int iMaxPrintJobs; int iMaxConnections; int iCSCPolicy; - BOOL bAvailable; - BOOL bBrowseable; - BOOL bRead_only; - BOOL bPrint_ok; - BOOL bMap_system; - BOOL bMap_hidden; - BOOL bMap_archive; - BOOL bStrictLocking; - BOOL *copymap; - BOOL bMSDfsRoot; - BOOL bStrictSync; - BOOL bCIFileSystem; + int bAvailable; + int bBrowseable; + int bRead_only; + int bPrint_ok; + int bMap_system; + int bMap_hidden; + int bMap_archive; + int bStrictLocking; + int *copymap; + int bMSDfsRoot; + int bStrictSync; + int bCIFileSystem; struct param_opt *param_opt; char dummy[3]; /* for alignment */ @@ -918,7 +918,7 @@ static int map_parameter(const char *pszParmName); static int getservicebyname(const char *pszServiceName, service * pserviceDest); static void copy_service(service * pserviceDest, - service * pserviceSource, BOOL *pcopymapDest); + service * pserviceSource, int *pcopymapDest); static BOOL service_ok(int iService); static BOOL do_section(const char *pszSectionName, void *); static void init_copymap(service * pservice); @@ -1399,7 +1399,7 @@ static int getservicebyname(const char *pszServiceName, service * pserviceDest) If pcopymapDest is NULL then copy all fields ***************************************************************************/ -static void copy_service(service * pserviceDest, service * pserviceSource, BOOL *pcopymapDest) +static void copy_service(service * pserviceDest, service * pserviceSource, int *pcopymapDest) { int i; BOOL bcopyall = (pcopymapDest == NULL); @@ -1451,7 +1451,7 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL if (pserviceSource->copymap) memcpy((void *)pserviceDest->copymap, (void *)pserviceSource->copymap, - sizeof(BOOL) * NUMPARAMETERS); + sizeof(int) * NUMPARAMETERS); } data = pserviceSource->param_opt; @@ -1667,7 +1667,7 @@ static void init_copymap(service * pservice) { int i; SAFE_FREE(pservice->copymap); - pservice->copymap = malloc_array_p(BOOL, NUMPARAMETERS); + pservice->copymap = malloc_array_p(int, NUMPARAMETERS); if (!pservice->copymap) DEBUG(0, ("Couldn't allocate copymap!! (size %d)\n", -- cgit From 97fe71c1f54551dfddf5430c185c45d2b881124f Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 4 Apr 2006 16:20:32 +0000 Subject: r14909: Add lp_modulesdir() smb.conf option (This used to be commit eaa68826d34c2bebc3df5e96aed2102debb67964) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index ed66fd093c..922e2f0f04 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -98,6 +98,7 @@ typedef struct char *ncalrpc_dir; char *display_charset; char *szLockDir; + char *szModulesDir; char *szPidDir; char *szSetupDir; char *szServerString; @@ -528,6 +529,7 @@ static struct parm_struct parm_table[] = { {"auto services", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_HIDE}, {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"modules dir", P_STRING, P_GLOBAL, &Globals.szModulesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"js include", P_LIST, P_GLOBAL, &Globals.jsInclude, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"setup directory", P_STRING, P_GLOBAL, &Globals.szSetupDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -629,6 +631,7 @@ static void init_globals(void) do_parameter("pid directory", dyn_PIDDIR, NULL); do_parameter("lock dir", dyn_LOCKDIR, NULL); + do_parameter("modules dir", dyn_MODULESDIR, NULL); do_parameter("ncalrpc dir", dyn_NCALRPCDIR, NULL); do_parameter("socket address", "0.0.0.0", NULL); @@ -828,6 +831,7 @@ _PUBLIC_ FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &Globals.bWinbindSealedPipes) _PUBLIC_ FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) _PUBLIC_ FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) _PUBLIC_ FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_modulesdir, &Globals.szModulesDir) _PUBLIC_ FN_GLOBAL_STRING(lp_setupdir, &Globals.szSetupDir) _PUBLIC_ FN_GLOBAL_STRING(lp_ncalrpc_dir, &Globals.ncalrpc_dir) _PUBLIC_ FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) -- cgit From 9d9e5abdcee6581ff42d7bdcf7b236472cbec347 Mon Sep 17 00:00:00 2001 From: James Peach Date: Mon, 24 Apr 2006 00:38:53 +0000 Subject: r15187: Introduce new param type P_BYTES. This lets config options which specify byte counts be given in convenient units. (This used to be commit 1b8891a2f389c1016c3cfcbe635ed86d015554d8) --- source4/param/loadparm.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 922e2f0f04..a033e0815c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -460,7 +460,7 @@ static struct parm_struct parm_table[] = { {"announce version", P_STRING, P_GLOBAL, &Globals.szAnnounceVersion, NULL, NULL, FLAG_DEVELOPER}, {"announce as", P_ENUM, P_GLOBAL, &Globals.announce_as, NULL, enum_announce_as, FLAG_DEVELOPER}, {"max mux", P_INTEGER, P_GLOBAL, &Globals.max_mux, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"max xmit", P_INTEGER, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"max xmit", P_BYTES, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"name resolve order", P_LIST, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"max wins ttl", P_INTEGER, P_GLOBAL, &Globals.max_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -1061,6 +1061,26 @@ int lp_parm_int(int lookup_service, const char *type, const char *option, int de return default_v; } +/* Return parametric option from a given service. Type is a part of + * option before ':'. + * Parametric option has following syntax: 'Type: option = value'. + */ + +int lp_parm_bytes(int lookup_service, const char *type, const char *option, int default_v) +{ + uint64_t bval; + + const char *value = lp_get_parametric(lookup_service, type, option); + + if (value && conv_str_size(value, &bval)) { + if (bval <= INT_MAX) { + return (int)bval; + } + } + + return default_v; +} + /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ @@ -1829,6 +1849,21 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue *(int *)parm_ptr = atoi(pszParmValue); break; + case P_BYTES: + { + uint64_t val; + if (conv_str_size(pszParmValue, &val)) { + if (val <= INT_MAX) { + *(int *)parm_ptr = (int)val; + break; + } + } + + DEBUG(0,("lp_do_parameter(%s): value is not " + "a valid size specifier!\n", pszParmValue)); + return False; + } + case P_LIST: *(const char ***)parm_ptr = str_list_make(talloc_autofree_context(), pszParmValue, NULL); @@ -2004,6 +2039,7 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) break; case P_INTEGER: + case P_BYTES: fprintf(f, "%d", *(int *)ptr); break; @@ -2039,6 +2075,7 @@ static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) return (*((BOOL *)ptr1) == *((BOOL *)ptr2)); case P_INTEGER: + case P_BYTES: case P_ENUM: return (*((int *)ptr1) == *((int *)ptr2)); @@ -2127,6 +2164,7 @@ static BOOL is_default(int i) return parm_table[i].def.bvalue == *(BOOL *)parm_table[i].ptr; case P_INTEGER: + case P_BYTES: case P_ENUM: return parm_table[i].def.ivalue == *(int *)parm_table[i].ptr; -- cgit From eaaae31d1105a7abe31918c59ae9bfab0010bb51 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 27 Apr 2006 22:59:20 +0000 Subject: r15302: Remove strangely named function "StrnCpy" - strlcpy is available as a replacement. (This used to be commit 72237344cf22dacfaf1d87c3e0b922023fa4afb0) --- source4/param/loadparm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index a033e0815c..b6dec9be9d 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -759,11 +759,11 @@ static const char *lp_string(const char *s) if (!s) *ret = 0; else - StrnCpy(ret, s, len); + strlcpy(ret, s, len); if (trim_string(ret, "\"", "\"")) { if (strchr(ret,'"') != NULL) - StrnCpy(ret, s, len); + strlcpy(ret, s, len); } standard_sub_basic(ret,len+100); -- cgit From 172a83d72491f90f6191be1040ef8b2e1789bd2e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 13 May 2006 19:14:12 +0000 Subject: r15573: Fix build of systems that have iconv headers in non-standard locations Split of system/locale.h header from system/iconv.h Previously, iconv wasn't being used on these systems (This used to be commit aa6d66fda69779d1c2948a1aca85dbd5208f1cba) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index b6dec9be9d..c46cf51f4b 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -58,7 +58,7 @@ #include "dynconfig.h" #include "pstring.h" #include "system/time.h" -#include "system/iconv.h" +#include "system/locale.h" #include "librpc/gen_ndr/svcctl.h" #include "librpc/gen_ndr/samr.h" #include "smb_server/smb_server.h" -- cgit From e0dcbe8dd1d89670a2b4df0415b41b66b70fe487 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sun, 21 May 2006 10:06:15 +0000 Subject: r15769: this functions belong to params/ so move it. metze (This used to be commit 9c4c40772bfd8a8324cd086c2234451d164be5d0) --- source4/param/loadparm.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c46cf51f4b..183cec802d 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2543,6 +2543,24 @@ int lp_servicenumber(const char *pszServiceName) return (iService); } +int lp_find_valid_service(const char *pszServiceName) +{ + int iService; + + iService = lp_servicenumber(pszServiceName); + + if (iService >= 0 && !lp_snum_ok(iService)) { + DEBUG(0,("lp_find_valid_service: Invalid snum %d for '%s'\n",iService, pszServiceName)); + iService = -1; + } + + if (iService == -1) { + DEBUG(3,("lp_find_valid_service: failed to find service '%s'\n", pszServiceName)); + } + + return iService; +} + /******************************************************************* A useful volume label function. ********************************************************************/ -- cgit From 574daba7951b64b6b877db55a92e5a66f3354b4f Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 24 May 2006 06:36:17 +0000 Subject: r15851: the conversion of loadparm to BOOL broke all big-endian platforms as the service and global declarations were left as int. I tried to fix this initially by fixing the service declarations, but it didn't work. While I investigate why, this patch at least gets the use of int right, and should give big-endian platforms a chance (This used to be commit e12ae809eaf0a4c48ebb086615a9051b59996b5a) --- source4/param/loadparm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 183cec802d..3d33da2bcd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -784,7 +784,7 @@ static const char *lp_string(const char *s) #define FN_GLOBAL_LIST(fn_name,ptr) \ const char **fn_name(void) {return(*(const char ***)(ptr));} #define FN_GLOBAL_BOOL(fn_name,ptr) \ - BOOL fn_name(void) {return(*(BOOL *)(ptr));} + BOOL fn_name(void) {return((BOOL)*(int *)(ptr));} #define FN_GLOBAL_CHAR(fn_name,ptr) \ char fn_name(void) {return(*(char *)(ptr));} #define FN_GLOBAL_INTEGER(fn_name,ptr) \ @@ -1443,7 +1443,7 @@ static void copy_service(service * pserviceDest, service * pserviceSource, int * switch (parm_table[i].type) { case P_BOOL: - *(BOOL *)dest_ptr = *(BOOL *)src_ptr; + *(int *)dest_ptr = *(int *)src_ptr; break; case P_INTEGER: @@ -2035,7 +2035,7 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) break; case P_BOOL: - fprintf(f, "%s", BOOLSTR(*(BOOL *)ptr)); + fprintf(f, "%s", BOOLSTR((BOOL)*(int *)ptr)); break; case P_INTEGER: @@ -2072,7 +2072,7 @@ static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) { switch (type) { case P_BOOL: - return (*((BOOL *)ptr1) == *((BOOL *)ptr2)); + return (*((int *)ptr1) == *((int *)ptr2)); case P_INTEGER: case P_BYTES: @@ -2162,7 +2162,7 @@ static BOOL is_default(int i) *(char **)parm_table[i].ptr); case P_BOOL: return parm_table[i].def.bvalue == - *(BOOL *)parm_table[i].ptr; + *(int *)parm_table[i].ptr; case P_INTEGER: case P_BYTES: case P_ENUM: -- cgit From 7bf085571eba5f321d35ff449d68da39ec303dab Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 22 Jun 2006 17:06:36 +0000 Subject: r16464: split client and server min/max protocol settings metze (This used to be commit 6164d1e22e0545f558315591d49f862de06ea945) --- source4/param/loadparm.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 3d33da2bcd..e76d955b5e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -139,8 +139,10 @@ typedef struct int max_mux; int max_xmit; int pwordlevel; - int maxprotocol; - int minprotocol; + int srv_maxprotocol; + int srv_minprotocol; + int cli_maxprotocol; + int cli_minprotocol; int security; char **AuthMethods; int paranoid_server_security; @@ -448,8 +450,10 @@ static struct parm_struct parm_table[] = { {"tls crlfile", P_STRING, P_GLOBAL, &Globals.tls_crlfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"swat directory", P_STRING, P_GLOBAL, &Globals.swat_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, - {"max protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, - {"min protocol", P_ENUM, P_GLOBAL, &Globals.minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, + {"server max protocol", P_ENUM, P_GLOBAL, &Globals.srv_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, + {"server min protocol", P_ENUM, P_GLOBAL, &Globals.srv_minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, + {"client max protocol", P_ENUM, P_GLOBAL, &Globals.cli_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, + {"client min protocol", P_ENUM, P_GLOBAL, &Globals.cli_minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, {"unicode", P_BOOL, P_GLOBAL, &Globals.bUnicode, NULL, NULL, FLAG_DEVELOPER}, {"read raw", P_BOOL, P_GLOBAL, &Globals.bReadRaw, NULL, NULL, FLAG_DEVELOPER}, {"write raw", P_BOOL, P_GLOBAL, &Globals.bWriteRaw, NULL, NULL, FLAG_DEVELOPER}, @@ -647,8 +651,10 @@ static void init_globals(void) do_parameter("max xmit", "12288", NULL); do_parameter("password level", "0", NULL); do_parameter("LargeReadwrite", "True", NULL); - do_parameter("min protocol", "CORE", NULL); - do_parameter("max protocol", "NT1", NULL); + do_parameter("server min protocol", "CORE", NULL); + do_parameter("server max protocol", "NT1", NULL); + do_parameter("client min protocol", "CORE", NULL); + do_parameter("client max protocol", "NT1", NULL); do_parameter("security", "USER", NULL); do_parameter("paranoid server security", "True", NULL); do_parameter("EncryptPasswords", "True", NULL); @@ -882,8 +888,10 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_min_wins_ttl, &Globals.min_wins_ttl) _PUBLIC_ FN_GLOBAL_INTEGER(lp_maxmux, &Globals.max_mux) _PUBLIC_ FN_GLOBAL_INTEGER(lp_max_xmit, &Globals.max_xmit) _PUBLIC_ FN_GLOBAL_INTEGER(lp_passwordlevel, &Globals.pwordlevel) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_maxprotocol, &Globals.maxprotocol) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_minprotocol, &Globals.minprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_maxprotocol, &Globals.srv_maxprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_minprotocol, &Globals.srv_minprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_maxprotocol, &Globals.cli_maxprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_minprotocol, &Globals.cli_minprotocol) _PUBLIC_ FN_GLOBAL_INTEGER(lp_security, &Globals.security) _PUBLIC_ FN_GLOBAL_LIST(lp_auth_methods, &Globals.AuthMethods) _PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) -- cgit From 54fba07f0183d2e45eaf8658f2900445a312524d Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 10 Jul 2006 18:15:24 +0000 Subject: r16923: remove unused substitude code metze (This used to be commit ea88c8c99eff2203d13f9877e590d9d7f2fbb910) --- source4/param/loadparm.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index e76d955b5e..00fffc6108 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -68,6 +68,8 @@ static BOOL bLoaded = False; +#define standard_sub_basic(str,len) + /* some helpful bits */ #define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && ServicePtrs[(i)]->valid) #define VALID(i) ServicePtrs[i]->valid -- cgit From 9c66f601f1520a99b9236c32bc9f03a33bd4b2aa Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Sun, 23 Jul 2006 18:43:07 +0000 Subject: r17206: Add a modular API for share configuration. Commit the classic backwards compatible module which is the default one (This used to be commit a89cc346b9296cb49929898d257a064a6c2bae86) --- source4/param/loadparm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 00fffc6108..64713f74cf 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -107,6 +107,7 @@ typedef struct char *szAutoServices; char *szPasswdChat; char *szConfigFile; + char *szShareBackend; char *szSAM_URL; char *szSPOOLSS_URL; char *szWINS_CONFIG_URL; @@ -531,6 +532,7 @@ static struct parm_struct parm_table[] = { {"Miscellaneous Options", P_SEP, P_SEPARATOR}, {"config file", P_STRING, P_GLOBAL, &Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, + {"share backend", P_STRING, P_GLOBAL, &Globals.szShareBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"preload", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"auto services", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_HIDE}, @@ -591,6 +593,8 @@ static void init_globals(void) do_parameter("config file", dyn_CONFIGFILE, NULL); + do_parameter("share backend", "classic", NULL); + do_parameter("server role", "standalone", NULL); /* options that can be set on the command line must be initialised via @@ -829,6 +833,7 @@ _PUBLIC_ FN_GLOBAL_STRING(lp_tls_crlfile, &Globals.tls_crlfile) _PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) +_PUBLIC_ FN_GLOBAL_STRING(lp_share_backend, &Globals.szShareBackend) _PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, &Globals.szWINS_CONFIG_URL) @@ -1711,6 +1716,7 @@ static void init_copymap(service * pservice) pservice->copymap[i] = True; } +#if 0 /* not used anywhere */ /*************************************************************************** Return the local pointer to a parameter given the service number and the pointer into the default structure. @@ -1720,7 +1726,7 @@ void *lp_local_ptr(int snum, void *ptr) { return (void *)(((char *)ServicePtrs[snum]) + PTR_DIFF(ptr, &sDefault)); } - +#endif /*************************************************************************** Process a parametric option -- cgit From adefa4404cb612d8066b3a19f6fd545428e6441b Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 3 Aug 2006 08:02:54 +0000 Subject: r17379: Pre-generate DH parameters, to avoid doing this at runtime in our testsuite. Andrew Bartlett (This used to be commit 23314c3953676124a2ad06e8b3a3b297c11f2800) --- source4/param/loadparm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 64713f74cf..6a47573932 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -139,6 +139,7 @@ typedef struct char *tls_certfile; char *tls_cafile; char *tls_crlfile; + char *tls_dhpfile; int max_mux; int max_xmit; int pwordlevel; @@ -451,6 +452,7 @@ static struct parm_struct parm_table[] = { {"tls certfile", P_STRING, P_GLOBAL, &Globals.tls_certfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"tls cafile", P_STRING, P_GLOBAL, &Globals.tls_cafile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"tls crlfile", P_STRING, P_GLOBAL, &Globals.tls_crlfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls dh params file", P_STRING, P_GLOBAL, &Globals.tls_dhpfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"swat directory", P_STRING, P_GLOBAL, &Globals.swat_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"server max protocol", P_ENUM, P_GLOBAL, &Globals.srv_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -830,6 +832,7 @@ _PUBLIC_ FN_GLOBAL_STRING(lp_tls_keyfile, &Globals.tls_keyfile) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_certfile, &Globals.tls_certfile) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_cafile, &Globals.tls_cafile) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_crlfile, &Globals.tls_crlfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_dhpfile, &Globals.tls_dhpfile) _PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) -- cgit From c46648b397b307288d06bea776301b11d7135d42 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 14 Aug 2006 09:58:50 +0000 Subject: r17533: add missing include, so that "socket options = TCP_NODELY" as default can work... metze (This used to be commit bec738c2a37bf814073bc38a312808f563597319) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 6a47573932..5867003b52 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -59,6 +59,7 @@ #include "pstring.h" #include "system/time.h" #include "system/locale.h" +#include "system/network.h" /* needed for TCP_NODELAY */ #include "librpc/gen_ndr/svcctl.h" #include "librpc/gen_ndr/samr.h" #include "smb_server/smb_server.h" -- cgit From 12e2e43ca3fe6eaee1f1f440ff1ef21110ad32a7 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 24 Aug 2006 08:48:15 +0000 Subject: r17777: these macros are unused... metze (This used to be commit 45baef570de751412116bf59ae5c91a57635349f) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 5867003b52..0b41c8ed40 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -800,8 +800,10 @@ static const char *lp_string(const char *s) const char **fn_name(void) {return(*(const char ***)(ptr));} #define FN_GLOBAL_BOOL(fn_name,ptr) \ BOOL fn_name(void) {return((BOOL)*(int *)(ptr));} +#if 0 /* unused */ #define FN_GLOBAL_CHAR(fn_name,ptr) \ char fn_name(void) {return(*(char *)(ptr));} +#endif #define FN_GLOBAL_INTEGER(fn_name,ptr) \ int fn_name(void) {return(*(int *)(ptr));} @@ -813,8 +815,10 @@ static const char *lp_string(const char *s) const char **fn_name(int i) {return(const char **)(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} #define FN_LOCAL_BOOL(fn_name,val) \ BOOL fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} +#if 0 /* unused */ #define FN_LOCAL_CHAR(fn_name,val) \ char fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} +#endif #define FN_LOCAL_INTEGER(fn_name,val) \ int fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} -- cgit From 0329d755a7611ba3897fc1ee9bdce410cc33d7f8 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 30 Aug 2006 11:29:34 +0000 Subject: r17930: Merge noinclude branch: * Move dlinklist.h, smb.h to subsystem-specific directories * Clean up ads.h and move what is left of it to dsdb/ (only place where it's used) (This used to be commit f7afa1cb77f3cfa7020b57de12e6003db7cfcc42) --- source4/param/loadparm.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 0b41c8ed40..bf030fdc40 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -53,7 +53,6 @@ */ #include "includes.h" -#include "smb.h" #include "version.h" #include "dynconfig.h" #include "pstring.h" @@ -64,7 +63,7 @@ #include "librpc/gen_ndr/samr.h" #include "smb_server/smb_server.h" #include "libcli/raw/signing.h" -#include "dlinklist.h" +#include "lib/util/dlinklist.h" #include "param/loadparm.h" static BOOL bLoaded = False; @@ -698,7 +697,7 @@ static void init_globals(void) do_parameter("use spnego", "True", NULL); - do_parameter("smb ports", SMB_PORTS, NULL); + do_parameter("smb ports", "445 139", NULL); do_parameter("nbt port", "137", NULL); do_parameter("dgram port", "138", NULL); do_parameter("cldap port", "389", NULL); -- cgit From 89fbfd74605593893d38f70e2db66419f87e4d5c Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 11 Sep 2006 15:44:54 +0000 Subject: r18386: start the unixinfo pipe by default metze (This used to be commit ea44cdfc6f67583bd86d273b4c119e29ce690ca9) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index bf030fdc40..55d15653f6 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -614,7 +614,7 @@ static void init_globals(void) do_parameter("ntvfs handler", "unixuid default", NULL); do_parameter("max connections", "-1", NULL); - do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup", NULL); + do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo", NULL); do_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc winbind", NULL); do_parameter("ntptr providor", "simple_ldb", NULL); do_parameter("auth methods", "anonymous sam_ignoredomain", NULL); -- cgit From 7c017f9015136e8641555576c1aecabaf66cb83e Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 16 Sep 2006 14:58:51 +0000 Subject: r18579: fixed boolean parameters on big endian hosts which have sizeof(BOOL) != sizeof(int) this broke with the conversion to a real BOOL type (This used to be commit 75dab73ac603968ce49c605e07d43051dbfa7398) --- source4/param/loadparm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 55d15653f6..2b2926d053 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1861,11 +1861,14 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue /* now switch on the type of variable it is */ switch (parm_table[parmnum].type) { - case P_BOOL: - if (!set_boolean(pszParmValue, parm_ptr)) { + case P_BOOL: { + BOOL b; + if (!set_boolean(pszParmValue, &b)) { DEBUG(0,("lp_do_parameter(%s): value is not boolean!\n", pszParmValue)); return False; } + *(int *)parm_ptr = b; + } break; case P_INTEGER: -- cgit From c5718959e6a6d0454a870cbd311e707e69c98e85 Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Mon, 25 Sep 2006 02:49:56 +0000 Subject: r18880: JSON-RPC work in progress (This used to be commit 34bffbaebf50c2a75c91285d5ec82e8f377981cc) --- source4/param/loadparm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 2b2926d053..1e5df4fcbe 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -114,6 +114,7 @@ typedef struct char *szWINS_URL; char *szPrivateDir; char **jsInclude; + char *jsonrpcBase; char **szPasswordServers; char *szSocketOptions; char *szRealm; @@ -542,6 +543,7 @@ static struct parm_struct parm_table[] = { {"modules dir", P_STRING, P_GLOBAL, &Globals.szModulesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"js include", P_LIST, P_GLOBAL, &Globals.jsInclude, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"jsonrpc base", P_STRING, P_GLOBAL, &Globals.jsonrpcBase, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"setup directory", P_STRING, P_GLOBAL, &Globals.szSetupDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER}, @@ -911,6 +913,7 @@ _PUBLIC_ FN_GLOBAL_LIST(lp_auth_methods, &Globals.AuthMethods) _PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) static FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) _PUBLIC_ FN_GLOBAL_LIST(lp_js_include, &Globals.jsInclude) +_PUBLIC_ FN_GLOBAL_STRING(lp_jsonrpc_base, &Globals.jsonrpcBase) _PUBLIC_ _PUBLIC_ _PUBLIC_ FN_LOCAL_STRING(lp_servicename, szService) -- cgit From 68453d1da2ad68c1e9cb5d42eb71822ae6f0117b Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Sun, 22 Oct 2006 02:57:28 +0000 Subject: r19449: ldbbrowse: installation hopefully works now. "Developer" installations ('configure.developer' or 'configure --enable-developer') may still have problems as I'm not sure I got all of the paths right for that. With the changes Tridge has made to the Main Menu in swat, given a non-developer installation, you should be able to get to ldbbrowse via: JSON/qooxdoo -> ldb browser Derrell (This used to be commit 2406af10791cd8545c598c8591a48de5515c7dc5) --- source4/param/loadparm.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 1e5df4fcbe..c781a00ae5 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -114,7 +114,7 @@ typedef struct char *szWINS_URL; char *szPrivateDir; char **jsInclude; - char *jsonrpcBase; + char *jsonrpcServicesDir; char **szPasswordServers; char *szSocketOptions; char *szRealm; @@ -543,7 +543,7 @@ static struct parm_struct parm_table[] = { {"modules dir", P_STRING, P_GLOBAL, &Globals.szModulesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"js include", P_LIST, P_GLOBAL, &Globals.jsInclude, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"jsonrpc base", P_STRING, P_GLOBAL, &Globals.jsonrpcBase, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"jsonrpc services directory", P_STRING, P_GLOBAL, &Globals.jsonrpcServicesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"setup directory", P_STRING, P_GLOBAL, &Globals.szSetupDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER}, @@ -707,6 +707,7 @@ static void init_globals(void) do_parameter("kpasswd port", "464", NULL); do_parameter("web port", "901", NULL); do_parameter("swat directory", dyn_SWATDIR, NULL); + do_parameter("jsonrpc services directory", dyn_SERVICESDIR, NULL); do_parameter("nt status support", "True", NULL); @@ -913,7 +914,7 @@ _PUBLIC_ FN_GLOBAL_LIST(lp_auth_methods, &Globals.AuthMethods) _PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) static FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) _PUBLIC_ FN_GLOBAL_LIST(lp_js_include, &Globals.jsInclude) -_PUBLIC_ FN_GLOBAL_STRING(lp_jsonrpc_base, &Globals.jsonrpcBase) +_PUBLIC_ FN_GLOBAL_STRING(lp_jsonrpc_services_dir, &Globals.jsonrpcServicesDir) _PUBLIC_ _PUBLIC_ _PUBLIC_ FN_LOCAL_STRING(lp_servicename, szService) -- cgit From d471e52d23bf89e472c34c58dd9f113e669323a4 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 13 Dec 2006 11:19:51 +0000 Subject: r20149: Remove the smb.conf distinction between PDC and BDC. Now the correct way to setup a Samba4 DC is to set 'server role = domain controller'. We use the fSMORoleOwner attribute in the base DN to determine the PDC. This patch is quite large, as I have corrected a number of places that assumed taht we are always the PDC, or that used the smb.conf lp_server_role() to determine that. Also included is a warning fix in the SAMR code, where the IDL has seperated a couple of types for group display enumeration. We also now use the ldb database to determine if we should run the global catalog service. In the near future, I will complete the DRSUAPI DsGetDomainControllerInfo server-side on the same basis. Andrew Bartlett (This used to be commit 67d8365e831adf3eaecd8b34dcc481fc82565893) --- source4/param/loadparm.c | 113 ++--------------------------------------------- 1 file changed, 4 insertions(+), 109 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c781a00ae5..5094a7f565 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -59,8 +59,6 @@ #include "system/time.h" #include "system/locale.h" #include "system/network.h" /* needed for TCP_NODELAY */ -#include "librpc/gen_ndr/svcctl.h" -#include "librpc/gen_ndr/samr.h" #include "smb_server/smb_server.h" #include "libcli/raw/signing.h" #include "lib/util/dlinklist.h" @@ -274,7 +272,6 @@ static service **ServicePtrs = NULL; static int iNumServices = 0; static int iServiceIndex = 0; static BOOL bInGlobalSection = True; -static int default_server_announce; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) @@ -282,8 +279,6 @@ static int default_server_announce; static BOOL handle_include(const char *pszParmValue, char **ptr); static BOOL handle_copy(const char *pszParmValue, char **ptr); -static void set_default_server_announce_type(void); - static const struct enum_list enum_protocol[] = { {PROTOCOL_SMB2, "SMB2"}, {PROTOCOL_NT1, "NT1"}, @@ -301,12 +296,6 @@ static const struct enum_list enum_security[] = { {-1, NULL} }; -/* Types of machine we can announce as. */ -#define ANNOUNCE_AS_NT_SERVER 1 -#define ANNOUNCE_AS_WIN95 2 -#define ANNOUNCE_AS_WFW 3 -#define ANNOUNCE_AS_NT_WORKSTATION 4 - static const struct enum_list enum_announce_as[] = { {ANNOUNCE_AS_NT_SERVER, "NT"}, {ANNOUNCE_AS_NT_SERVER, "NT Server"}, @@ -365,8 +354,7 @@ static const struct enum_list enum_smb_signing_vals[] = { static const struct enum_list enum_server_role[] = { {ROLE_STANDALONE, "standalone"}, {ROLE_DOMAIN_MEMBER, "member server"}, - {ROLE_DOMAIN_BDC, "bdc"}, - {ROLE_DOMAIN_PDC, "pdc"}, + {ROLE_DOMAIN_CONTROLLER, "domain controller"}, {-1, NULL} }; @@ -886,7 +874,7 @@ _PUBLIC_ FN_GLOBAL_BOOL(lp_writeraw, &Globals.bWriteRaw) _PUBLIC_ FN_GLOBAL_BOOL(lp_null_passwords, &Globals.bNullPasswords) _PUBLIC_ FN_GLOBAL_BOOL(lp_obey_pam_restrictions, &Globals.bObeyPamRestrictions) _PUBLIC_ FN_GLOBAL_BOOL(lp_encrypted_passwords, &Globals.bEncryptPasswords) -static FN_GLOBAL_BOOL(lp_time_server, &Globals.bTimeServer) +_PUBLIC_ FN_GLOBAL_BOOL(lp_time_server, &Globals.bTimeServer) _PUBLIC_ FN_GLOBAL_BOOL(lp_bind_interfaces_only, &Globals.bBindInterfacesOnly) _PUBLIC_ FN_GLOBAL_BOOL(lp_unicode, &Globals.bUnicode) _PUBLIC_ FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport) @@ -912,7 +900,7 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_minprotocol, &Globals.cli_minprotocol) _PUBLIC_ FN_GLOBAL_INTEGER(lp_security, &Globals.security) _PUBLIC_ FN_GLOBAL_LIST(lp_auth_methods, &Globals.AuthMethods) _PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) -static FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) _PUBLIC_ FN_GLOBAL_LIST(lp_js_include, &Globals.jsInclude) _PUBLIC_ FN_GLOBAL_STRING(lp_jsonrpc_services_dir, &Globals.jsonrpcServicesDir) _PUBLIC_ @@ -1373,8 +1361,6 @@ BOOL lp_add_printer(const char *pszPrintername, int iDefaultService) DEBUG(3, ("adding printer service %s\n", pszPrintername)); - update_server_announce_as_printserver(); - return (True); } @@ -1554,7 +1540,6 @@ static BOOL service_ok(int iService) DEBUG(0, ("WARNING: [%s] service MUST be printable!\n", ServicePtrs[iService]->szService)); ServicePtrs[iService]->bPrint_ok = True; - update_server_announce_as_printserver(); } /* [printers] service must also be non-browsable. */ if (ServicePtrs[iService]->bBrowseable) @@ -2380,15 +2365,6 @@ static void lp_add_auto_services(const char *str) return; } -/*************************************************************************** - Announce ourselves as a print server. -***************************************************************************/ - -void update_server_announce_as_printserver(void) -{ - default_server_announce |= SV_TYPE_PRINTQ_SERVER; -} - /*************************************************************************** Have we loaded a services file yet? ***************************************************************************/ @@ -2478,8 +2454,6 @@ BOOL lp_load(void) lp_add_hidden("IPC$", "IPC"); lp_add_hidden("ADMIN$", "DISK"); - set_default_server_announce_type(); - bLoaded = True; if (!Globals.szWINSservers && Globals.bWINSsupport) { @@ -2603,83 +2577,13 @@ const char *volume_label(int snum) } -/******************************************************************* - Set the server type we will announce as via nmbd. -********************************************************************/ - -static void set_default_server_announce_type(void) -{ - default_server_announce = 0; - default_server_announce |= SV_TYPE_WORKSTATION; - default_server_announce |= SV_TYPE_SERVER; - default_server_announce |= SV_TYPE_SERVER_UNIX; - - switch (lp_announce_as()) { - case ANNOUNCE_AS_NT_SERVER: - default_server_announce |= SV_TYPE_SERVER_NT; - /* fall through... */ - case ANNOUNCE_AS_NT_WORKSTATION: - default_server_announce |= SV_TYPE_NT; - break; - case ANNOUNCE_AS_WIN95: - default_server_announce |= SV_TYPE_WIN95_PLUS; - break; - case ANNOUNCE_AS_WFW: - default_server_announce |= SV_TYPE_WFW; - break; - default: - break; - } - - switch (lp_server_role()) { - case ROLE_DOMAIN_MEMBER: - default_server_announce |= SV_TYPE_DOMAIN_MEMBER; - break; - case ROLE_DOMAIN_PDC: - default_server_announce |= SV_TYPE_DOMAIN_CTRL; - break; - case ROLE_DOMAIN_BDC: - default_server_announce |= SV_TYPE_DOMAIN_BAKCTRL; - break; - case ROLE_STANDALONE: - default: - break; - } - if (lp_time_server()) - default_server_announce |= SV_TYPE_TIME_SOURCE; - - if (lp_host_msdfs()) - default_server_announce |= SV_TYPE_DFS_SERVER; - - /* TODO: only announce us as print server when we are a print server */ - default_server_announce |= SV_TYPE_PRINTQ_SERVER; -} - -/*********************************************************** - If we are PDC then prefer us as DMB -************************************************************/ - -BOOL lp_domain_master(void) -{ - return (lp_server_role() == ROLE_DOMAIN_PDC); -} - /*********************************************************** If we are PDC then prefer us as DMB ************************************************************/ BOOL lp_domain_logons(void) { - return (lp_server_role() == ROLE_DOMAIN_PDC) || (lp_server_role() == ROLE_DOMAIN_BDC); -} - -/*********************************************************** - If we are DMB then prefer us as LMB -************************************************************/ - -BOOL lp_preferred_master(void) -{ - return (lp_local_master() && lp_domain_master()); + return (lp_server_role() == ROLE_DOMAIN_CONTROLLER); } /******************************************************************* @@ -2706,15 +2610,6 @@ void lp_copy_service(int snum, const char *new_name) } } - -/******************************************************************* - Get the default server type we will announce as via nmbd. -********************************************************************/ -int lp_default_server_announce(void) -{ - return default_server_announce; -} - const char *lp_printername(int snum) { const char *ret = _lp_printername(snum); -- cgit From 43470b5ec3d451aa75acf2cda40cf2dcc019efab Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Sun, 31 Dec 2006 20:05:29 +0000 Subject: r20444: WEB Application framework / SWAT. We're now at the stage where the web application framework should build and install automatically. Derrell (This used to be commit 0201baef46c1701007e0a4cdd95edee287939318) --- source4/param/loadparm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 5094a7f565..93d9d79ece 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -132,7 +132,7 @@ typedef struct char *szWinbindSeparator; char *szWinbinddSocketDirectory; int bWinbindSealedPipes; - char *swat_directory; + char *webapps_directory; int tls_enabled; char *tls_keyfile; char *tls_certfile; @@ -442,7 +442,7 @@ static struct parm_struct parm_table[] = { {"tls cafile", P_STRING, P_GLOBAL, &Globals.tls_cafile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"tls crlfile", P_STRING, P_GLOBAL, &Globals.tls_crlfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"tls dh params file", P_STRING, P_GLOBAL, &Globals.tls_dhpfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"swat directory", P_STRING, P_GLOBAL, &Globals.swat_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"web application directory", P_STRING, P_GLOBAL, &Globals.webapps_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"server max protocol", P_ENUM, P_GLOBAL, &Globals.srv_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, {"server min protocol", P_ENUM, P_GLOBAL, &Globals.srv_minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -694,7 +694,7 @@ static void init_globals(void) do_parameter("krb5 port", "88", NULL); do_parameter("kpasswd port", "464", NULL); do_parameter("web port", "901", NULL); - do_parameter("swat directory", dyn_SWATDIR, NULL); + do_parameter("web application directory", dyn_WEBAPPSDIR, NULL); do_parameter("jsonrpc services directory", dyn_SERVICESDIR, NULL); do_parameter("nt status support", "True", NULL); @@ -821,7 +821,7 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_krb5_port, &Globals.krb5_port) _PUBLIC_ FN_GLOBAL_INTEGER(lp_kpasswd_port, &Globals.kpasswd_port) _PUBLIC_ FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) _PUBLIC_ FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) -_PUBLIC_ FN_GLOBAL_STRING(lp_swat_directory, &Globals.swat_directory) +_PUBLIC_ FN_GLOBAL_STRING(lp_webapps_directory, &Globals.webapps_directory) _PUBLIC_ FN_GLOBAL_BOOL(lp_tls_enabled, &Globals.tls_enabled) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_keyfile, &Globals.tls_keyfile) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_certfile, &Globals.tls_certfile) -- cgit From 9f802707d8623955c3ef173125e0837f6daa89cd Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 15 Jan 2007 14:17:26 +0000 Subject: r20806: make it possible to configure the secrets.ldb url via "secrets database = my_secrets.ldb" metze (This used to be commit a096a9741597105140845f59e54a76060da0010b) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 93d9d79ece..98724a107d 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -107,6 +107,7 @@ typedef struct char *szConfigFile; char *szShareBackend; char *szSAM_URL; + char *szSECRETS_URL; char *szSPOOLSS_URL; char *szWINS_CONFIG_URL; char *szWINS_URL; @@ -403,6 +404,7 @@ static struct parm_struct parm_table[] = { {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"password server", P_LIST, P_GLOBAL, &Globals.szPasswordServers, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"sam database", P_STRING, P_GLOBAL, &Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"secrets database", P_STRING, P_GLOBAL, &Globals.szSECRETS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"spoolss database", P_STRING, P_GLOBAL, &Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"wins config database", P_STRING, P_GLOBAL, &Globals.szWINS_CONFIG_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"wins database", P_STRING, P_GLOBAL, &Globals.szWINS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -610,6 +612,7 @@ static void init_globals(void) do_parameter("auth methods", "anonymous sam_ignoredomain", NULL); do_parameter("private dir", dyn_PRIVATE_DIR, NULL); do_parameter("sam database", "sam.ldb", NULL); + do_parameter("secrets database", "secrets.ldb", NULL); do_parameter("spoolss database", "spoolss.ldb", NULL); do_parameter("wins config database", "wins_config.ldb", NULL); do_parameter("wins database", "wins.ldb", NULL); @@ -833,6 +836,7 @@ _PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) _PUBLIC_ FN_GLOBAL_STRING(lp_share_backend, &Globals.szShareBackend) _PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_secrets_url, &Globals.szSECRETS_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, &Globals.szWINS_CONFIG_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) -- cgit From 9142a00cb7678e9a63177562978307936ed80a83 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 23 Jan 2007 16:22:27 +0000 Subject: r20977: start the 'drepl' service, which currently does nothing by default, but make it less verbose metze (This used to be commit f7e82a0c94fc8996827ea8d8a9b459bcaee029de) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 98724a107d..b98a75e441 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -607,7 +607,7 @@ static void init_globals(void) do_parameter("max connections", "-1", NULL); do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo", NULL); - do_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc winbind", NULL); + do_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc drepl winbind", NULL); do_parameter("ntptr providor", "simple_ldb", NULL); do_parameter("auth methods", "anonymous sam_ignoredomain", NULL); do_parameter("private dir", dyn_PRIVATE_DIR, NULL); -- cgit From fdbc8e29c7c87e415d7e43589234526722698bd6 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 17 Jun 2007 20:02:56 +0000 Subject: r23532: added lp_parm_double() (This used to be commit 524ba04b1f6996023886190eee8a226b08aafa35) --- source4/param/loadparm.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index b98a75e441..9bcf9aada7 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1016,6 +1016,20 @@ static int lp_ulong(const char *s) return strtoul(s, NULL, 0); } +/******************************************************************* +convenience routine to return unsigned long parameters. +********************************************************************/ +static double lp_double(const char *s) +{ + + if (!s) { + DEBUG(0,("lp_double(%s): is called with NULL!\n",s)); + return (-1); + } + + return strtod(s, NULL); +} + /******************************************************************* convenience routine to return boolean parameters. ********************************************************************/ @@ -1112,6 +1126,17 @@ unsigned long lp_parm_ulong(int lookup_service, const char *type, const char *op return default_v; } + +double lp_parm_double(int lookup_service, const char *type, const char *option, double default_v) +{ + const char *value = lp_get_parametric(lookup_service, type, option); + + if (value) + return lp_double(value); + + return default_v; +} + /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -- cgit From 222c6dd7818c729540079cc480ee56812681854e Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 3 Jul 2007 08:05:55 +0000 Subject: r23680: Make it easier to setup a domain member server - the 'server role' will now control the auth methods, but an override is still available, ex: auth methods:domain controller = Andrew Bartlett (This used to be commit b7e727186ed8eda6a68c873e089f655dc24fe8ae) --- source4/param/loadparm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 9bcf9aada7..8371b94a50 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -398,7 +398,6 @@ static struct parm_struct parm_table[] = { {"Security Options", P_SEP, P_SEPARATOR}, {"security", P_ENUM, P_GLOBAL, &Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"auth methods", P_LIST, P_GLOBAL, &Globals.AuthMethods, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"encrypt passwords", P_BOOL, P_GLOBAL, &Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"null passwords", P_BOOL, P_GLOBAL, &Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -609,7 +608,9 @@ static void init_globals(void) do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo", NULL); do_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc drepl winbind", NULL); do_parameter("ntptr providor", "simple_ldb", NULL); - do_parameter("auth methods", "anonymous sam_ignoredomain", NULL); + do_parameter("auth methods:domain controller", "anonymous sam_ignoredomain", NULL); + do_parameter("auth methods:member server", "anonymous sam winbind", NULL); + do_parameter("auth methods:standalone", "anonymous sam_ignoredomain", NULL); do_parameter("private dir", dyn_PRIVATE_DIR, NULL); do_parameter("sam database", "sam.ldb", NULL); do_parameter("secrets database", "secrets.ldb", NULL); -- cgit From b540bc85ff8140424e9e925aa73f1f1cacfbd64a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 4 Jul 2007 04:15:07 +0000 Subject: r23696: added the create mask and related share permissions options to Samba4, using the new share_int_option() code from Simo speaking of which, this is the first time I've looked closely at the share_classic.c code. It is absolutely and completely braindead and broken. Whatever drugs Simo was on at the time, he better not try to cross a border with them on him! Problems with it: - if you actually set a value, it gets ignored, and the defvalue gets used instead ('ret' is never returned). If you don't set a value, then defvalue gets returned too. Sound useful? - it means we now have to list parameters in source/param/ in lots and lots of places, all of which have to match exactly. code like this is supposed to reduce the likelyhood of errors, not increase it! - code which has a long line of if() statements with strcmp() should cause your fingers to burn on the keyboard when you type it in. That's what structure lists are for. Strangely enough, we have all the info in loadparm.c in a structure list, but instead it gets replicated in share_classic.c in this strange if() strcmp() form expect some changes to this code shortly. I'll need a calming cup of tea first though :-) (This used to be commit 19a9fc2f444efc0894b06a249daf73ed555b61e2) --- source4/param/loadparm.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8371b94a50..dd52c55edf 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -223,6 +223,10 @@ typedef struct int bMap_hidden; int bMap_archive; int bStrictLocking; + int iCreate_mask; + int iCreate_force_mode; + int iDir_mask; + int iDir_force_mode; int *copymap; int bMSDfsRoot; int bStrictSync; @@ -259,6 +263,10 @@ static service sDefault = { False, /* bMap_hidden */ True, /* bMap_archive */ True, /* bStrictLocking */ + 0744, /* iCreate_mask */ + 0000, /* iCreate_force_mode */ + 0755, /* iDir_mask */ + 0000, /* iDir_force_mode */ NULL, /* copymap */ False, /* bMSDfsRoot */ False, /* bStrictSync */ @@ -419,6 +427,11 @@ static struct parm_struct parm_table[] = { {"read only", P_BOOL, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE}, + {"create mask", P_OCTAL, P_LOCAL, &sDefault.iCreate_mask, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, + {"force create mode", P_OCTAL, P_LOCAL, &sDefault.iCreate_force_mode, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, + {"directory mask", P_OCTAL, P_LOCAL, &sDefault.iDir_mask, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, + {"force directory mode", P_OCTAL, P_LOCAL, &sDefault.iDir_force_mode, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, + {"hosts allow", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, @@ -932,6 +945,10 @@ _PUBLIC_ FN_LOCAL_BOOL(lp_ci_filesystem, bCIFileSystem) _PUBLIC_ FN_LOCAL_BOOL(lp_map_system, bMap_system) _PUBLIC_ FN_LOCAL_INTEGER(lp_max_connections, iMaxConnections) _PUBLIC_ FN_LOCAL_INTEGER(lp_csc_policy, iCSCPolicy) +_PUBLIC_ FN_LOCAL_INTEGER(lp_create_mask, iCreate_mask) +_PUBLIC_ FN_LOCAL_INTEGER(lp_force_create_mode, iCreate_force_mode) +_PUBLIC_ FN_LOCAL_INTEGER(lp_dir_mask, iDir_mask) +_PUBLIC_ FN_LOCAL_INTEGER(lp_force_dir_mode, iDir_force_mode) _PUBLIC_ FN_GLOBAL_INTEGER(lp_server_signing, &Globals.server_signing) _PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, &Globals.client_signing) @@ -1489,6 +1506,7 @@ static void copy_service(service * pserviceDest, service * pserviceSource, int * break; case P_INTEGER: + case P_OCTAL: case P_ENUM: *(int *)dest_ptr = *(int *)src_ptr; break; @@ -1894,6 +1912,10 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue *(int *)parm_ptr = atoi(pszParmValue); break; + case P_OCTAL: + *(int *)parm_ptr = strtol(pszParmValue, NULL, 8); + break; + case P_BYTES: { uint64_t val; @@ -2088,6 +2110,10 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) fprintf(f, "%d", *(int *)ptr); break; + case P_OCTAL: + fprintf(f, "0%o", *(int *)ptr); + break; + case P_LIST: if ((char ***)ptr && *(char ***)ptr) { char **list = *(char ***)ptr; @@ -2120,6 +2146,7 @@ static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) return (*((int *)ptr1) == *((int *)ptr2)); case P_INTEGER: + case P_OCTAL: case P_BYTES: case P_ENUM: return (*((int *)ptr1) == *((int *)ptr2)); @@ -2209,6 +2236,7 @@ static BOOL is_default(int i) return parm_table[i].def.bvalue == *(int *)parm_table[i].ptr; case P_INTEGER: + case P_OCTAL: case P_BYTES: case P_ENUM: return parm_table[i].def.ivalue == -- cgit From 0479a2f1cbae51fcd8dbdc3c148c808421fb4d25 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 10 Jul 2007 02:07:03 +0000 Subject: r23792: convert Samba4 to GPLv3 There are still a few tidyups of old FSF addresses to come (in both s3 and s4). More commits soon. (This used to be commit fcf38a38ac691abd0fa51b89dc951a08e89fdafa) --- source4/param/loadparm.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index dd52c55edf..fc123509bd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -13,7 +13,7 @@ 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 + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -22,8 +22,7 @@ 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. + along with this program. If not, see . */ /* -- cgit From a21ea3351af893618c0356c49b5033bf7509044d Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 12 Jul 2007 04:56:33 +0000 Subject: r23848: Thanks to derrell for pointing out that I had not finished my patch to split out the auth methods. This caused all SWAT logins to fail, except when using local system authentication. Andrew Bartlett (This used to be commit b5a9d507a37cd46bd325ff3118c08b4362f267f2) --- source4/param/loadparm.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index fc123509bd..85044e3a04 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -147,7 +147,6 @@ typedef struct int cli_maxprotocol; int cli_minprotocol; int security; - char **AuthMethods; int paranoid_server_security; int max_wins_ttl; int min_wins_ttl; @@ -915,7 +914,6 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_minprotocol, &Globals.srv_minprotocol) _PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_maxprotocol, &Globals.cli_maxprotocol) _PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_minprotocol, &Globals.cli_minprotocol) _PUBLIC_ FN_GLOBAL_INTEGER(lp_security, &Globals.security) -_PUBLIC_ FN_GLOBAL_LIST(lp_auth_methods, &Globals.AuthMethods) _PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) _PUBLIC_ FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) _PUBLIC_ FN_GLOBAL_LIST(lp_js_include, &Globals.jsInclude) -- cgit From ae00e7e9b0b16c018e9d006a1eef7437ef21d962 Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Mon, 13 Aug 2007 14:43:18 +0000 Subject: r24363: Add template shell and template homedir settings to smb.conf (This used to be commit c7a44fcdc80cad5507750b110ac8ef7e8db815b5) --- source4/param/loadparm.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 85044e3a04..4e9732630f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -131,6 +131,8 @@ typedef struct char *ntptr_providor; char *szWinbindSeparator; char *szWinbinddSocketDirectory; + char *szTemplateShell; + char *szTemplateHomedir; int bWinbindSealedPipes; char *webapps_directory; int tls_enabled; @@ -563,6 +565,8 @@ static struct parm_struct parm_table[] = { {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {"winbindd socket directory", P_STRING, P_GLOBAL, &Globals.szWinbinddSocketDirectory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {"winbind sealed pipes", P_BOOL, P_GLOBAL, &Globals.bWinbindSealedPipes, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"template shell", P_STRING, P_GLOBAL, &Globals.szTemplateShell, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"template homedir", P_STRING, P_GLOBAL, &Globals.szTemplateHomedir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} }; @@ -696,6 +700,8 @@ static void init_globals(void) do_parameter("winbind separator", "\\", NULL); do_parameter("winbind sealed pipes", "True", NULL); do_parameter("winbindd socket directory", dyn_WINBINDD_SOCKET_DIR, NULL); + do_parameter("template shell", "/bin/false", NULL); + do_parameter("template homedir", "/home/%WORKGROUP%/%ACCOUNTNAME%", NULL); do_parameter("client signing", "Yes", NULL); do_parameter("server signing", "auto", NULL); @@ -854,6 +860,8 @@ _PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, &Globals.szWINS_CONFIG_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, &Globals.szWinbinddSocketDirectory) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_shell, &Globals.szTemplateShell) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_homedir, &Globals.szTemplateHomedir) _PUBLIC_ FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &Globals.bWinbindSealedPipes) _PUBLIC_ FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) _PUBLIC_ FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) -- cgit From 0b91f3916430d0271eab867675d44c5439de40c2 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 29 Aug 2007 13:07:03 +0000 Subject: r24780: More work allowing libutil to be used by external users. (This used to be commit 31993cf67b816a184a4a4e92ef8ca2532c797190) --- source4/param/loadparm.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 4e9732630f..483aa1f10b 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -76,7 +76,6 @@ static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...); static BOOL defaults_saved = False; - struct param_opt { struct param_opt *prev, *next; char *key; @@ -92,10 +91,7 @@ typedef struct int server_role; char **smb_ports; - char *dos_charset; - char *unix_charset; char *ncalrpc_dir; - char *display_charset; char *szLockDir; char *szModulesDir; char *szPidDir; @@ -178,8 +174,8 @@ typedef struct int bLanmanAuth; int bNTLMAuth; int bUseSpnego; - int server_signing; - int client_signing; + int server_signing; + int client_signing; int bClientPlaintextAuth; int bClientLanManAuth; int bClientNTLMv2Auth; @@ -383,10 +379,10 @@ static struct parm_struct parm_table[] = { {"server role", P_ENUM, P_GLOBAL, &Globals.server_role, NULL, enum_server_role, FLAG_BASIC}, - {"dos charset", P_STRING, P_GLOBAL, &Globals.dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"unix charset", P_STRING, P_GLOBAL, &Globals.unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"dos charset", P_STRING, P_GLOBAL, &dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"unix charset", P_STRING, P_GLOBAL, &unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"ncalrpc dir", P_STRING, P_GLOBAL, &Globals.ncalrpc_dir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"display charset", P_STRING, P_GLOBAL, &Globals.display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"display charset", P_STRING, P_GLOBAL, &display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_HIDE}, @@ -841,7 +837,7 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) _PUBLIC_ FN_GLOBAL_INTEGER(lp_krb5_port, &Globals.krb5_port) _PUBLIC_ FN_GLOBAL_INTEGER(lp_kpasswd_port, &Globals.kpasswd_port) _PUBLIC_ FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) -_PUBLIC_ FN_GLOBAL_STRING(lp_dos_charset, &Globals.dos_charset) +_PUBLIC_ FN_GLOBAL_STRING(lp_dos_charset, &dos_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_webapps_directory, &Globals.webapps_directory) _PUBLIC_ FN_GLOBAL_BOOL(lp_tls_enabled, &Globals.tls_enabled) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_keyfile, &Globals.tls_keyfile) @@ -849,8 +845,8 @@ _PUBLIC_ FN_GLOBAL_STRING(lp_tls_certfile, &Globals.tls_certfile) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_cafile, &Globals.tls_cafile) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_crlfile, &Globals.tls_crlfile) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_dhpfile, &Globals.tls_dhpfile) -_PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, &Globals.unix_charset) -_PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, &Globals.display_charset) +_PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, &unix_charset) +_PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, &display_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) _PUBLIC_ FN_GLOBAL_STRING(lp_share_backend, &Globals.szShareBackend) _PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) -- cgit From 482579bc5f5fd42899e2e299788010ea41a59b1e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 7 Sep 2007 23:37:00 +0000 Subject: r25012: Avoid use of pstring, fix coding style a bit. (This used to be commit 66c53801dd7476ef350ff2aac83964d991d3e7dd) --- source4/param/loadparm.c | 127 +++++++++++++++++++++++------------------------ 1 file changed, 61 insertions(+), 66 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 483aa1f10b..3df48fce21 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -54,7 +54,6 @@ #include "includes.h" #include "version.h" #include "dynconfig.h" -#include "pstring.h" #include "system/time.h" #include "system/locale.h" #include "system/network.h" /* needed for TCP_NODELAY */ @@ -62,19 +61,20 @@ #include "libcli/raw/signing.h" #include "lib/util/dlinklist.h" #include "param/loadparm.h" +#include "pstring.h" -static BOOL bLoaded = False; +static bool bLoaded = false; -#define standard_sub_basic(str,len) +#define standard_sub_basic strdup /* some helpful bits */ #define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && ServicePtrs[(i)]->valid) #define VALID(i) ServicePtrs[i]->valid -static BOOL do_parameter(const char *, const char *, void *); -static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...); +static bool do_parameter(const char *, const char *, void *); +static bool do_parameter_var(const char *pszParmName, const char *fmt, ...); -static BOOL defaults_saved = False; +static bool defaults_saved = False; struct param_opt { struct param_opt *prev, *next; @@ -1015,7 +1015,7 @@ static int lp_int(const char *s) if (!s) { DEBUG(0,("lp_int(%s): is called with NULL!\n",s)); - return (-1); + return -1; } return strtol(s, NULL, 0); @@ -1029,7 +1029,7 @@ static int lp_ulong(const char *s) if (!s) { DEBUG(0,("lp_int(%s): is called with NULL!\n",s)); - return (-1); + return -1; } return strtoul(s, NULL, 0); @@ -1043,7 +1043,7 @@ static double lp_double(const char *s) if (!s) { DEBUG(0,("lp_double(%s): is called with NULL!\n",s)); - return (-1); + return -1; } return strtod(s, NULL); @@ -1257,7 +1257,7 @@ static int add_a_service(const service *pservice, const char *name) data = pdata; } ServicePtrs[i]->param_opt = NULL; - return (i); + return i; } } @@ -1274,7 +1274,7 @@ static int add_a_service(const service *pservice, const char *name) if (!tsp) { DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n")); - return (-1); + return -1; } else { ServicePtrs = tsp; @@ -1282,7 +1282,7 @@ static int add_a_service(const service *pservice, const char *name) } if (!ServicePtrs[iNumServices]) { DEBUG(0,("add_a_service: out of memory!\n")); - return (-1); + return -1; } iNumServices++; @@ -1295,7 +1295,7 @@ static int add_a_service(const service *pservice, const char *name) copy_service(ServicePtrs[i], &tservice, NULL); if (name) string_set(&ServicePtrs[i]->szService, name); - return (i); + return i; } /*************************************************************************** @@ -1312,7 +1312,7 @@ BOOL lp_add_home(const char *pszHomename, int iDefaultService, i = add_a_service(ServicePtrs[iDefaultService], pszHomename); if (i < 0) - return (False); + return false; if (!(*(ServicePtrs[iDefaultService]->szPath)) || strequal(ServicePtrs[iDefaultService]->szPath, lp_pathname(-1))) { @@ -1336,7 +1336,7 @@ BOOL lp_add_home(const char *pszHomename, int iDefaultService, DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", pszHomename, user, newHomedir)); - return (True); + return true; } /*************************************************************************** @@ -1345,20 +1345,20 @@ BOOL lp_add_home(const char *pszHomename, int iDefaultService, int lp_add_service(const char *pszService, int iDefaultService) { - return (add_a_service(ServicePtrs[iDefaultService], pszService)); + return add_a_service(ServicePtrs[iDefaultService], pszService); } /*************************************************************************** Add the IPC service. ***************************************************************************/ -static BOOL lp_add_hidden(const char *name, const char *fstype) +static bool lp_add_hidden(const char *name, const char *fstype) { pstring comment; int i = add_a_service(&sDefault, name); if (i < 0) - return (False); + return false; slprintf(comment, sizeof(comment) - 1, "%s Service (%s)", fstype, Globals.szServerString); @@ -1369,8 +1369,8 @@ static BOOL lp_add_hidden(const char *name, const char *fstype) ServicePtrs[i]->iMaxConnections = -1; ServicePtrs[i]->bAvailable = True; ServicePtrs[i]->bRead_only = True; - ServicePtrs[i]->bPrint_ok = False; - ServicePtrs[i]->bBrowseable = False; + ServicePtrs[i]->bPrint_ok = false; + ServicePtrs[i]->bBrowseable = false; if (strcasecmp(fstype, "IPC") == 0) { lp_do_parameter(i, "ntvfs handler", "default"); @@ -1378,20 +1378,20 @@ static BOOL lp_add_hidden(const char *name, const char *fstype) DEBUG(3, ("adding hidden service %s\n", name)); - return (True); + return true; } /*************************************************************************** Add a new printer service, with defaults coming from service iFrom. ***************************************************************************/ -BOOL lp_add_printer(const char *pszPrintername, int iDefaultService) +bool lp_add_printer(const char *pszPrintername, int iDefaultService) { const char *comment = "From Printcap"; int i = add_a_service(ServicePtrs[iDefaultService], pszPrintername); if (i < 0) - return (False); + return false; /* note that we do NOT default the availability flag to True - */ /* we take it from the default service passed. This allows all */ @@ -1409,7 +1409,7 @@ BOOL lp_add_printer(const char *pszPrintername, int iDefaultService) DEBUG(3, ("adding printer service %s\n", pszPrintername)); - return (True); + return true; } /*************************************************************************** @@ -1422,11 +1422,11 @@ static int map_parameter(const char *pszParmName) int iIndex; if (*pszParmName == '-') - return (-1); + return -1; for (iIndex = 0; parm_table[iIndex].label; iIndex++) if (strwicmp(parm_table[iIndex].label, pszParmName) == 0) - return (iIndex); + return iIndex; /* Warn only if it isn't parametric option */ if (strchr(pszParmName, ':') == NULL) @@ -1434,7 +1434,7 @@ static int map_parameter(const char *pszParmName) /* We do return 'fail' for parametric options as well because they are stored in different storage */ - return (-1); + return -1; } @@ -1475,7 +1475,7 @@ static int getservicebyname(const char *pszServiceName, service * pserviceDest) break; } - return (iService); + return iService; } /*************************************************************************** @@ -1483,12 +1483,13 @@ static int getservicebyname(const char *pszServiceName, service * pserviceDest) If pcopymapDest is NULL then copy all fields ***************************************************************************/ -static void copy_service(service * pserviceDest, service * pserviceSource, int *pcopymapDest) +static void copy_service(service *pserviceDest, service *pserviceSource, + int *pcopymapDest) { int i; - BOOL bcopyall = (pcopymapDest == NULL); + bool bcopyall = (pcopymapDest == NULL); struct param_opt *data, *pdata, *paramo; - BOOL not_added; + bool not_added; for (i = 0; parm_table[i].label; i++) if (parm_table[i].ptr && parm_table[i].class == P_LOCAL && @@ -1600,7 +1601,7 @@ static BOOL service_ok(int iService) DEBUG(1, ("NOTE: Service %s is flagged unavailable.\n", ServicePtrs[iService]->szService)); - return (bRetval); + return bRetval; } static struct file_lists { @@ -1659,11 +1660,10 @@ BOOL lp_file_list_changed(void) DEBUG(6, ("lp_file_list_changed()\n")); while (f) { - pstring n2; + char *n2; time_t mod_time; - pstrcpy(n2, f->name); - standard_sub_basic(n2,sizeof(n2)); + n2 = standard_sub_basic(f->name); DEBUGADD(6, ("file %s -> %s last mod_time: %s\n", f->name, n2, ctime(&f->modtime))); @@ -1677,34 +1677,31 @@ BOOL lp_file_list_changed(void) f->modtime = mod_time; SAFE_FREE(f->subfname); f->subfname = strdup(n2); - return (True); + return true; } f = f->next; } - return (False); + return false; } /*************************************************************************** Handle the include operation. ***************************************************************************/ -static BOOL handle_include(const char *pszParmValue, char **ptr) +static bool handle_include(const char *pszParmValue, char **ptr) { - pstring fname; - pstrcpy(fname, pszParmValue); - - standard_sub_basic(fname,sizeof(fname)); + char *fname = standard_sub_basic(pszParmValue); add_to_file_list(pszParmValue, fname); string_set(ptr, fname); if (file_exist(fname)) - return (pm_process(fname, do_section, do_parameter, NULL)); + return pm_process(fname, do_section, do_parameter, NULL); DEBUG(2, ("Can't find include file %s\n", fname)); - return (False); + return false; } /*************************************************************************** @@ -1740,7 +1737,7 @@ static BOOL handle_copy(const char *pszParmValue, char **ptr) } free_service(&serviceTemp); - return (bRetval); + return bRetval; } /*************************************************************************** @@ -1848,7 +1845,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue return lp_do_parameter_parametric(snum, pszParmName, pszParmValue, 0); } DEBUG(0, ("Ignoring unknown parameter \"%s\"\n", pszParmName)); - return (True); + return true; } if (parm_table[parmnum].flags & FLAG_DEPRECATED) { @@ -1872,7 +1869,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue DEBUG(0, ("Global parameter %s found in service section!\n", pszParmName)); - return (True); + return true; } parm_ptr = ((char *)ServicePtrs[snum]) + PTR_DIFF(def_ptr, @@ -1893,7 +1890,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue /* if it is a special case then go ahead */ if (parm_table[parmnum].special) { parm_table[parmnum].special(pszParmValue, (char **)parm_ptr); - return (True); + return true; } /* now switch on the type of variable it is */ @@ -1978,7 +1975,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue } } - return (True); + return true; } /*************************************************************************** @@ -1987,8 +1984,8 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue static BOOL do_parameter(const char *pszParmName, const char *pszParmValue, void *userdata) { - return (lp_do_parameter(bInGlobalSection ? -2 : iServiceIndex, - pszParmName, pszParmValue)); + return lp_do_parameter(bInGlobalSection ? -2 : iServiceIndex, + pszParmName, pszParmValue); } /* @@ -2169,7 +2166,7 @@ static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) case P_SEP: break; } - return (False); + return false; } /*************************************************************************** @@ -2191,7 +2188,7 @@ static BOOL do_section(const char *pszSectionName, void *userdata) /* check for multiple global sections */ if (bInGlobalSection) { DEBUG(3, ("Processing section \"[%s]\"\n", pszSectionName)); - return (True); + return true; } /* if we have a current service, tidy it up before moving on */ @@ -2209,11 +2206,11 @@ static BOOL do_section(const char *pszSectionName, void *userdata) if ((iServiceIndex = add_a_service(&sDefault, pszSectionName)) < 0) { DEBUG(0, ("Failed to add a new service\n")); - return (False); + return false; } } - return (bRetval); + return bRetval; } @@ -2430,7 +2427,7 @@ static void lp_add_auto_services(const char *str) BOOL lp_loaded(void) { - return (bLoaded); + return bLoaded; } /*************************************************************************** @@ -2470,7 +2467,7 @@ void lp_killservice(int iServiceIn) BOOL lp_load(void) { - pstring n2; + char *n2; BOOL bRetval; struct param_opt *data; @@ -2492,8 +2489,7 @@ BOOL lp_load(void) init_globals(); - pstrcpy(n2, lp_configfile()); - standard_sub_basic(n2,sizeof(n2)); + n2 = standard_sub_basic(lp_configfile()); DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); add_to_file_list(lp_configfile(), n2); @@ -2521,7 +2517,7 @@ BOOL lp_load(void) init_iconv(); - return (bRetval); + return bRetval; } /*************************************************************************** @@ -2539,7 +2535,7 @@ void lp_resetnumservices(void) int lp_numservices(void) { - return (iNumServices); + return iNumServices; } /*************************************************************************** @@ -2584,7 +2580,7 @@ does not copy the found service. int lp_servicenumber(const char *pszServiceName) { int iService; - fstring serviceName; + char *serviceName; for (iService = iNumServices - 1; iService >= 0; iService--) { @@ -2593,8 +2589,7 @@ int lp_servicenumber(const char *pszServiceName) * The substitution here is used to support %U is * service names */ - fstrcpy(serviceName, ServicePtrs[iService]->szService); - standard_sub_basic(serviceName,sizeof(serviceName)); + serviceName = standard_sub_basic(ServicePtrs[iService]->szService); if (strequal(serviceName, pszServiceName)) break; } @@ -2603,7 +2598,7 @@ int lp_servicenumber(const char *pszServiceName) if (iService < 0) DEBUG(7,("lp_servicenumber: couldn't find %s\n", pszServiceName)); - return (iService); + return iService; } int lp_find_valid_service(const char *pszServiceName) @@ -2632,7 +2627,7 @@ const char *volume_label(int snum) const char *ret = lp_volume(snum); if (!*ret) return lp_servicename(snum); - return (ret); + return ret; } -- cgit From ee2ef3e5f06885a2dd1ea27318ff05d2aff401a8 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 00:07:50 +0000 Subject: r25013: Use talloc to allocate services in loadparm, use pointer to indicate validity. (This used to be commit b8fc4435f8e26aa6abc4c11cde0a26d37083a732) --- source4/param/loadparm.c | 111 ++++++++++++++++++++++++----------------------- 1 file changed, 56 insertions(+), 55 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 3df48fce21..eaa61ef12e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -10,6 +10,7 @@ Copyright (C) Stefan (metze) Metzmacher 2002 Copyright (C) Jim McDonough (jmcd@us.ibm.com) 2003. Copyright (C) James Myers 2003 + Copyright (C) Jelmer Vernooij 2007 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 @@ -68,13 +69,13 @@ static bool bLoaded = false; #define standard_sub_basic strdup /* some helpful bits */ -#define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && ServicePtrs[(i)]->valid) -#define VALID(i) ServicePtrs[i]->valid +#define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && VALID(i)) +#define VALID(i) (ServicePtrs[i] != NULL) static bool do_parameter(const char *, const char *, void *); static bool do_parameter_var(const char *pszParmName, const char *fmt, ...); -static bool defaults_saved = False; +static bool defaults_saved = false; struct param_opt { struct param_opt *prev, *next; @@ -88,7 +89,7 @@ struct param_opt { */ typedef struct { - int server_role; + enum server_role server_role; char **smb_ports; char *ncalrpc_dir; @@ -196,7 +197,6 @@ static global Globals; */ typedef struct { - int valid; char *szService; char *szPath; char *szCopy; @@ -236,7 +236,6 @@ service; /* This is a default service used to prime a services structure */ static service sDefault = { - True, /* valid */ NULL, /* szService */ NULL, /* szPath */ NULL, /* szCopy */ @@ -276,13 +275,13 @@ static service sDefault = { static service **ServicePtrs = NULL; static int iNumServices = 0; static int iServiceIndex = 0; -static BOOL bInGlobalSection = True; +static bool bInGlobalSection = True; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) /* prototypes for the special type handlers */ -static BOOL handle_include(const char *pszParmValue, char **ptr); -static BOOL handle_copy(const char *pszParmValue, char **ptr); +static bool handle_include(const char *pszParmValue, char **ptr); +static bool handle_copy(const char *pszParmValue, char **ptr); static const struct enum_list enum_protocol[] = { {PROTOCOL_SMB2, "SMB2"}, @@ -545,8 +544,6 @@ static struct parm_struct parm_table[] = { {"setup directory", P_STRING, P_GLOBAL, &Globals.szSetupDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER}, - {"-valid", P_BOOL, P_LOCAL, &sDefault.valid, NULL, NULL, FLAG_HIDE}, - {"copy", P_STRING, P_LOCAL, &sDefault.szCopy, handle_copy, NULL, FLAG_HIDE}, {"include", P_STRING, P_LOCAL, &sDefault.szInclude, handle_include, NULL, FLAG_HIDE}, @@ -960,8 +957,8 @@ static int getservicebyname(const char *pszServiceName, service * pserviceDest); static void copy_service(service * pserviceDest, service * pserviceSource, int *pcopymapDest); -static BOOL service_ok(int iService); -static BOOL do_section(const char *pszSectionName, void *); +static bool service_ok(int iService); +static bool do_section(const char *pszSectionName, void *); static void init_copymap(service * pservice); /* This is a helper function for parametrical options support. */ @@ -972,7 +969,8 @@ const char *lp_get_parametric(int lookup_service, const char *type, const char * char *vfskey; struct param_opt *data; - if (lookup_service >= iNumServices) return NULL; + if (lookup_service >= 0 && !LP_SNUM_OK(lookup_service)) + return NULL; data = (lookup_service < 0) ? Globals.param_opt : ServicePtrs[lookup_service]->param_opt; @@ -1174,10 +1172,12 @@ BOOL lp_parm_bool(int lookup_service, const char *type, const char *option, BOOL Initialise a service to the defaults. ***************************************************************************/ -static void init_service(service * pservice) +static service *init_service(TALLOC_CTX *mem_ctx) { + service *pservice = talloc(mem_ctx, service); memset((char *)pservice, '\0', sizeof(service)); copy_service(pservice, &sDefault, NULL); + return pservice; } /*************************************************************************** @@ -1263,7 +1263,7 @@ static int add_a_service(const service *pservice, const char *name) /* find an invalid one */ for (i = 0; i < iNumServices; i++) - if (!ServicePtrs[i]->valid) + if (ServicePtrs[i] == NULL) break; /* if not, then create one */ @@ -1278,22 +1278,19 @@ static int add_a_service(const service *pservice, const char *name) } else { ServicePtrs = tsp; - ServicePtrs[iNumServices] = malloc_p(service); - } - if (!ServicePtrs[iNumServices]) { - DEBUG(0,("add_a_service: out of memory!\n")); - return -1; + ServicePtrs[iNumServices] = NULL; } iNumServices++; - } else - free_service(ServicePtrs[i]); + } - ServicePtrs[i]->valid = True; - - init_service(ServicePtrs[i]); + ServicePtrs[i] = init_service(talloc_autofree_context()); + if (ServicePtrs[i] == NULL) { + DEBUG(0,("add_a_service: out of memory!\n")); + return -1; + } copy_service(ServicePtrs[i], &tservice, NULL); - if (name) + if (name != NULL) string_set(&ServicePtrs[i]->szService, name); return i; } @@ -1354,21 +1351,24 @@ int lp_add_service(const char *pszService, int iDefaultService) static bool lp_add_hidden(const char *name, const char *fstype) { - pstring comment; + char *comment = NULL; int i = add_a_service(&sDefault, name); if (i < 0) return false; - slprintf(comment, sizeof(comment) - 1, - "%s Service (%s)", fstype, Globals.szServerString); - string_set(&ServicePtrs[i]->szPath, tmpdir()); + + asprintf(&comment, "%s Service (%s)", fstype, Globals.szServerString); + if (comment == NULL) + return false; + string_set(&ServicePtrs[i]->comment, comment); + SAFE_FREE(comment); string_set(&ServicePtrs[i]->fstype, fstype); ServicePtrs[i]->iMaxConnections = -1; - ServicePtrs[i]->bAvailable = True; - ServicePtrs[i]->bRead_only = True; + ServicePtrs[i]->bAvailable = true; + ServicePtrs[i]->bRead_only = true; ServicePtrs[i]->bPrint_ok = false; ServicePtrs[i]->bBrowseable = false; @@ -1708,35 +1708,35 @@ static bool handle_include(const char *pszParmValue, char **ptr) Handle the interpretation of the copy parameter. ***************************************************************************/ -static BOOL handle_copy(const char *pszParmValue, char **ptr) +static bool handle_copy(const char *pszParmValue, char **ptr) { - BOOL bRetval; + bool bRetval; int iTemp; - service serviceTemp; + service *serviceTemp; string_set(ptr, pszParmValue); - init_service(&serviceTemp); + serviceTemp = init_service(talloc_autofree_context()); - bRetval = False; + bRetval = false; DEBUG(3, ("Copying service from service %s\n", pszParmValue)); - if ((iTemp = getservicebyname(pszParmValue, &serviceTemp)) >= 0) { + if ((iTemp = getservicebyname(pszParmValue, serviceTemp)) >= 0) { if (iTemp == iServiceIndex) { DEBUG(0, ("Can't copy service %s - unable to copy self!\n", pszParmValue)); } else { copy_service(ServicePtrs[iServiceIndex], - &serviceTemp, + serviceTemp, ServicePtrs[iServiceIndex]->copymap); - bRetval = True; + bRetval = true; } } else { DEBUG(0, ("Unable to copy service - source not found: %s\n", pszParmValue)); - bRetval = False; + bRetval = false; } - free_service(&serviceTemp); + free_service(serviceTemp); return bRetval; } @@ -1773,7 +1773,8 @@ void *lp_local_ptr(int snum, void *ptr) /*************************************************************************** Process a parametric option ***************************************************************************/ -static BOOL lp_do_parameter_parametric(int snum, const char *pszParmName, const char *pszParmValue, int flags) +static bool lp_do_parameter_parametric(int snum, const char *pszParmName, + const char *pszParmValue, int flags) { struct param_opt *paramo, *data; char *name; @@ -2407,7 +2408,7 @@ struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters) Return TRUE if the passed service number is within range. ***************************************************************************/ -BOOL lp_snum_ok(int iService) +bool lp_snum_ok(int iService) { return (LP_SNUM_OK(iService) && ServicePtrs[iService]->bAvailable); } @@ -2442,8 +2443,8 @@ void lp_killunused(struct smbsrv_connection *smb, BOOL (*snumused) (struct smbsr continue; if (!snumused || !snumused(smb, i)) { - ServicePtrs[i]->valid = False; free_service(ServicePtrs[i]); + ServicePtrs[i] = NULL; } } } @@ -2455,8 +2456,8 @@ void lp_killunused(struct smbsrv_connection *smb, BOOL (*snumused) (struct smbsr void lp_killservice(int iServiceIn) { if (VALID(iServiceIn)) { - ServicePtrs[iServiceIn]->valid = False; free_service(ServicePtrs[iServiceIn]); + ServicePtrs[iServiceIn] = NULL; } } @@ -2465,15 +2466,15 @@ void lp_killservice(int iServiceIn) False on failure. ***************************************************************************/ -BOOL lp_load(void) +bool lp_load(void) { char *n2; - BOOL bRetval; + bool bRetval; struct param_opt *data; - bRetval = False; + bRetval = false; - bInGlobalSection = True; + bInGlobalSection = true; if (Globals.param_opt != NULL) { struct param_opt *next; @@ -2509,7 +2510,7 @@ BOOL lp_load(void) lp_add_hidden("IPC$", "IPC"); lp_add_hidden("ADMIN$", "DISK"); - bLoaded = True; + bLoaded = true; if (!Globals.szWINSservers && Globals.bWINSsupport) { lp_do_parameter(-1, "wins server", "127.0.0.1"); @@ -2561,7 +2562,7 @@ void lp_dump(FILE *f, BOOL show_defaults, int maxtoprint) Display the contents of one service in human-readable form. ***************************************************************************/ -void lp_dump_one(FILE * f, BOOL show_defaults, int snum) +void lp_dump_one(FILE *f, bool show_defaults, int snum) { if (VALID(snum)) { if (ServicePtrs[snum]->szService[0] == '\0') @@ -2635,7 +2636,7 @@ const char *volume_label(int snum) If we are PDC then prefer us as DMB ************************************************************/ -BOOL lp_domain_logons(void) +bool lp_domain_logons(void) { return (lp_server_role() == ROLE_DOMAIN_CONTROLLER); } @@ -2646,7 +2647,7 @@ BOOL lp_domain_logons(void) void lp_remove_service(int snum) { - ServicePtrs[snum]->valid = False; + ServicePtrs[snum] = NULL; } /******************************************************************* -- cgit From e73df517c877add667cc36e889282d129eebe3b9 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 00:38:22 +0000 Subject: r25014: Use talloc for allocating values as well. (This used to be commit 43f0e2622ef61bd865fcf17191118c050ec8cfcb) --- source4/param/loadparm.c | 87 ++++++++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 37 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index eaa61ef12e..7a4f034ecb 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -588,7 +588,8 @@ static void init_globals(void) parm_table[i].type == P_USTRING) && parm_table[i].ptr && !(parm_table[i].flags & FLAG_CMDLINE)) { - string_set(parm_table[i].ptr, ""); + string_set(talloc_autofree_context(), + parm_table[i].ptr, ""); } } @@ -1180,6 +1181,14 @@ static service *init_service(TALLOC_CTX *mem_ctx) return pservice; } +void string_free(char **str) +{ + if (str) { + talloc_free(*str); + *str = NULL; + } +} + /*************************************************************************** Free the dynamically allocated parts of a service struct. ***************************************************************************/ @@ -1250,10 +1259,8 @@ static int add_a_service(const service *pservice, const char *name) /* They will be added during parsing again */ data = ServicePtrs[i]->param_opt; while (data) { - string_free(&data->key); - string_free(&data->value); pdata = data->next; - SAFE_FREE(data); + talloc_free(data); data = pdata; } ServicePtrs[i]->param_opt = NULL; @@ -1291,7 +1298,7 @@ static int add_a_service(const service *pservice, const char *name) } copy_service(ServicePtrs[i], &tservice, NULL); if (name != NULL) - string_set(&ServicePtrs[i]->szService, name); + string_set(ServicePtrs[i], &ServicePtrs[i]->szService, name); return i; } @@ -1319,13 +1326,13 @@ BOOL lp_add_home(const char *pszHomename, int iDefaultService, string_sub(newHomedir,"%H", pszHomedir, sizeof(newHomedir)); } - string_set(&ServicePtrs[i]->szPath, newHomedir); + string_set(ServicePtrs[i], &ServicePtrs[i]->szPath, newHomedir); if (!(*(ServicePtrs[i]->comment))) { - pstring comment; - slprintf(comment, sizeof(comment) - 1, + char *comment = talloc_asprintf(ServicePtrs[i], "Home directory of %s", user); - string_set(&ServicePtrs[i]->comment, comment); + string_set(ServicePtrs[i], &ServicePtrs[i]->comment, comment); + talloc_free(comment); } ServicePtrs[i]->bAvailable = sDefault.bAvailable; ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; @@ -1357,15 +1364,15 @@ static bool lp_add_hidden(const char *name, const char *fstype) if (i < 0) return false; - string_set(&ServicePtrs[i]->szPath, tmpdir()); + string_set(ServicePtrs[i], &ServicePtrs[i]->szPath, tmpdir()); asprintf(&comment, "%s Service (%s)", fstype, Globals.szServerString); if (comment == NULL) return false; - string_set(&ServicePtrs[i]->comment, comment); + string_set(ServicePtrs[i], &ServicePtrs[i]->comment, comment); SAFE_FREE(comment); - string_set(&ServicePtrs[i]->fstype, fstype); + string_set(ServicePtrs[i], &ServicePtrs[i]->fstype, fstype); ServicePtrs[i]->iMaxConnections = -1; ServicePtrs[i]->bAvailable = true; ServicePtrs[i]->bRead_only = true; @@ -1399,8 +1406,9 @@ bool lp_add_printer(const char *pszPrintername, int iDefaultService) /* entry (if/when the 'available' keyword is implemented!). */ /* the printer name is set to the service name. */ - string_set(&ServicePtrs[i]->szPrintername, pszPrintername); - string_set(&ServicePtrs[i]->comment, comment); + string_set(ServicePtrs[i], &ServicePtrs[i]->szPrintername, + pszPrintername); + string_set(ServicePtrs[i], &ServicePtrs[i]->comment, comment); ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; /* Printers cannot be read_only. */ ServicePtrs[i]->bRead_only = False; @@ -1514,12 +1522,12 @@ static void copy_service(service *pserviceDest, service *pserviceSource, break; case P_STRING: - string_set(dest_ptr, + string_set(pserviceDest, dest_ptr, *(char **)src_ptr); break; case P_USTRING: - string_set(dest_ptr, + string_set(pserviceDest, dest_ptr, *(char **)src_ptr); strupper(*(char **)dest_ptr); break; @@ -1549,18 +1557,19 @@ static void copy_service(service *pserviceDest, service *pserviceSource, /* If we already have same option, override it */ if (strcmp(pdata->key, data->key) == 0) { string_free(&pdata->value); - pdata->value = strdup(data->value); - not_added = False; + pdata->value = talloc_reference(pdata, + data->value); + not_added = false; break; } pdata = pdata->next; } if (not_added) { - paramo = malloc_p(struct param_opt); - if (!paramo) + paramo = talloc(pserviceDest, struct param_opt); + if (paramo == NULL) smb_panic("OOM"); - paramo->key = strdup(data->key); - paramo->value = strdup(data->value); + paramo->key = talloc_reference(paramo, data->key); + paramo->value = talloc_reference(paramo, data->value); DLIST_ADD(pserviceDest->param_opt, paramo); } data = data->next; @@ -1694,7 +1703,7 @@ static bool handle_include(const char *pszParmValue, char **ptr) add_to_file_list(pszParmValue, fname); - string_set(ptr, fname); + string_set(talloc_autofree_context(), ptr, fname); if (file_exist(fname)) return pm_process(fname, do_section, do_parameter, NULL); @@ -1714,7 +1723,7 @@ static bool handle_copy(const char *pszParmValue, char **ptr) int iTemp; service *serviceTemp; - string_set(ptr, pszParmValue); + string_set(talloc_autofree_context(), ptr, pszParmValue); serviceTemp = init_service(talloc_autofree_context()); @@ -1778,6 +1787,7 @@ static bool lp_do_parameter_parametric(int snum, const char *pszParmName, { struct param_opt *paramo, *data; char *name; + TALLOC_CTX *mem_ctx; while (isspace((unsigned char)*pszParmName)) { pszParmName++; @@ -1790,8 +1800,10 @@ static bool lp_do_parameter_parametric(int snum, const char *pszParmName, if (snum < 0) { data = Globals.param_opt; + mem_ctx = talloc_autofree_context(); } else { data = ServicePtrs[snum]->param_opt; + mem_ctx = ServicePtrs[snum]; } /* Traverse destination */ @@ -1804,19 +1816,19 @@ static bool lp_do_parameter_parametric(int snum, const char *pszParmName, return True; } - free(paramo->value); - paramo->value = strdup(pszParmValue); + talloc_free(paramo->value); + paramo->value = talloc_strdup(paramo, pszParmValue); paramo->flags = flags; free(name); return True; } } - paramo = malloc_p(struct param_opt); + paramo = talloc(mem_ctx, struct param_opt); if (!paramo) smb_panic("OOM"); - paramo->key = strdup(name); - paramo->value = strdup(pszParmValue); + paramo->key = talloc_strdup(paramo, name); + paramo->value = talloc_strdup(paramo, pszParmValue); paramo->flags = flags; if (snum < 0) { DLIST_ADD(Globals.param_opt, paramo); @@ -1826,18 +1838,19 @@ static bool lp_do_parameter_parametric(int snum, const char *pszParmName, free(name); - return True; + return true; } /*************************************************************************** Process a parameter for a particular service number. If snum < 0 then assume we are in the globals. ***************************************************************************/ -BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue) +bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue) { int parmnum, i; void *parm_ptr = NULL; /* where we are going to store the result */ void *def_ptr = NULL; + TALLOC_CTX *mem_ctx; parmnum = map_parameter(pszParmName); @@ -1865,6 +1878,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue /* we might point at a service, the default service or a global */ if (snum < 0) { parm_ptr = def_ptr; + mem_ctx = talloc_autofree_context(); } else { if (parm_table[parmnum].class == P_GLOBAL) { DEBUG(0, @@ -1875,6 +1889,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue parm_ptr = ((char *)ServicePtrs[snum]) + PTR_DIFF(def_ptr, &sDefault); + mem_ctx = ServicePtrs[snum]; } if (snum >= 0) { @@ -1931,16 +1946,16 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue } case P_LIST: - *(const char ***)parm_ptr = str_list_make(talloc_autofree_context(), + *(const char ***)parm_ptr = str_list_make(mem_ctx, pszParmValue, NULL); break; case P_STRING: - string_set(parm_ptr, pszParmValue); + string_set(mem_ctx, parm_ptr, pszParmValue); break; case P_USTRING: - string_set(parm_ptr, pszParmValue); + string_set(mem_ctx, parm_ptr, pszParmValue); strupper(*(char **)parm_ptr); break; @@ -2481,10 +2496,8 @@ bool lp_load(void) for (data=Globals.param_opt; data; data=next) { next = data->next; if (data->flags & FLAG_CMDLINE) continue; - free(data->key); - free(data->value); DLIST_REMOVE(Globals.param_opt, data); - free(data); + talloc_free(data); } } -- cgit From d24e96619d9b43d59cf065fbd5df0fe6bfd90209 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 00:48:23 +0000 Subject: r25015: Use talloc for all allocations in loadparm. (This used to be commit 92b54faf99ed5688936cfd1535ab00cd89bc065f) --- source4/param/loadparm.c | 95 +++++++++++------------------------------------- 1 file changed, 22 insertions(+), 73 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 7a4f034ecb..c751cb1c07 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -66,7 +66,7 @@ static bool bLoaded = false; -#define standard_sub_basic strdup +#define standard_sub_basic talloc_strdup /* some helpful bits */ #define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && VALID(i)) @@ -920,8 +920,6 @@ _PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_se _PUBLIC_ FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) _PUBLIC_ FN_GLOBAL_LIST(lp_js_include, &Globals.jsInclude) _PUBLIC_ FN_GLOBAL_STRING(lp_jsonrpc_services_dir, &Globals.jsonrpcServicesDir) -_PUBLIC_ -_PUBLIC_ _PUBLIC_ FN_LOCAL_STRING(lp_servicename, szService) _PUBLIC_ FN_LOCAL_CONST_STRING(lp_const_servicename, szService) _PUBLIC_ FN_LOCAL_STRING(lp_pathname, szPath) @@ -1189,54 +1187,6 @@ void string_free(char **str) } } -/*************************************************************************** - Free the dynamically allocated parts of a service struct. -***************************************************************************/ - -static void free_service(service *pservice) -{ - int i; - struct param_opt *data, *pdata; - if (!pservice) - return; - - if (pservice->szService) - DEBUG(5, ("free_service: Freeing service %s\n", - pservice->szService)); - - string_free(&pservice->szService); - SAFE_FREE(pservice->copymap); - - for (i = 0; parm_table[i].label; i++) { - if ((parm_table[i].type == P_STRING || - parm_table[i].type == P_USTRING) && - parm_table[i].class == P_LOCAL) { - string_free((char **) - (((char *)pservice) + - PTR_DIFF(parm_table[i].ptr, &sDefault))); - } else if (parm_table[i].type == P_LIST && - parm_table[i].class == P_LOCAL) { - char ***listp = (char ***)(((char *)pservice) + - PTR_DIFF(parm_table[i].ptr, &sDefault)); - talloc_free(*listp); - *listp = NULL; - } - } - - DEBUG(5,("Freeing parametrics:\n")); - data = pservice->param_opt; - while (data) { - DEBUG(5,("[%s = %s]\n", data->key, data->value)); - string_free(&data->key); - string_free(&data->value); - pdata = data->next; - SAFE_FREE(data); - data = pdata; - } - - ZERO_STRUCTP(pservice); -} - /*************************************************************************** Add a new service to the services array initialising it with the given service. @@ -1358,7 +1308,6 @@ int lp_add_service(const char *pszService, int iDefaultService) static bool lp_add_hidden(const char *name, const char *fstype) { - char *comment = NULL; int i = add_a_service(&sDefault, name); if (i < 0) @@ -1366,12 +1315,9 @@ static bool lp_add_hidden(const char *name, const char *fstype) string_set(ServicePtrs[i], &ServicePtrs[i]->szPath, tmpdir()); - asprintf(&comment, "%s Service (%s)", fstype, Globals.szServerString); - if (comment == NULL) - return false; - - string_set(ServicePtrs[i], &ServicePtrs[i]->comment, comment); - SAFE_FREE(comment); + ServicePtrs[i]->comment = talloc_asprintf(ServicePtrs[i], + "%s Service (%s)", + fstype, Globals.szServerString); string_set(ServicePtrs[i], &ServicePtrs[i]->fstype, fstype); ServicePtrs[i]->iMaxConnections = -1; ServicePtrs[i]->bAvailable = true; @@ -1672,7 +1618,7 @@ BOOL lp_file_list_changed(void) char *n2; time_t mod_time; - n2 = standard_sub_basic(f->name); + n2 = standard_sub_basic(talloc_autofree_context(), f->name); DEBUGADD(6, ("file %s -> %s last mod_time: %s\n", f->name, n2, ctime(&f->modtime))); @@ -1699,7 +1645,8 @@ BOOL lp_file_list_changed(void) static bool handle_include(const char *pszParmValue, char **ptr) { - char *fname = standard_sub_basic(pszParmValue); + char *fname = standard_sub_basic(talloc_autofree_context(), + pszParmValue); add_to_file_list(pszParmValue, fname); @@ -1745,7 +1692,7 @@ static bool handle_copy(const char *pszParmValue, char **ptr) bRetval = false; } - free_service(serviceTemp); + talloc_free(serviceTemp); return bRetval; } @@ -1753,18 +1700,19 @@ static bool handle_copy(const char *pszParmValue, char **ptr) Initialise a copymap. ***************************************************************************/ -static void init_copymap(service * pservice) +static void init_copymap(service *pservice) { int i; - SAFE_FREE(pservice->copymap); - pservice->copymap = malloc_array_p(int, NUMPARAMETERS); - if (!pservice->copymap) + talloc_free(pservice->copymap); + pservice->copymap = talloc_array(pservice, int, NUMPARAMETERS); + if (pservice->copymap == NULL) { DEBUG(0, ("Couldn't allocate copymap!! (size %d)\n", (int)NUMPARAMETERS)); - else - for (i = 0; i < NUMPARAMETERS; i++) - pservice->copymap[i] = True; + return; + } + for (i = 0; i < NUMPARAMETERS; i++) + pservice->copymap[i] = true; } #if 0 /* not used anywhere */ @@ -1900,7 +1848,7 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue the same data pointer */ for (i = 0; parm_table[i].label; i++) if (parm_table[i].ptr == parm_table[parmnum].ptr) - ServicePtrs[snum]->copymap[i] = False; + ServicePtrs[snum]->copymap[i] = false; } /* if it is a special case then go ahead */ @@ -2458,7 +2406,7 @@ void lp_killunused(struct smbsrv_connection *smb, BOOL (*snumused) (struct smbsr continue; if (!snumused || !snumused(smb, i)) { - free_service(ServicePtrs[i]); + talloc_free(ServicePtrs[i]); ServicePtrs[i] = NULL; } } @@ -2471,7 +2419,7 @@ void lp_killunused(struct smbsrv_connection *smb, BOOL (*snumused) (struct smbsr void lp_killservice(int iServiceIn) { if (VALID(iServiceIn)) { - free_service(ServicePtrs[iServiceIn]); + talloc_free(ServicePtrs[iServiceIn]); ServicePtrs[iServiceIn] = NULL; } } @@ -2503,7 +2451,7 @@ bool lp_load(void) init_globals(); - n2 = standard_sub_basic(lp_configfile()); + n2 = standard_sub_basic(talloc_autofree_context(), lp_configfile()); DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); add_to_file_list(lp_configfile(), n2); @@ -2603,7 +2551,8 @@ int lp_servicenumber(const char *pszServiceName) * The substitution here is used to support %U is * service names */ - serviceName = standard_sub_basic(ServicePtrs[iService]->szService); + serviceName = standard_sub_basic(ServicePtrs[iService], + ServicePtrs[iService]->szService); if (strequal(serviceName, pszServiceName)) break; } -- cgit From b9c829b7d9d70fd8dcb890db9d7e35c7ab216fcf Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 01:29:52 +0000 Subject: r25016: Create context for loadparm variables. (This used to be commit a5e7631a362fd19cc01cf28ee2755cebd8580faf) --- source4/param/loadparm.c | 711 ++++++++++++++++++++++++----------------------- 1 file changed, 356 insertions(+), 355 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c751cb1c07..3d12118992 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -69,8 +69,8 @@ static bool bLoaded = false; #define standard_sub_basic talloc_strdup /* some helpful bits */ -#define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && VALID(i)) -#define VALID(i) (ServicePtrs[i] != NULL) +#define LP_SNUM_OK(i) (((i) >= 0) && ((i) < loadparm.iNumServices) && VALID(i)) +#define VALID(i) (loadparm.ServicePtrs[i] != NULL) static bool do_parameter(const char *, const char *, void *); static bool do_parameter_var(const char *pszParmName, const char *fmt, ...); @@ -87,7 +87,7 @@ struct param_opt { /* * This structure describes global (ie., server-wide) parameters. */ -typedef struct +struct global { enum server_role server_role; @@ -187,15 +187,13 @@ typedef struct int bDisableNetbios; int bRpcBigEndian; struct param_opt *param_opt; -} -global; +}; -static global Globals; /* * This structure describes a single service. */ -typedef struct +struct service { char *szService; char *szPath; @@ -230,12 +228,11 @@ typedef struct struct param_opt *param_opt; char dummy[3]; /* for alignment */ -} -service; +}; /* This is a default service used to prime a services structure */ -static service sDefault = { +static struct service sDefault = { NULL, /* szService */ NULL, /* szPath */ NULL, /* szCopy */ @@ -272,10 +269,18 @@ static service sDefault = { }; /* local variables */ -static service **ServicePtrs = NULL; -static int iNumServices = 0; -static int iServiceIndex = 0; -static bool bInGlobalSection = True; +static struct loadparm_context { + struct global Globals; + struct service **ServicePtrs; + int iNumServices; + int iServiceIndex; + bool bInGlobalSection; +} loadparm = { + .iNumServices = 0, + .iServiceIndex = 0, + .bInGlobalSection = true, + .ServicePtrs = NULL, +}; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) @@ -376,49 +381,49 @@ static const struct enum_list enum_server_role[] = { static struct parm_struct parm_table[] = { {"Base Options", P_SEP, P_SEPARATOR}, - {"server role", P_ENUM, P_GLOBAL, &Globals.server_role, NULL, enum_server_role, FLAG_BASIC}, + {"server role", P_ENUM, P_GLOBAL, &loadparm.Globals.server_role, NULL, enum_server_role, FLAG_BASIC}, {"dos charset", P_STRING, P_GLOBAL, &dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"unix charset", P_STRING, P_GLOBAL, &unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ncalrpc dir", P_STRING, P_GLOBAL, &Globals.ncalrpc_dir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ncalrpc dir", P_STRING, P_GLOBAL, &loadparm.Globals.ncalrpc_dir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"display charset", P_STRING, P_GLOBAL, &display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_HIDE}, - {"workgroup", P_USTRING, P_GLOBAL, &Globals.szWorkgroup, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"realm", P_STRING, P_GLOBAL, &Globals.szRealm, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"netbios name", P_USTRING, P_GLOBAL, &Globals.szNetbiosName, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"netbios aliases", P_LIST, P_GLOBAL, &Globals.szNetbiosAliases, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"netbios scope", P_USTRING, P_GLOBAL, &Globals.szNetbiosScope, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"server string", P_STRING, P_GLOBAL, &Globals.szServerString, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"interfaces", P_LIST, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"workgroup", P_USTRING, P_GLOBAL, &loadparm.Globals.szWorkgroup, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"realm", P_STRING, P_GLOBAL, &loadparm.Globals.szRealm, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"netbios name", P_USTRING, P_GLOBAL, &loadparm.Globals.szNetbiosName, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"netbios aliases", P_LIST, P_GLOBAL, &loadparm.Globals.szNetbiosAliases, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"netbios scope", P_USTRING, P_GLOBAL, &loadparm.Globals.szNetbiosScope, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"server string", P_STRING, P_GLOBAL, &loadparm.Globals.szServerString, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"interfaces", P_LIST, P_GLOBAL, &loadparm.Globals.szInterfaces, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"bind interfaces only", P_BOOL, P_GLOBAL, &loadparm.Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"ntvfs handler", P_LIST, P_LOCAL, &sDefault.ntvfs_handler, NULL, NULL, FLAG_ADVANCED}, - {"ntptr providor", P_STRING, P_GLOBAL, &Globals.ntptr_providor, NULL, NULL, FLAG_ADVANCED}, - {"dcerpc endpoint servers", P_LIST, P_GLOBAL, &Globals.dcerpc_ep_servers, NULL, NULL, FLAG_ADVANCED}, - {"server services", P_LIST, P_GLOBAL, &Globals.server_services, NULL, NULL, FLAG_ADVANCED}, + {"ntptr providor", P_STRING, P_GLOBAL, &loadparm.Globals.ntptr_providor, NULL, NULL, FLAG_ADVANCED}, + {"dcerpc endpoint servers", P_LIST, P_GLOBAL, &loadparm.Globals.dcerpc_ep_servers, NULL, NULL, FLAG_ADVANCED}, + {"server services", P_LIST, P_GLOBAL, &loadparm.Globals.server_services, NULL, NULL, FLAG_ADVANCED}, {"Security Options", P_SEP, P_SEPARATOR}, - {"security", P_ENUM, P_GLOBAL, &Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"encrypt passwords", P_BOOL, P_GLOBAL, &Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"null passwords", P_BOOL, P_GLOBAL, &Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"obey pam restrictions", P_BOOL, P_GLOBAL, &Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"password server", P_LIST, P_GLOBAL, &Globals.szPasswordServers, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"sam database", P_STRING, P_GLOBAL, &Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"secrets database", P_STRING, P_GLOBAL, &Globals.szSECRETS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"spoolss database", P_STRING, P_GLOBAL, &Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"wins config database", P_STRING, P_GLOBAL, &Globals.szWINS_CONFIG_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"wins database", P_STRING, P_GLOBAL, &Globals.szWINS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"lanman auth", P_BOOL, P_GLOBAL, &Globals.bLanmanAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ntlm auth", P_BOOL, P_GLOBAL, &Globals.bNTLMAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client NTLMv2 auth", P_BOOL, P_GLOBAL, &Globals.bClientNTLMv2Auth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client lanman auth", P_BOOL, P_GLOBAL, &Globals.bClientLanManAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client plaintext auth", P_BOOL, P_GLOBAL, &Globals.bClientPlaintextAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client use spnego principal", P_BOOL, P_GLOBAL, &Globals.client_use_spnego_principal, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"security", P_ENUM, P_GLOBAL, &loadparm.Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"encrypt passwords", P_BOOL, P_GLOBAL, &loadparm.Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"null passwords", P_BOOL, P_GLOBAL, &loadparm.Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"obey pam restrictions", P_BOOL, P_GLOBAL, &loadparm.Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"password server", P_LIST, P_GLOBAL, &loadparm.Globals.szPasswordServers, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"sam database", P_STRING, P_GLOBAL, &loadparm.Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"secrets database", P_STRING, P_GLOBAL, &loadparm.Globals.szSECRETS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"spoolss database", P_STRING, P_GLOBAL, &loadparm.Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"wins config database", P_STRING, P_GLOBAL, &loadparm.Globals.szWINS_CONFIG_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"wins database", P_STRING, P_GLOBAL, &loadparm.Globals.szWINS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"private dir", P_STRING, P_GLOBAL, &loadparm.Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"passwd chat", P_STRING, P_GLOBAL, &loadparm.Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"password level", P_INTEGER, P_GLOBAL, &loadparm.Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"lanman auth", P_BOOL, P_GLOBAL, &loadparm.Globals.bLanmanAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ntlm auth", P_BOOL, P_GLOBAL, &loadparm.Globals.bNTLMAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client NTLMv2 auth", P_BOOL, P_GLOBAL, &loadparm.Globals.bClientNTLMv2Auth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client lanman auth", P_BOOL, P_GLOBAL, &loadparm.Globals.bClientLanManAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client plaintext auth", P_BOOL, P_GLOBAL, &loadparm.Globals.bClientPlaintextAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client use spnego principal", P_BOOL, P_GLOBAL, &loadparm.Globals.client_use_spnego_principal, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"read only", P_BOOL, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE}, @@ -438,52 +443,52 @@ static struct parm_struct parm_table[] = { {"Protocol Options", P_SEP, P_SEPARATOR}, - {"smb ports", P_LIST, P_GLOBAL, &Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"nbt port", P_INTEGER, P_GLOBAL, &Globals.nbt_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"dgram port", P_INTEGER, P_GLOBAL, &Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"cldap port", P_INTEGER, P_GLOBAL, &Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"krb5 port", P_INTEGER, P_GLOBAL, &Globals.krb5_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"kpasswd port", P_INTEGER, P_GLOBAL, &Globals.kpasswd_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"web port", P_INTEGER, P_GLOBAL, &Globals.web_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls enabled", P_BOOL, P_GLOBAL, &Globals.tls_enabled, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls keyfile", P_STRING, P_GLOBAL, &Globals.tls_keyfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls certfile", P_STRING, P_GLOBAL, &Globals.tls_certfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls cafile", P_STRING, P_GLOBAL, &Globals.tls_cafile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls crlfile", P_STRING, P_GLOBAL, &Globals.tls_crlfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls dh params file", P_STRING, P_GLOBAL, &Globals.tls_dhpfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"web application directory", P_STRING, P_GLOBAL, &Globals.webapps_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"large readwrite", P_BOOL, P_GLOBAL, &Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, - {"server max protocol", P_ENUM, P_GLOBAL, &Globals.srv_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, - {"server min protocol", P_ENUM, P_GLOBAL, &Globals.srv_minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, - {"client max protocol", P_ENUM, P_GLOBAL, &Globals.cli_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, - {"client min protocol", P_ENUM, P_GLOBAL, &Globals.cli_minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, - {"unicode", P_BOOL, P_GLOBAL, &Globals.bUnicode, NULL, NULL, FLAG_DEVELOPER}, - {"read raw", P_BOOL, P_GLOBAL, &Globals.bReadRaw, NULL, NULL, FLAG_DEVELOPER}, - {"write raw", P_BOOL, P_GLOBAL, &Globals.bWriteRaw, NULL, NULL, FLAG_DEVELOPER}, - {"disable netbios", P_BOOL, P_GLOBAL, &Globals.bDisableNetbios, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"smb ports", P_LIST, P_GLOBAL, &loadparm.Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"nbt port", P_INTEGER, P_GLOBAL, &loadparm.Globals.nbt_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"dgram port", P_INTEGER, P_GLOBAL, &loadparm.Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"cldap port", P_INTEGER, P_GLOBAL, &loadparm.Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"krb5 port", P_INTEGER, P_GLOBAL, &loadparm.Globals.krb5_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"kpasswd port", P_INTEGER, P_GLOBAL, &loadparm.Globals.kpasswd_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"web port", P_INTEGER, P_GLOBAL, &loadparm.Globals.web_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls enabled", P_BOOL, P_GLOBAL, &loadparm.Globals.tls_enabled, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls keyfile", P_STRING, P_GLOBAL, &loadparm.Globals.tls_keyfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls certfile", P_STRING, P_GLOBAL, &loadparm.Globals.tls_certfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls cafile", P_STRING, P_GLOBAL, &loadparm.Globals.tls_cafile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls crlfile", P_STRING, P_GLOBAL, &loadparm.Globals.tls_crlfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls dh params file", P_STRING, P_GLOBAL, &loadparm.Globals.tls_dhpfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"web application directory", P_STRING, P_GLOBAL, &loadparm.Globals.webapps_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"large readwrite", P_BOOL, P_GLOBAL, &loadparm.Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, + {"server max protocol", P_ENUM, P_GLOBAL, &loadparm.Globals.srv_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, + {"server min protocol", P_ENUM, P_GLOBAL, &loadparm.Globals.srv_minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, + {"client max protocol", P_ENUM, P_GLOBAL, &loadparm.Globals.cli_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, + {"client min protocol", P_ENUM, P_GLOBAL, &loadparm.Globals.cli_minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, + {"unicode", P_BOOL, P_GLOBAL, &loadparm.Globals.bUnicode, NULL, NULL, FLAG_DEVELOPER}, + {"read raw", P_BOOL, P_GLOBAL, &loadparm.Globals.bReadRaw, NULL, NULL, FLAG_DEVELOPER}, + {"write raw", P_BOOL, P_GLOBAL, &loadparm.Globals.bWriteRaw, NULL, NULL, FLAG_DEVELOPER}, + {"disable netbios", P_BOOL, P_GLOBAL, &loadparm.Globals.bDisableNetbios, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"nt status support", P_BOOL, P_GLOBAL, &Globals.bNTStatusSupport, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - - {"announce version", P_STRING, P_GLOBAL, &Globals.szAnnounceVersion, NULL, NULL, FLAG_DEVELOPER}, - {"announce as", P_ENUM, P_GLOBAL, &Globals.announce_as, NULL, enum_announce_as, FLAG_DEVELOPER}, - {"max mux", P_INTEGER, P_GLOBAL, &Globals.max_mux, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"max xmit", P_BYTES, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - - {"name resolve order", P_LIST, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"max wins ttl", P_INTEGER, P_GLOBAL, &Globals.max_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"min wins ttl", P_INTEGER, P_GLOBAL, &Globals.min_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"time server", P_BOOL, P_GLOBAL, &Globals.bTimeServer, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"unix extensions", P_BOOL, P_GLOBAL, &Globals.bUnixExtensions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"use spnego", P_BOOL, P_GLOBAL, &Globals.bUseSpnego, NULL, NULL, FLAG_DEVELOPER}, - {"server signing", P_ENUM, P_GLOBAL, &Globals.server_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, - {"client signing", P_ENUM, P_GLOBAL, &Globals.client_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, - {"rpc big endian", P_BOOL, P_GLOBAL, &Globals.bRpcBigEndian, NULL, NULL, FLAG_DEVELOPER}, + {"nt status support", P_BOOL, P_GLOBAL, &loadparm.Globals.bNTStatusSupport, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"announce version", P_STRING, P_GLOBAL, &loadparm.Globals.szAnnounceVersion, NULL, NULL, FLAG_DEVELOPER}, + {"announce as", P_ENUM, P_GLOBAL, &loadparm.Globals.announce_as, NULL, enum_announce_as, FLAG_DEVELOPER}, + {"max mux", P_INTEGER, P_GLOBAL, &loadparm.Globals.max_mux, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"max xmit", P_BYTES, P_GLOBAL, &loadparm.Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"name resolve order", P_LIST, P_GLOBAL, &loadparm.Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"max wins ttl", P_INTEGER, P_GLOBAL, &loadparm.Globals.max_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"min wins ttl", P_INTEGER, P_GLOBAL, &loadparm.Globals.min_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"time server", P_BOOL, P_GLOBAL, &loadparm.Globals.bTimeServer, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"unix extensions", P_BOOL, P_GLOBAL, &loadparm.Globals.bUnixExtensions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"use spnego", P_BOOL, P_GLOBAL, &loadparm.Globals.bUseSpnego, NULL, NULL, FLAG_DEVELOPER}, + {"server signing", P_ENUM, P_GLOBAL, &loadparm.Globals.server_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, + {"client signing", P_ENUM, P_GLOBAL, &loadparm.Globals.client_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, + {"rpc big endian", P_BOOL, P_GLOBAL, &loadparm.Globals.bRpcBigEndian, NULL, NULL, FLAG_DEVELOPER}, {"Tuning Options", P_SEP, P_SEPARATOR}, {"max connections", P_INTEGER, P_LOCAL, &sDefault.iMaxConnections, NULL, NULL, FLAG_SHARE}, - {"paranoid server security", P_BOOL, P_GLOBAL, &Globals.paranoid_server_security, NULL, NULL, FLAG_DEVELOPER}, - {"socket options", P_STRING, P_GLOBAL, &Globals.socket_options, NULL, NULL, FLAG_DEVELOPER}, + {"paranoid server security", P_BOOL, P_GLOBAL, &loadparm.Globals.paranoid_server_security, NULL, NULL, FLAG_DEVELOPER}, + {"socket options", P_STRING, P_GLOBAL, &loadparm.Globals.socket_options, NULL, NULL, FLAG_DEVELOPER}, {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, {"case insensitive filesystem", P_BOOL, P_LOCAL, &sDefault.bCIFileSystem, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, @@ -510,18 +515,18 @@ static struct parm_struct parm_table[] = { {"Browse Options", P_SEP, P_SEPARATOR}, - {"preferred master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"prefered master", P_ENUM, P_GLOBAL, &Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_HIDE}, - {"local master", P_BOOL, P_GLOBAL, &Globals.bLocalMaster, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"preferred master", P_ENUM, P_GLOBAL, &loadparm.Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"prefered master", P_ENUM, P_GLOBAL, &loadparm.Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_HIDE}, + {"local master", P_BOOL, P_GLOBAL, &loadparm.Globals.bLocalMaster, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"browseable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_HIDE}, {"WINS Options", P_SEP, P_SEPARATOR}, - {"wins server", P_LIST, P_GLOBAL, &Globals.szWINSservers, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"wins support", P_BOOL, P_GLOBAL, &Globals.bWINSsupport, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"dns proxy", P_BOOL, P_GLOBAL, &Globals.bWINSdnsProxy, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"wins hook", P_STRING, P_GLOBAL, &Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED}, + {"wins server", P_LIST, P_GLOBAL, &loadparm.Globals.szWINSservers, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"wins support", P_BOOL, P_GLOBAL, &loadparm.Globals.bWINSsupport, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"dns proxy", P_BOOL, P_GLOBAL, &loadparm.Globals.bWINSdnsProxy, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"wins hook", P_STRING, P_GLOBAL, &loadparm.Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED}, {"Locking Options", P_SEP, P_SEPARATOR}, @@ -531,19 +536,19 @@ static struct parm_struct parm_table[] = { {"Miscellaneous Options", P_SEP, P_SEPARATOR}, - {"config file", P_STRING, P_GLOBAL, &Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, - {"share backend", P_STRING, P_GLOBAL, &Globals.szShareBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"preload", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"auto services", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_HIDE}, - {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"modules dir", P_STRING, P_GLOBAL, &Globals.szModulesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"js include", P_LIST, P_GLOBAL, &Globals.jsInclude, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"jsonrpc services directory", P_STRING, P_GLOBAL, &Globals.jsonrpcServicesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"setup directory", P_STRING, P_GLOBAL, &Globals.szSetupDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"config file", P_STRING, P_GLOBAL, &loadparm.Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, + {"share backend", P_STRING, P_GLOBAL, &loadparm.Globals.szShareBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"preload", P_STRING, P_GLOBAL, &loadparm.Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"auto services", P_STRING, P_GLOBAL, &loadparm.Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"lock dir", P_STRING, P_GLOBAL, &loadparm.Globals.szLockDir, NULL, NULL, FLAG_HIDE}, + {"lock directory", P_STRING, P_GLOBAL, &loadparm.Globals.szLockDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"modules dir", P_STRING, P_GLOBAL, &loadparm.Globals.szModulesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"pid directory", P_STRING, P_GLOBAL, &loadparm.Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"js include", P_LIST, P_GLOBAL, &loadparm.Globals.jsInclude, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"jsonrpc services directory", P_STRING, P_GLOBAL, &loadparm.Globals.jsonrpcServicesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"setup directory", P_STRING, P_GLOBAL, &loadparm.Globals.szSetupDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER}, + {"socket address", P_STRING, P_GLOBAL, &loadparm.Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER}, {"copy", P_STRING, P_LOCAL, &sDefault.szCopy, handle_copy, NULL, FLAG_HIDE}, {"include", P_STRING, P_LOCAL, &sDefault.szInclude, handle_include, NULL, FLAG_HIDE}, @@ -554,12 +559,12 @@ static struct parm_struct parm_table[] = { {"panic action", P_STRING, P_GLOBAL, &panic_action, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, - {"host msdfs", P_BOOL, P_GLOBAL, &Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"winbind separator", P_STRING, P_GLOBAL, &Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"winbindd socket directory", P_STRING, P_GLOBAL, &Globals.szWinbinddSocketDirectory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"winbind sealed pipes", P_BOOL, P_GLOBAL, &Globals.bWinbindSealedPipes, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"template shell", P_STRING, P_GLOBAL, &Globals.szTemplateShell, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"template homedir", P_STRING, P_GLOBAL, &Globals.szTemplateHomedir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"host msdfs", P_BOOL, P_GLOBAL, &loadparm.Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"winbind separator", P_STRING, P_GLOBAL, &loadparm.Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"winbindd socket directory", P_STRING, P_GLOBAL, &loadparm.Globals.szWinbinddSocketDirectory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"winbind sealed pipes", P_BOOL, P_GLOBAL, &loadparm.Globals.bWinbindSealedPipes, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"template shell", P_STRING, P_GLOBAL, &loadparm.Globals.szTemplateShell, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"template homedir", P_STRING, P_GLOBAL, &loadparm.Globals.szTemplateHomedir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} }; @@ -804,7 +809,7 @@ static const char *lp_string(const char *s) #define FN_GLOBAL_LIST(fn_name,ptr) \ const char **fn_name(void) {return(*(const char ***)(ptr));} #define FN_GLOBAL_BOOL(fn_name,ptr) \ - BOOL fn_name(void) {return((BOOL)*(int *)(ptr));} + bool fn_name(void) {return((bool)*(int *)(ptr));} #if 0 /* unused */ #define FN_GLOBAL_CHAR(fn_name,ptr) \ char fn_name(void) {return(*(char *)(ptr));} @@ -813,113 +818,113 @@ static const char *lp_string(const char *s) int fn_name(void) {return(*(int *)(ptr));} #define FN_LOCAL_STRING(fn_name,val) \ - const char *fn_name(int i) {return(lp_string((LP_SNUM_OK(i) && ServicePtrs[(i)]->val) ? ServicePtrs[(i)]->val : sDefault.val));} + const char *fn_name(int i) {return(lp_string((LP_SNUM_OK(i) && loadparm.ServicePtrs[(i)]->val) ? loadparm.ServicePtrs[(i)]->val : sDefault.val));} #define FN_LOCAL_CONST_STRING(fn_name,val) \ - const char *fn_name(int i) {return (const char *)((LP_SNUM_OK(i) && ServicePtrs[(i)]->val) ? ServicePtrs[(i)]->val : sDefault.val);} + const char *fn_name(int i) {return (const char *)((LP_SNUM_OK(i) && loadparm.ServicePtrs[(i)]->val) ? loadparm.ServicePtrs[(i)]->val : sDefault.val);} #define FN_LOCAL_LIST(fn_name,val) \ - const char **fn_name(int i) {return(const char **)(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} + const char **fn_name(int i) {return(const char **)(LP_SNUM_OK(i)? loadparm.ServicePtrs[(i)]->val : sDefault.val);} #define FN_LOCAL_BOOL(fn_name,val) \ - BOOL fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} + bool fn_name(int i) {return(LP_SNUM_OK(i)? loadparm.ServicePtrs[(i)]->val : sDefault.val);} #if 0 /* unused */ #define FN_LOCAL_CHAR(fn_name,val) \ char fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} #endif #define FN_LOCAL_INTEGER(fn_name,val) \ - int fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} - -_PUBLIC_ FN_GLOBAL_INTEGER(lp_server_role, &Globals.server_role) -_PUBLIC_ FN_GLOBAL_LIST(lp_smb_ports, &Globals.smb_ports) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_nbt_port, &Globals.nbt_port) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_dgram_port, &Globals.dgram_port) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_cldap_port, &Globals.cldap_port) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_krb5_port, &Globals.krb5_port) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_kpasswd_port, &Globals.kpasswd_port) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_web_port, &Globals.web_port) + int fn_name(int i) {return(LP_SNUM_OK(i)? loadparm.ServicePtrs[(i)]->val : sDefault.val);} + +_PUBLIC_ FN_GLOBAL_INTEGER(lp_server_role, &loadparm.Globals.server_role) +_PUBLIC_ FN_GLOBAL_LIST(lp_smb_ports, &loadparm.Globals.smb_ports) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_nbt_port, &loadparm.Globals.nbt_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_dgram_port, &loadparm.Globals.dgram_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_cldap_port, &loadparm.Globals.cldap_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_krb5_port, &loadparm.Globals.krb5_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_kpasswd_port, &loadparm.Globals.kpasswd_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_web_port, &loadparm.Globals.web_port) _PUBLIC_ FN_GLOBAL_STRING(lp_dos_charset, &dos_charset) -_PUBLIC_ FN_GLOBAL_STRING(lp_webapps_directory, &Globals.webapps_directory) -_PUBLIC_ FN_GLOBAL_BOOL(lp_tls_enabled, &Globals.tls_enabled) -_PUBLIC_ FN_GLOBAL_STRING(lp_tls_keyfile, &Globals.tls_keyfile) -_PUBLIC_ FN_GLOBAL_STRING(lp_tls_certfile, &Globals.tls_certfile) -_PUBLIC_ FN_GLOBAL_STRING(lp_tls_cafile, &Globals.tls_cafile) -_PUBLIC_ FN_GLOBAL_STRING(lp_tls_crlfile, &Globals.tls_crlfile) -_PUBLIC_ FN_GLOBAL_STRING(lp_tls_dhpfile, &Globals.tls_dhpfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_webapps_directory, &loadparm.Globals.webapps_directory) +_PUBLIC_ FN_GLOBAL_BOOL(lp_tls_enabled, &loadparm.Globals.tls_enabled) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_keyfile, &loadparm.Globals.tls_keyfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_certfile, &loadparm.Globals.tls_certfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_cafile, &loadparm.Globals.tls_cafile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_crlfile, &loadparm.Globals.tls_crlfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_dhpfile, &loadparm.Globals.tls_dhpfile) _PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, &unix_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, &display_charset) -_PUBLIC_ FN_GLOBAL_STRING(lp_configfile, &Globals.szConfigFile) -_PUBLIC_ FN_GLOBAL_STRING(lp_share_backend, &Globals.szShareBackend) -_PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, &Globals.szSAM_URL) -_PUBLIC_ FN_GLOBAL_STRING(lp_secrets_url, &Globals.szSECRETS_URL) -_PUBLIC_ FN_GLOBAL_STRING(lp_spoolss_url, &Globals.szSPOOLSS_URL) -_PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, &Globals.szWINS_CONFIG_URL) -_PUBLIC_ FN_GLOBAL_STRING(lp_wins_url, &Globals.szWINS_URL) -_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbind_separator, &Globals.szWinbindSeparator) -_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, &Globals.szWinbinddSocketDirectory) -_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_shell, &Globals.szTemplateShell) -_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_homedir, &Globals.szTemplateHomedir) -_PUBLIC_ FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &Globals.bWinbindSealedPipes) -_PUBLIC_ FN_GLOBAL_STRING(lp_private_dir, &Globals.szPrivateDir) -_PUBLIC_ FN_GLOBAL_STRING(lp_serverstring, &Globals.szServerString) -_PUBLIC_ FN_GLOBAL_STRING(lp_lockdir, &Globals.szLockDir) -_PUBLIC_ FN_GLOBAL_STRING(lp_modulesdir, &Globals.szModulesDir) -_PUBLIC_ FN_GLOBAL_STRING(lp_setupdir, &Globals.szSetupDir) -_PUBLIC_ FN_GLOBAL_STRING(lp_ncalrpc_dir, &Globals.ncalrpc_dir) -_PUBLIC_ FN_GLOBAL_STRING(lp_piddir, &Globals.szPidDir) -_PUBLIC_ FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &Globals.dcerpc_ep_servers) -_PUBLIC_ FN_GLOBAL_LIST(lp_server_services, &Globals.server_services) -_PUBLIC_ FN_GLOBAL_STRING(lp_ntptr_providor, &Globals.ntptr_providor) -_PUBLIC_ FN_GLOBAL_STRING(lp_auto_services, &Globals.szAutoServices) -_PUBLIC_ FN_GLOBAL_STRING(lp_passwd_chat, &Globals.szPasswdChat) -_PUBLIC_ FN_GLOBAL_LIST(lp_passwordserver, &Globals.szPasswordServers) -_PUBLIC_ FN_GLOBAL_LIST(lp_name_resolve_order, &Globals.szNameResolveOrder) -_PUBLIC_ FN_GLOBAL_STRING(lp_realm, &Globals.szRealm) -_PUBLIC_ FN_GLOBAL_STRING(lp_socket_options, &Globals.socket_options) -_PUBLIC_ FN_GLOBAL_STRING(lp_workgroup, &Globals.szWorkgroup) -_PUBLIC_ FN_GLOBAL_STRING(lp_netbios_name, &Globals.szNetbiosName) -_PUBLIC_ FN_GLOBAL_STRING(lp_netbios_scope, &Globals.szNetbiosScope) -_PUBLIC_ FN_GLOBAL_LIST(lp_wins_server_list, &Globals.szWINSservers) -_PUBLIC_ FN_GLOBAL_LIST(lp_interfaces, &Globals.szInterfaces) -_PUBLIC_ FN_GLOBAL_STRING(lp_socket_address, &Globals.szSocketAddress) -_PUBLIC_ FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases) - -_PUBLIC_ FN_GLOBAL_BOOL(lp_disable_netbios, &Globals.bDisableNetbios) -_PUBLIC_ FN_GLOBAL_BOOL(lp_wins_support, &Globals.bWINSsupport) -_PUBLIC_ FN_GLOBAL_BOOL(lp_wins_dns_proxy, &Globals.bWINSdnsProxy) -_PUBLIC_ FN_GLOBAL_STRING(lp_wins_hook, &Globals.szWINSHook) -_PUBLIC_ FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster) -_PUBLIC_ FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw) -_PUBLIC_ FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite) -_PUBLIC_ FN_GLOBAL_BOOL(lp_writeraw, &Globals.bWriteRaw) -_PUBLIC_ FN_GLOBAL_BOOL(lp_null_passwords, &Globals.bNullPasswords) -_PUBLIC_ FN_GLOBAL_BOOL(lp_obey_pam_restrictions, &Globals.bObeyPamRestrictions) -_PUBLIC_ FN_GLOBAL_BOOL(lp_encrypted_passwords, &Globals.bEncryptPasswords) -_PUBLIC_ FN_GLOBAL_BOOL(lp_time_server, &Globals.bTimeServer) -_PUBLIC_ FN_GLOBAL_BOOL(lp_bind_interfaces_only, &Globals.bBindInterfacesOnly) -_PUBLIC_ FN_GLOBAL_BOOL(lp_unicode, &Globals.bUnicode) -_PUBLIC_ FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport) -_PUBLIC_ FN_GLOBAL_BOOL(lp_lanman_auth, &Globals.bLanmanAuth) -_PUBLIC_ FN_GLOBAL_BOOL(lp_ntlm_auth, &Globals.bNTLMAuth) -_PUBLIC_ FN_GLOBAL_BOOL(lp_client_plaintext_auth, &Globals.bClientPlaintextAuth) -_PUBLIC_ FN_GLOBAL_BOOL(lp_client_lanman_auth, &Globals.bClientLanManAuth) -_PUBLIC_ FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, &Globals.bClientNTLMv2Auth) -_PUBLIC_ FN_GLOBAL_BOOL(lp_client_use_spnego_principal, &Globals.client_use_spnego_principal) -_PUBLIC_ FN_GLOBAL_BOOL(lp_host_msdfs, &Globals.bHostMSDfs) -_PUBLIC_ FN_GLOBAL_BOOL(lp_unix_extensions, &Globals.bUnixExtensions) -_PUBLIC_ FN_GLOBAL_BOOL(lp_use_spnego, &Globals.bUseSpnego) -_PUBLIC_ FN_GLOBAL_BOOL(lp_rpc_big_endian, &Globals.bRpcBigEndian) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_max_wins_ttl, &Globals.max_wins_ttl) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_min_wins_ttl, &Globals.min_wins_ttl) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_maxmux, &Globals.max_mux) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_max_xmit, &Globals.max_xmit) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_passwordlevel, &Globals.pwordlevel) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_maxprotocol, &Globals.srv_maxprotocol) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_minprotocol, &Globals.srv_minprotocol) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_maxprotocol, &Globals.cli_maxprotocol) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_minprotocol, &Globals.cli_minprotocol) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_security, &Globals.security) -_PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &Globals.paranoid_server_security) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_announce_as, &Globals.announce_as) -_PUBLIC_ FN_GLOBAL_LIST(lp_js_include, &Globals.jsInclude) -_PUBLIC_ FN_GLOBAL_STRING(lp_jsonrpc_services_dir, &Globals.jsonrpcServicesDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_configfile, &loadparm.Globals.szConfigFile) +_PUBLIC_ FN_GLOBAL_STRING(lp_share_backend, &loadparm.Globals.szShareBackend) +_PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, &loadparm.Globals.szSAM_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_secrets_url, &loadparm.Globals.szSECRETS_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_spoolss_url, &loadparm.Globals.szSPOOLSS_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, &loadparm.Globals.szWINS_CONFIG_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_wins_url, &loadparm.Globals.szWINS_URL) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbind_separator, &loadparm.Globals.szWinbindSeparator) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, &loadparm.Globals.szWinbinddSocketDirectory) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_shell, &loadparm.Globals.szTemplateShell) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_homedir, &loadparm.Globals.szTemplateHomedir) +_PUBLIC_ FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &loadparm.Globals.bWinbindSealedPipes) +_PUBLIC_ FN_GLOBAL_STRING(lp_private_dir, &loadparm.Globals.szPrivateDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_serverstring, &loadparm.Globals.szServerString) +_PUBLIC_ FN_GLOBAL_STRING(lp_lockdir, &loadparm.Globals.szLockDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_modulesdir, &loadparm.Globals.szModulesDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_setupdir, &loadparm.Globals.szSetupDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_ncalrpc_dir, &loadparm.Globals.ncalrpc_dir) +_PUBLIC_ FN_GLOBAL_STRING(lp_piddir, &loadparm.Globals.szPidDir) +_PUBLIC_ FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &loadparm.Globals.dcerpc_ep_servers) +_PUBLIC_ FN_GLOBAL_LIST(lp_server_services, &loadparm.Globals.server_services) +_PUBLIC_ FN_GLOBAL_STRING(lp_ntptr_providor, &loadparm.Globals.ntptr_providor) +_PUBLIC_ FN_GLOBAL_STRING(lp_auto_services, &loadparm.Globals.szAutoServices) +_PUBLIC_ FN_GLOBAL_STRING(lp_passwd_chat, &loadparm.Globals.szPasswdChat) +_PUBLIC_ FN_GLOBAL_LIST(lp_passwordserver, &loadparm.Globals.szPasswordServers) +_PUBLIC_ FN_GLOBAL_LIST(lp_name_resolve_order, &loadparm.Globals.szNameResolveOrder) +_PUBLIC_ FN_GLOBAL_STRING(lp_realm, &loadparm.Globals.szRealm) +_PUBLIC_ FN_GLOBAL_STRING(lp_socket_options, &loadparm.Globals.socket_options) +_PUBLIC_ FN_GLOBAL_STRING(lp_workgroup, &loadparm.Globals.szWorkgroup) +_PUBLIC_ FN_GLOBAL_STRING(lp_netbios_name, &loadparm.Globals.szNetbiosName) +_PUBLIC_ FN_GLOBAL_STRING(lp_netbios_scope, &loadparm.Globals.szNetbiosScope) +_PUBLIC_ FN_GLOBAL_LIST(lp_wins_server_list, &loadparm.Globals.szWINSservers) +_PUBLIC_ FN_GLOBAL_LIST(lp_interfaces, &loadparm.Globals.szInterfaces) +_PUBLIC_ FN_GLOBAL_STRING(lp_socket_address, &loadparm.Globals.szSocketAddress) +_PUBLIC_ FN_GLOBAL_LIST(lp_netbios_aliases, &loadparm.Globals.szNetbiosAliases) + +_PUBLIC_ FN_GLOBAL_BOOL(lp_disable_netbios, &loadparm.Globals.bDisableNetbios) +_PUBLIC_ FN_GLOBAL_BOOL(lp_wins_support, &loadparm.Globals.bWINSsupport) +_PUBLIC_ FN_GLOBAL_BOOL(lp_wins_dns_proxy, &loadparm.Globals.bWINSdnsProxy) +_PUBLIC_ FN_GLOBAL_STRING(lp_wins_hook, &loadparm.Globals.szWINSHook) +_PUBLIC_ FN_GLOBAL_BOOL(lp_local_master, &loadparm.Globals.bLocalMaster) +_PUBLIC_ FN_GLOBAL_BOOL(lp_readraw, &loadparm.Globals.bReadRaw) +_PUBLIC_ FN_GLOBAL_BOOL(lp_large_readwrite, &loadparm.Globals.bLargeReadwrite) +_PUBLIC_ FN_GLOBAL_BOOL(lp_writeraw, &loadparm.Globals.bWriteRaw) +_PUBLIC_ FN_GLOBAL_BOOL(lp_null_passwords, &loadparm.Globals.bNullPasswords) +_PUBLIC_ FN_GLOBAL_BOOL(lp_obey_pam_restrictions, &loadparm.Globals.bObeyPamRestrictions) +_PUBLIC_ FN_GLOBAL_BOOL(lp_encrypted_passwords, &loadparm.Globals.bEncryptPasswords) +_PUBLIC_ FN_GLOBAL_BOOL(lp_time_server, &loadparm.Globals.bTimeServer) +_PUBLIC_ FN_GLOBAL_BOOL(lp_bind_interfaces_only, &loadparm.Globals.bBindInterfacesOnly) +_PUBLIC_ FN_GLOBAL_BOOL(lp_unicode, &loadparm.Globals.bUnicode) +_PUBLIC_ FN_GLOBAL_BOOL(lp_nt_status_support, &loadparm.Globals.bNTStatusSupport) +_PUBLIC_ FN_GLOBAL_BOOL(lp_lanman_auth, &loadparm.Globals.bLanmanAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_ntlm_auth, &loadparm.Globals.bNTLMAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_plaintext_auth, &loadparm.Globals.bClientPlaintextAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_lanman_auth, &loadparm.Globals.bClientLanManAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, &loadparm.Globals.bClientNTLMv2Auth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_use_spnego_principal, &loadparm.Globals.client_use_spnego_principal) +_PUBLIC_ FN_GLOBAL_BOOL(lp_host_msdfs, &loadparm.Globals.bHostMSDfs) +_PUBLIC_ FN_GLOBAL_BOOL(lp_unix_extensions, &loadparm.Globals.bUnixExtensions) +_PUBLIC_ FN_GLOBAL_BOOL(lp_use_spnego, &loadparm.Globals.bUseSpnego) +_PUBLIC_ FN_GLOBAL_BOOL(lp_rpc_big_endian, &loadparm.Globals.bRpcBigEndian) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_max_wins_ttl, &loadparm.Globals.max_wins_ttl) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_min_wins_ttl, &loadparm.Globals.min_wins_ttl) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_maxmux, &loadparm.Globals.max_mux) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_max_xmit, &loadparm.Globals.max_xmit) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_passwordlevel, &loadparm.Globals.pwordlevel) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_maxprotocol, &loadparm.Globals.srv_maxprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_minprotocol, &loadparm.Globals.srv_minprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_maxprotocol, &loadparm.Globals.cli_maxprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_minprotocol, &loadparm.Globals.cli_minprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_security, &loadparm.Globals.security) +_PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &loadparm.Globals.paranoid_server_security) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_announce_as, &loadparm.Globals.announce_as) +_PUBLIC_ FN_GLOBAL_LIST(lp_js_include, &loadparm.Globals.jsInclude) +_PUBLIC_ FN_GLOBAL_STRING(lp_jsonrpc_services_dir, &loadparm.Globals.jsonrpcServicesDir) _PUBLIC_ FN_LOCAL_STRING(lp_servicename, szService) _PUBLIC_ FN_LOCAL_CONST_STRING(lp_const_servicename, szService) _PUBLIC_ FN_LOCAL_STRING(lp_pathname, szPath) @@ -946,19 +951,19 @@ _PUBLIC_ FN_LOCAL_INTEGER(lp_create_mask, iCreate_mask) _PUBLIC_ FN_LOCAL_INTEGER(lp_force_create_mode, iCreate_force_mode) _PUBLIC_ FN_LOCAL_INTEGER(lp_dir_mask, iDir_mask) _PUBLIC_ FN_LOCAL_INTEGER(lp_force_dir_mode, iDir_force_mode) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_server_signing, &Globals.server_signing) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, &Globals.client_signing) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_server_signing, &loadparm.Globals.server_signing) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, &loadparm.Globals.client_signing) /* local prototypes */ static int map_parameter(const char *pszParmName); static int getservicebyname(const char *pszServiceName, - service * pserviceDest); -static void copy_service(service * pserviceDest, - service * pserviceSource, int *pcopymapDest); + struct service * pserviceDest); +static void copy_service(struct service * pserviceDest, + struct service * pserviceSource, int *pcopymapDest); static bool service_ok(int iService); static bool do_section(const char *pszSectionName, void *); -static void init_copymap(service * pservice); +static void init_copymap(struct service * pservice); /* This is a helper function for parametrical options support. */ /* It returns a pointer to parametrical option value if it exists or NULL otherwise */ @@ -972,7 +977,7 @@ const char *lp_get_parametric(int lookup_service, const char *type, const char * return NULL; data = (lookup_service < 0) ? - Globals.param_opt : ServicePtrs[lookup_service]->param_opt; + loadparm.Globals.param_opt : loadparm.ServicePtrs[lookup_service]->param_opt; asprintf(&vfskey, "%s:%s", type, option); strlower(vfskey); @@ -988,13 +993,12 @@ const char *lp_get_parametric(int lookup_service, const char *type, const char * if (lookup_service >= 0) { /* Try to fetch the same option but from globals */ /* but only if we are not already working with Globals */ - data = Globals.param_opt; - while (data) { + for (data = loadparm.Globals.param_opt; data; + data = data->next) { if (strcmp(data->key, vfskey) == 0) { free(vfskey); return data->value; } - data = data->next; } } @@ -1049,18 +1053,18 @@ static double lp_double(const char *s) /******************************************************************* convenience routine to return boolean parameters. ********************************************************************/ -static BOOL lp_bool(const char *s) +static bool lp_bool(const char *s) { - BOOL ret = False; + bool ret = false; if (!s) { DEBUG(0,("lp_bool(%s): is called with NULL!\n",s)); - return False; + return false; } if (!set_boolean(s, &ret)) { DEBUG(0,("lp_bool(%s): value is not boolean!\n",s)); - return False; + return false; } return ret; @@ -1156,7 +1160,8 @@ double lp_parm_double(int lookup_service, const char *type, const char *option, /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -BOOL lp_parm_bool(int lookup_service, const char *type, const char *option, BOOL default_v) +bool lp_parm_bool(int lookup_service, const char *type, const char *option, + bool default_v) { const char *value = lp_get_parametric(lookup_service, type, option); @@ -1171,10 +1176,9 @@ BOOL lp_parm_bool(int lookup_service, const char *type, const char *option, BOOL Initialise a service to the defaults. ***************************************************************************/ -static service *init_service(TALLOC_CTX *mem_ctx) +static struct service *init_service(TALLOC_CTX *mem_ctx) { - service *pservice = talloc(mem_ctx, service); - memset((char *)pservice, '\0', sizeof(service)); + struct service *pservice = talloc_zero(mem_ctx, struct service); copy_service(pservice, &sDefault, NULL); return pservice; } @@ -1192,11 +1196,11 @@ void string_free(char **str) service. ***************************************************************************/ -static int add_a_service(const service *pservice, const char *name) +static int add_a_service(const struct service *pservice, const char *name) { int i; - service tservice; - int num_to_alloc = iNumServices + 1; + struct service tservice; + int num_to_alloc = loadparm.iNumServices + 1; struct param_opt *data, *pdata; tservice = *pservice; @@ -1207,48 +1211,48 @@ static int add_a_service(const service *pservice, const char *name) if (i >= 0) { /* Clean all parametric options for service */ /* They will be added during parsing again */ - data = ServicePtrs[i]->param_opt; + data = loadparm.ServicePtrs[i]->param_opt; while (data) { pdata = data->next; talloc_free(data); data = pdata; } - ServicePtrs[i]->param_opt = NULL; + loadparm.ServicePtrs[i]->param_opt = NULL; return i; } } /* find an invalid one */ - for (i = 0; i < iNumServices; i++) - if (ServicePtrs[i] == NULL) + for (i = 0; i < loadparm.iNumServices; i++) + if (loadparm.ServicePtrs[i] == NULL) break; /* if not, then create one */ - if (i == iNumServices) { - service **tsp; + if (i == loadparm.iNumServices) { + struct service **tsp; - tsp = realloc_p(ServicePtrs, service *, num_to_alloc); + tsp = realloc_p(loadparm.ServicePtrs, struct service *, num_to_alloc); if (!tsp) { DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n")); return -1; } else { - ServicePtrs = tsp; - ServicePtrs[iNumServices] = NULL; + loadparm.ServicePtrs = tsp; + loadparm.ServicePtrs[loadparm.iNumServices] = NULL; } - iNumServices++; + loadparm.iNumServices++; } - ServicePtrs[i] = init_service(talloc_autofree_context()); - if (ServicePtrs[i] == NULL) { + loadparm.ServicePtrs[i] = init_service(talloc_autofree_context()); + if (loadparm.ServicePtrs[i] == NULL) { DEBUG(0,("add_a_service: out of memory!\n")); return -1; } - copy_service(ServicePtrs[i], &tservice, NULL); + copy_service(loadparm.ServicePtrs[i], &tservice, NULL); if (name != NULL) - string_set(ServicePtrs[i], &ServicePtrs[i]->szService, name); + string_set(loadparm.ServicePtrs[i], &loadparm.ServicePtrs[i]->szService, name); return i; } @@ -1257,35 +1261,32 @@ static int add_a_service(const service *pservice, const char *name) from service ifrom. ***************************************************************************/ -BOOL lp_add_home(const char *pszHomename, int iDefaultService, +bool lp_add_home(const char *pszHomename, int iDefaultService, const char *user, const char *pszHomedir) { int i; pstring newHomedir; - i = add_a_service(ServicePtrs[iDefaultService], pszHomename); + i = add_a_service(loadparm.ServicePtrs[iDefaultService], pszHomename); if (i < 0) return false; - if (!(*(ServicePtrs[iDefaultService]->szPath)) - || strequal(ServicePtrs[iDefaultService]->szPath, lp_pathname(-1))) { + if (!(*(loadparm.ServicePtrs[iDefaultService]->szPath)) + || strequal(loadparm.ServicePtrs[iDefaultService]->szPath, lp_pathname(-1))) { pstrcpy(newHomedir, pszHomedir); } else { pstrcpy(newHomedir, lp_pathname(iDefaultService)); string_sub(newHomedir,"%H", pszHomedir, sizeof(newHomedir)); } - string_set(ServicePtrs[i], &ServicePtrs[i]->szPath, newHomedir); + string_set(loadparm.ServicePtrs[i], &loadparm.ServicePtrs[i]->szPath, newHomedir); - if (!(*(ServicePtrs[i]->comment))) { - char *comment = talloc_asprintf(ServicePtrs[i], - "Home directory of %s", user); - string_set(ServicePtrs[i], &ServicePtrs[i]->comment, comment); - talloc_free(comment); + if (!(*(loadparm.ServicePtrs[i]->comment))) { + loadparm.ServicePtrs[i]->comment = talloc_asprintf(loadparm.ServicePtrs[i], "Home directory of %s", user); } - ServicePtrs[i]->bAvailable = sDefault.bAvailable; - ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; + loadparm.ServicePtrs[i]->bAvailable = sDefault.bAvailable; + loadparm.ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", pszHomename, user, newHomedir)); @@ -1299,7 +1300,7 @@ BOOL lp_add_home(const char *pszHomename, int iDefaultService, int lp_add_service(const char *pszService, int iDefaultService) { - return add_a_service(ServicePtrs[iDefaultService], pszService); + return add_a_service(loadparm.ServicePtrs[iDefaultService], pszService); } /*************************************************************************** @@ -1309,21 +1310,21 @@ int lp_add_service(const char *pszService, int iDefaultService) static bool lp_add_hidden(const char *name, const char *fstype) { int i = add_a_service(&sDefault, name); + struct service *service = loadparm.ServicePtrs[i]; if (i < 0) return false; - string_set(ServicePtrs[i], &ServicePtrs[i]->szPath, tmpdir()); + string_set(service, &service->szPath, tmpdir()); - ServicePtrs[i]->comment = talloc_asprintf(ServicePtrs[i], - "%s Service (%s)", - fstype, Globals.szServerString); - string_set(ServicePtrs[i], &ServicePtrs[i]->fstype, fstype); - ServicePtrs[i]->iMaxConnections = -1; - ServicePtrs[i]->bAvailable = true; - ServicePtrs[i]->bRead_only = true; - ServicePtrs[i]->bPrint_ok = false; - ServicePtrs[i]->bBrowseable = false; + service->comment = talloc_asprintf(service, "%s Service (%s)", + fstype, loadparm.Globals.szServerString); + string_set(service, &service->fstype, fstype); + service->iMaxConnections = -1; + service->bAvailable = true; + service->bRead_only = true; + service->bPrint_ok = false; + service->bBrowseable = false; if (strcasecmp(fstype, "IPC") == 0) { lp_do_parameter(i, "ntvfs handler", "default"); @@ -1341,7 +1342,8 @@ static bool lp_add_hidden(const char *name, const char *fstype) bool lp_add_printer(const char *pszPrintername, int iDefaultService) { const char *comment = "From Printcap"; - int i = add_a_service(ServicePtrs[iDefaultService], pszPrintername); + int i = add_a_service(loadparm.ServicePtrs[iDefaultService], + pszPrintername); if (i < 0) return false; @@ -1352,14 +1354,14 @@ bool lp_add_printer(const char *pszPrintername, int iDefaultService) /* entry (if/when the 'available' keyword is implemented!). */ /* the printer name is set to the service name. */ - string_set(ServicePtrs[i], &ServicePtrs[i]->szPrintername, + string_set(loadparm.ServicePtrs[i], &loadparm.ServicePtrs[i]->szPrintername, pszPrintername); - string_set(ServicePtrs[i], &ServicePtrs[i]->comment, comment); - ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; + string_set(loadparm.ServicePtrs[i], &loadparm.ServicePtrs[i]->comment, comment); + loadparm.ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; /* Printers cannot be read_only. */ - ServicePtrs[i]->bRead_only = False; + loadparm.ServicePtrs[i]->bRead_only = False; /* Printer services must be printable. */ - ServicePtrs[i]->bPrint_ok = True; + loadparm.ServicePtrs[i]->bPrint_ok = True; DEBUG(3, ("adding printer service %s\n", pszPrintername)); @@ -1410,22 +1412,23 @@ void *lp_parm_ptr(int snum, struct parm_struct *parm) if (snum == -1) { return parm->ptr; } - return ((char *)ServicePtrs[snum]) + PTR_DIFF(parm->ptr, &sDefault); + return ((char *)loadparm.ServicePtrs[snum]) + PTR_DIFF(parm->ptr, &sDefault); } /*************************************************************************** Find a service by name. Otherwise works like get_service. ***************************************************************************/ -static int getservicebyname(const char *pszServiceName, service * pserviceDest) +static int getservicebyname(const char *pszServiceName, + struct service * pserviceDest) { int iService; - for (iService = iNumServices - 1; iService >= 0; iService--) + for (iService = loadparm.iNumServices - 1; iService >= 0; iService--) if (VALID(iService) && - strwicmp(ServicePtrs[iService]->szService, pszServiceName) == 0) { + strwicmp(loadparm.ServicePtrs[iService]->szService, pszServiceName) == 0) { if (pserviceDest != NULL) - copy_service(pserviceDest, ServicePtrs[iService], NULL); + copy_service(pserviceDest, loadparm.ServicePtrs[iService], NULL); break; } @@ -1437,7 +1440,8 @@ static int getservicebyname(const char *pszServiceName, service * pserviceDest) If pcopymapDest is NULL then copy all fields ***************************************************************************/ -static void copy_service(service *pserviceDest, service *pserviceSource, +static void copy_service(struct service *pserviceDest, + struct service *pserviceSource, int *pcopymapDest) { int i; @@ -1527,34 +1531,34 @@ Check a service for consistency. Return False if the service is in any way incomplete or faulty, else True. ***************************************************************************/ -static BOOL service_ok(int iService) +static bool service_ok(int iService) { - BOOL bRetval; + bool bRetval; - bRetval = True; - if (ServicePtrs[iService]->szService[0] == '\0') { + bRetval = true; + if (loadparm.ServicePtrs[iService]->szService[0] == '\0') { DEBUG(0, ("The following message indicates an internal error:\n")); DEBUG(0, ("No service name in service entry.\n")); - bRetval = False; + bRetval = false; } /* The [printers] entry MUST be printable. I'm all for flexibility, but */ /* I can't see why you'd want a non-printable printer service... */ - if (strwicmp(ServicePtrs[iService]->szService, PRINTERS_NAME) == 0) { - if (!ServicePtrs[iService]->bPrint_ok) { + if (strwicmp(loadparm.ServicePtrs[iService]->szService, PRINTERS_NAME) == 0) { + if (!loadparm.ServicePtrs[iService]->bPrint_ok) { DEBUG(0, ("WARNING: [%s] service MUST be printable!\n", - ServicePtrs[iService]->szService)); - ServicePtrs[iService]->bPrint_ok = True; + loadparm.ServicePtrs[iService]->szService)); + loadparm.ServicePtrs[iService]->bPrint_ok = True; } /* [printers] service must also be non-browsable. */ - if (ServicePtrs[iService]->bBrowseable) - ServicePtrs[iService]->bBrowseable = False; + if (loadparm.ServicePtrs[iService]->bBrowseable) + loadparm.ServicePtrs[iService]->bBrowseable = False; } /* If a service is flagged unavailable, log the fact at level 0. */ - if (!ServicePtrs[iService]->bAvailable) + if (!loadparm.ServicePtrs[iService]->bAvailable) DEBUG(1, ("NOTE: Service %s is flagged unavailable.\n", - ServicePtrs[iService]->szService)); + loadparm.ServicePtrs[iService]->szService)); return bRetval; } @@ -1582,18 +1586,18 @@ static void add_to_file_list(const char *fname, const char *subfname) } if (!f) { - f = malloc_p(struct file_lists); + f = talloc(talloc_autofree_context(), struct file_lists); if (!f) return; f->next = file_lists; - f->name = strdup(fname); + f->name = talloc_strdup(f, fname); if (!f->name) { - SAFE_FREE(f); + talloc_free(f); return; } - f->subfname = strdup(subfname); + f->subfname = talloc_strdup(f, subfname); if (!f->subfname) { - SAFE_FREE(f); + talloc_free(f); return; } file_lists = f; @@ -1630,8 +1634,8 @@ BOOL lp_file_list_changed(void) ("file %s modified: %s\n", n2, ctime(&mod_time))); f->modtime = mod_time; - SAFE_FREE(f->subfname); - f->subfname = strdup(n2); + talloc_free(f->subfname); + f->subfname = talloc_strdup(f, n2); return true; } f = f->next; @@ -1668,7 +1672,7 @@ static bool handle_copy(const char *pszParmValue, char **ptr) { bool bRetval; int iTemp; - service *serviceTemp; + struct service *serviceTemp; string_set(talloc_autofree_context(), ptr, pszParmValue); @@ -1679,12 +1683,12 @@ static bool handle_copy(const char *pszParmValue, char **ptr) DEBUG(3, ("Copying service from service %s\n", pszParmValue)); if ((iTemp = getservicebyname(pszParmValue, serviceTemp)) >= 0) { - if (iTemp == iServiceIndex) { + if (iTemp == loadparm.iServiceIndex) { DEBUG(0, ("Can't copy service %s - unable to copy self!\n", pszParmValue)); } else { - copy_service(ServicePtrs[iServiceIndex], + copy_service(loadparm.ServicePtrs[loadparm.iServiceIndex], serviceTemp, - ServicePtrs[iServiceIndex]->copymap); + loadparm.ServicePtrs[loadparm.iServiceIndex]->copymap); bRetval = true; } } else { @@ -1700,7 +1704,7 @@ static bool handle_copy(const char *pszParmValue, char **ptr) Initialise a copymap. ***************************************************************************/ -static void init_copymap(service *pservice) +static void init_copymap(struct service *pservice) { int i; talloc_free(pservice->copymap); @@ -1747,11 +1751,11 @@ static bool lp_do_parameter_parametric(int snum, const char *pszParmName, strlower(name); if (snum < 0) { - data = Globals.param_opt; + data = loadparm.Globals.param_opt; mem_ctx = talloc_autofree_context(); } else { - data = ServicePtrs[snum]->param_opt; - mem_ctx = ServicePtrs[snum]; + data = loadparm.ServicePtrs[snum]->param_opt; + mem_ctx = loadparm.ServicePtrs[snum]; } /* Traverse destination */ @@ -1779,9 +1783,9 @@ static bool lp_do_parameter_parametric(int snum, const char *pszParmName, paramo->value = talloc_strdup(paramo, pszParmValue); paramo->flags = flags; if (snum < 0) { - DLIST_ADD(Globals.param_opt, paramo); + DLIST_ADD(loadparm.Globals.param_opt, paramo); } else { - DLIST_ADD(ServicePtrs[snum]->param_opt, paramo); + DLIST_ADD(loadparm.ServicePtrs[snum]->param_opt, paramo); } free(name); @@ -1835,20 +1839,20 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue return true; } parm_ptr = - ((char *)ServicePtrs[snum]) + PTR_DIFF(def_ptr, + ((char *)loadparm.ServicePtrs[snum]) + PTR_DIFF(def_ptr, &sDefault); - mem_ctx = ServicePtrs[snum]; + mem_ctx = loadparm.ServicePtrs[snum]; } if (snum >= 0) { - if (!ServicePtrs[snum]->copymap) - init_copymap(ServicePtrs[snum]); + if (!loadparm.ServicePtrs[snum]->copymap) + init_copymap(loadparm.ServicePtrs[snum]); /* this handles the aliases - set the copymap for other entries with the same data pointer */ for (i = 0; parm_table[i].label; i++) if (parm_table[i].ptr == parm_table[parmnum].ptr) - ServicePtrs[snum]->copymap[i] = false; + loadparm.ServicePtrs[snum]->copymap[i] = false; } /* if it is a special case then go ahead */ @@ -1948,7 +1952,7 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue static BOOL do_parameter(const char *pszParmName, const char *pszParmValue, void *userdata) { - return lp_do_parameter(bInGlobalSection ? -2 : iServiceIndex, + return lp_do_parameter(loadparm.bInGlobalSection ? -2 : loadparm.iServiceIndex, pszParmName, pszParmValue); } @@ -2147,10 +2151,10 @@ static BOOL do_section(const char *pszSectionName, void *userdata) bRetval = False; /* if we've just struck a global section, note the fact. */ - bInGlobalSection = isglobal; + loadparm.bInGlobalSection = isglobal; /* check for multiple global sections */ - if (bInGlobalSection) { + if (loadparm.bInGlobalSection) { DEBUG(3, ("Processing section \"[%s]\"\n", pszSectionName)); return true; } @@ -2158,8 +2162,8 @@ static BOOL do_section(const char *pszSectionName, void *userdata) /* if we have a current service, tidy it up before moving on */ bRetval = True; - if (iServiceIndex >= 0) - bRetval = service_ok(iServiceIndex); + if (loadparm.iServiceIndex >= 0) + bRetval = service_ok(loadparm.iServiceIndex); /* if all is still well, move to the next record in the services array */ if (bRetval) { @@ -2167,7 +2171,7 @@ static BOOL do_section(const char *pszSectionName, void *userdata) /* issued by the post-processing of a previous section. */ DEBUG(2, ("Processing section \"[%s]\"\n", pszSectionName)); - if ((iServiceIndex = add_a_service(&sDefault, pszSectionName)) + if ((loadparm.iServiceIndex = add_a_service(&sDefault, pszSectionName)) < 0) { DEBUG(0, ("Failed to add a new service\n")); return false; @@ -2230,11 +2234,10 @@ static void dump_globals(FILE *f, BOOL show_defaults) print_parameter(&parm_table[i], parm_table[i].ptr, f); fprintf(f, "\n"); } - if (Globals.param_opt != NULL) { - data = Globals.param_opt; - while(data) { + if (loadparm.Globals.param_opt != NULL) { + for (data = loadparm.Globals.param_opt; data; + data = data->next) { fprintf(f, "\t%s = %s\n", data->key, data->value); - data = data->next; } } @@ -2244,7 +2247,7 @@ static void dump_globals(FILE *f, BOOL show_defaults) Display the contents of a single services record. ***************************************************************************/ -static void dump_a_service(service * pService, FILE * f) +static void dump_a_service(struct service * pService, FILE * f) { int i; struct param_opt *data; @@ -2277,17 +2280,15 @@ static void dump_a_service(service * pService, FILE * f) fprintf(f, "\n"); } if (pService->param_opt != NULL) { - data = pService->param_opt; - while(data) { + for (data = pService->param_opt; data; data = data->next) { fprintf(f, "\t%s = %s\n", data->key, data->value); - data = data->next; } } } -BOOL lp_dump_a_parameter(int snum, char *parm_name, FILE * f, BOOL isGlobal) +bool lp_dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal) { - service * pService = ServicePtrs[snum]; + struct service * pService = loadparm.ServicePtrs[snum]; struct parm_struct *parm; void *ptr; @@ -2333,7 +2334,7 @@ struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters) return &parm_table[(*i)++]; } } else { - service *pService = ServicePtrs[snum]; + struct service *pService = loadparm.ServicePtrs[snum]; for (; parm_table[*i].label; (*i)++) { if (parm_table[*i].class == P_SEPARATOR) @@ -2373,7 +2374,7 @@ struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters) bool lp_snum_ok(int iService) { - return (LP_SNUM_OK(iService) && ServicePtrs[iService]->bAvailable); + return (LP_SNUM_OK(iService) && loadparm.ServicePtrs[iService]->bAvailable); } /*************************************************************************** @@ -2401,13 +2402,13 @@ BOOL lp_loaded(void) void lp_killunused(struct smbsrv_connection *smb, BOOL (*snumused) (struct smbsrv_connection *, int)) { int i; - for (i = 0; i < iNumServices; i++) { + for (i = 0; i < loadparm.iNumServices; i++) { if (!VALID(i)) continue; if (!snumused || !snumused(smb, i)) { - talloc_free(ServicePtrs[i]); - ServicePtrs[i] = NULL; + talloc_free(loadparm.ServicePtrs[i]); + loadparm.ServicePtrs[i] = NULL; } } } @@ -2419,8 +2420,8 @@ void lp_killunused(struct smbsrv_connection *smb, BOOL (*snumused) (struct smbsr void lp_killservice(int iServiceIn) { if (VALID(iServiceIn)) { - talloc_free(ServicePtrs[iServiceIn]); - ServicePtrs[iServiceIn] = NULL; + talloc_free(loadparm.ServicePtrs[iServiceIn]); + loadparm.ServicePtrs[iServiceIn] = NULL; } } @@ -2437,14 +2438,14 @@ bool lp_load(void) bRetval = false; - bInGlobalSection = true; + loadparm.bInGlobalSection = true; - if (Globals.param_opt != NULL) { + if (loadparm.Globals.param_opt != NULL) { struct param_opt *next; - for (data=Globals.param_opt; data; data=next) { + for (data=loadparm.Globals.param_opt; data; data=next) { next = data->next; if (data->flags & FLAG_CMDLINE) continue; - DLIST_REMOVE(Globals.param_opt, data); + DLIST_REMOVE(loadparm.Globals.param_opt, data); talloc_free(data); } } @@ -2457,14 +2458,14 @@ bool lp_load(void) add_to_file_list(lp_configfile(), n2); /* We get sections first, so have to start 'behind' to make up */ - iServiceIndex = -1; + loadparm.iServiceIndex = -1; bRetval = pm_process(n2, do_section, do_parameter, NULL); /* finish up the last section */ DEBUG(4, ("pm_process() returned %s\n", BOOLSTR(bRetval))); if (bRetval) - if (iServiceIndex >= 0) - bRetval = service_ok(iServiceIndex); + if (loadparm.iServiceIndex >= 0) + bRetval = service_ok(loadparm.iServiceIndex); lp_add_auto_services(lp_auto_services()); @@ -2473,7 +2474,7 @@ bool lp_load(void) bLoaded = true; - if (!Globals.szWINSservers && Globals.bWINSsupport) { + if (!loadparm.Globals.szWINSservers && loadparm.Globals.bWINSsupport) { lp_do_parameter(-1, "wins server", "127.0.0.1"); } @@ -2488,7 +2489,7 @@ bool lp_load(void) void lp_resetnumservices(void) { - iNumServices = 0; + loadparm.iNumServices = 0; } /*************************************************************************** @@ -2497,7 +2498,7 @@ void lp_resetnumservices(void) int lp_numservices(void) { - return iNumServices; + return loadparm.iNumServices; } /*************************************************************************** @@ -2526,9 +2527,9 @@ Display the contents of one service in human-readable form. void lp_dump_one(FILE *f, bool show_defaults, int snum) { if (VALID(snum)) { - if (ServicePtrs[snum]->szService[0] == '\0') + if (loadparm.ServicePtrs[snum]->szService[0] == '\0') return; - dump_a_service(ServicePtrs[snum], f); + dump_a_service(loadparm.ServicePtrs[snum], f); } } @@ -2545,14 +2546,14 @@ int lp_servicenumber(const char *pszServiceName) char *serviceName; - for (iService = iNumServices - 1; iService >= 0; iService--) { - if (VALID(iService) && ServicePtrs[iService]->szService) { + for (iService = loadparm.iNumServices - 1; iService >= 0; iService--) { + if (VALID(iService) && loadparm.ServicePtrs[iService]->szService) { /* * The substitution here is used to support %U is * service names */ - serviceName = standard_sub_basic(ServicePtrs[iService], - ServicePtrs[iService]->szService); + serviceName = standard_sub_basic(loadparm.ServicePtrs[iService], + loadparm.ServicePtrs[iService]->szService); if (strequal(serviceName, pszServiceName)) break; } @@ -2609,7 +2610,7 @@ bool lp_domain_logons(void) void lp_remove_service(int snum) { - ServicePtrs[snum] = NULL; + loadparm.ServicePtrs[snum] = NULL; } /******************************************************************* @@ -2643,7 +2644,7 @@ const char *lp_printername(int snum) int lp_maxprintjobs(int snum) { - int maxjobs = LP_SNUM_OK(snum) ? ServicePtrs[snum]->iMaxPrintJobs : sDefault.iMaxPrintJobs; + int maxjobs = LP_SNUM_OK(snum) ? loadparm.ServicePtrs[snum]->iMaxPrintJobs : sDefault.iMaxPrintJobs; if (maxjobs <= 0 || maxjobs >= PRINT_MAX_JOBID) maxjobs = PRINT_MAX_JOBID - 1; -- cgit From ffeee68e4b72dd94fee57366bd8d38b8c284c3d4 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 12:42:09 +0000 Subject: r25026: Move param/param.h out of includes.h (This used to be commit abe8349f9b4387961ff3665d8c589d61cd2edf31) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 3d12118992..83c852ace7 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -61,6 +61,7 @@ #include "smb_server/smb_server.h" #include "libcli/raw/signing.h" #include "lib/util/dlinklist.h" +#include "param/param.h" #include "param/loadparm.h" #include "pstring.h" -- cgit From dccf3f99e45137b6cd18c1de1c79808ad67130d1 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 13:27:14 +0000 Subject: r25027: Fix more warnings. (This used to be commit 5085c53fcfade614e83d21fc2c1a5bc43bb2a729) --- source4/param/loadparm.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 83c852ace7..a38e9d9e9e 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -595,7 +595,7 @@ static void init_globals(void) parm_table[i].ptr && !(parm_table[i].flags & FLAG_CMDLINE)) { string_set(talloc_autofree_context(), - parm_table[i].ptr, ""); + (char **)parm_table[i].ptr, ""); } } @@ -1473,12 +1473,14 @@ static void copy_service(struct service *pserviceDest, break; case P_STRING: - string_set(pserviceDest, dest_ptr, + string_set(pserviceDest, + (char **)dest_ptr, *(char **)src_ptr); break; case P_USTRING: - string_set(pserviceDest, dest_ptr, + string_set(pserviceDest, + (char **)dest_ptr, *(char **)src_ptr); strupper(*(char **)dest_ptr); break; @@ -1904,11 +1906,11 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue break; case P_STRING: - string_set(mem_ctx, parm_ptr, pszParmValue); + string_set(mem_ctx, (char **)parm_ptr, pszParmValue); break; case P_USTRING: - string_set(mem_ctx, parm_ptr, pszParmValue); + string_set(mem_ctx, (char **)parm_ptr, pszParmValue); strupper(*(char **)parm_ptr); break; -- cgit From 5def5048ca059b550a27f991a70365ecbc80f19d Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 14:12:45 +0000 Subject: r25031: Use pointers to services rather than service numbers when possible. (This used to be commit dde12060ea07ba34fd3f96594559696d52127e7c) --- source4/param/loadparm.c | 635 ++++++++++++++++++++++++----------------------- 1 file changed, 325 insertions(+), 310 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index a38e9d9e9e..c7c7656863 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -74,7 +74,6 @@ static bool bLoaded = false; #define VALID(i) (loadparm.ServicePtrs[i] != NULL) static bool do_parameter(const char *, const char *, void *); -static bool do_parameter_var(const char *pszParmName, const char *fmt, ...); static bool defaults_saved = false; @@ -248,22 +247,22 @@ static struct service sDefault = { 1000, /* iMaxPrintJobs */ 0, /* iMaxConnections */ 0, /* iCSCPolicy */ - True, /* bAvailable */ - True, /* bBrowseable */ - True, /* bRead_only */ - False, /* bPrint_ok */ - False, /* bMap_system */ - False, /* bMap_hidden */ - True, /* bMap_archive */ - True, /* bStrictLocking */ + true, /* bAvailable */ + true, /* bBrowseable */ + true, /* bRead_only */ + false, /* bPrint_ok */ + false, /* bMap_system */ + false, /* bMap_hidden */ + true, /* bMap_archive */ + true, /* bStrictLocking */ 0744, /* iCreate_mask */ 0000, /* iCreate_force_mode */ 0755, /* iDir_mask */ 0000, /* iDir_force_mode */ NULL, /* copymap */ - False, /* bMSDfsRoot */ - False, /* bStrictSync */ - False, /* bCIFileSystem */ + false, /* bMSDfsRoot */ + false, /* bStrictSync */ + false, /* bCIFileSystem */ NULL, /* Parametric options */ "" /* dummy */ @@ -274,11 +273,11 @@ static struct loadparm_context { struct global Globals; struct service **ServicePtrs; int iNumServices; - int iServiceIndex; + struct service *currentService; bool bInGlobalSection; } loadparm = { .iNumServices = 0, - .iServiceIndex = 0, + .currentService = NULL, .bInGlobalSection = true, .ServicePtrs = NULL, }; @@ -316,12 +315,12 @@ static const struct enum_list enum_announce_as[] = { }; static const struct enum_list enum_bool_auto[] = { - {False, "No"}, - {False, "False"}, - {False, "0"}, - {True, "Yes"}, - {True, "True"}, - {True, "1"}, + {false, "No"}, + {false, "False"}, + {false, "0"}, + {true, "Yes"}, + {true, "True"}, + {true, "1"}, {Auto, "Auto"}, {-1, NULL} }; @@ -599,136 +598,137 @@ static void init_globals(void) } } - do_parameter("config file", dyn_CONFIGFILE, NULL); + lp_do_global_parameter("config file", dyn_CONFIGFILE); - do_parameter("share backend", "classic", NULL); + lp_do_global_parameter("share backend", "classic"); - do_parameter("server role", "standalone", NULL); + lp_do_global_parameter("server role", "standalone"); /* options that can be set on the command line must be initialised via - the slower do_parameter() to ensure that FLAG_CMDLINE is obeyed */ + the slower lp_do_global_parameter() to ensure that FLAG_CMDLINE is obeyed */ #ifdef TCP_NODELAY - do_parameter("socket options", "TCP_NODELAY", NULL); + lp_do_global_parameter("socket options", "TCP_NODELAY"); #endif - do_parameter("workgroup", DEFAULT_WORKGROUP, NULL); + lp_do_global_parameter("workgroup", DEFAULT_WORKGROUP); myname = get_myname(); - do_parameter("netbios name", myname, NULL); + lp_do_global_parameter("netbios name", myname); SAFE_FREE(myname); - do_parameter("name resolve order", "lmhosts wins host bcast", NULL); - - do_parameter("fstype", FSTYPE_STRING, NULL); - do_parameter("ntvfs handler", "unixuid default", NULL); - do_parameter("max connections", "-1", NULL); - - do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo", NULL); - do_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc drepl winbind", NULL); - do_parameter("ntptr providor", "simple_ldb", NULL); - do_parameter("auth methods:domain controller", "anonymous sam_ignoredomain", NULL); - do_parameter("auth methods:member server", "anonymous sam winbind", NULL); - do_parameter("auth methods:standalone", "anonymous sam_ignoredomain", NULL); - do_parameter("private dir", dyn_PRIVATE_DIR, NULL); - do_parameter("sam database", "sam.ldb", NULL); - do_parameter("secrets database", "secrets.ldb", NULL); - do_parameter("spoolss database", "spoolss.ldb", NULL); - do_parameter("wins config database", "wins_config.ldb", NULL); - do_parameter("wins database", "wins.ldb", NULL); - do_parameter("registry:HKEY_LOCAL_MACHINE", "hklm.ldb", NULL); + lp_do_global_parameter("name resolve order", "lmhosts wins host bcast"); + + lp_do_global_parameter("fstype", FSTYPE_STRING); + lp_do_global_parameter("ntvfs handler", "unixuid default"); + lp_do_global_parameter("max connections", "-1"); + + lp_do_global_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo"); + lp_do_global_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc drepl winbind"); + lp_do_global_parameter("ntptr providor", "simple_ldb"); + lp_do_global_parameter("auth methods:domain controller", "anonymous sam_ignoredomain"); + lp_do_global_parameter("auth methods:member server", "anonymous sam winbind"); + lp_do_global_parameter("auth methods:standalone", "anonymous sam_ignoredomain"); + lp_do_global_parameter("private dir", dyn_PRIVATE_DIR); + lp_do_global_parameter("sam database", "sam.ldb"); + lp_do_global_parameter("secrets database", "secrets.ldb"); + lp_do_global_parameter("spoolss database", "spoolss.ldb"); + lp_do_global_parameter("wins config database", "wins_config.ldb"); + lp_do_global_parameter("wins database", "wins.ldb"); + lp_do_global_parameter("registry:HKEY_LOCAL_MACHINE", "hklm.ldb"); /* This hive should be dynamically generated by Samba using data from the sam, but for the moment leave it in a tdb to keep regedt32 from popping up an annoying dialog. */ - do_parameter("registry:HKEY_USERS", "hku.ldb", NULL); + lp_do_global_parameter("registry:HKEY_USERS", "hku.ldb"); /* using UTF8 by default allows us to support all chars */ - do_parameter("unix charset", "UTF8", NULL); + lp_do_global_parameter("unix charset", "UTF8"); /* Use codepage 850 as a default for the dos character set */ - do_parameter("dos charset", "CP850", NULL); + lp_do_global_parameter("dos charset", "CP850"); /* * Allow the default PASSWD_CHAT to be overridden in local.h. */ - do_parameter("passwd chat", DEFAULT_PASSWD_CHAT, NULL); + lp_do_global_parameter("passwd chat", DEFAULT_PASSWD_CHAT); - do_parameter("pid directory", dyn_PIDDIR, NULL); - do_parameter("lock dir", dyn_LOCKDIR, NULL); - do_parameter("modules dir", dyn_MODULESDIR, NULL); - do_parameter("ncalrpc dir", dyn_NCALRPCDIR, NULL); + lp_do_global_parameter("pid directory", dyn_PIDDIR); + lp_do_global_parameter("lock dir", dyn_LOCKDIR); + lp_do_global_parameter("modules dir", dyn_MODULESDIR); + lp_do_global_parameter("ncalrpc dir", dyn_NCALRPCDIR); - do_parameter("socket address", "0.0.0.0", NULL); - do_parameter_var("server string", "Samba %s", SAMBA_VERSION_STRING); + lp_do_global_parameter("socket address", "0.0.0.0"); + lp_do_global_parameter_var("server string", + "Samba %s", SAMBA_VERSION_STRING); - do_parameter_var("announce version", "%d.%d", + lp_do_global_parameter_var("announce version", "%d.%d", DEFAULT_MAJOR_VERSION, DEFAULT_MINOR_VERSION); - do_parameter("password server", "*", NULL); - - do_parameter("max mux", "50", NULL); - do_parameter("max xmit", "12288", NULL); - do_parameter("password level", "0", NULL); - do_parameter("LargeReadwrite", "True", NULL); - do_parameter("server min protocol", "CORE", NULL); - do_parameter("server max protocol", "NT1", NULL); - do_parameter("client min protocol", "CORE", NULL); - do_parameter("client max protocol", "NT1", NULL); - do_parameter("security", "USER", NULL); - do_parameter("paranoid server security", "True", NULL); - do_parameter("EncryptPasswords", "True", NULL); - do_parameter("ReadRaw", "True", NULL); - do_parameter("WriteRaw", "True", NULL); - do_parameter("NullPasswords", "False", NULL); - do_parameter("ObeyPamRestrictions", "False", NULL); - do_parameter("announce as", "NT SERVER", NULL); - - do_parameter("TimeServer", "False", NULL); - do_parameter("BindInterfacesOnly", "False", NULL); - do_parameter("Unicode", "True", NULL); - do_parameter("ClientLanManAuth", "True", NULL); - do_parameter("LanmanAuth", "True", NULL); - do_parameter("NTLMAuth", "True", NULL); - do_parameter("client use spnego principal", "False", NULL); + lp_do_global_parameter("password server", "*"); + + lp_do_global_parameter("max mux", "50"); + lp_do_global_parameter("max xmit", "12288"); + lp_do_global_parameter("password level", "0"); + lp_do_global_parameter("LargeReadwrite", "True"); + lp_do_global_parameter("server min protocol", "CORE"); + lp_do_global_parameter("server max protocol", "NT1"); + lp_do_global_parameter("client min protocol", "CORE"); + lp_do_global_parameter("client max protocol", "NT1"); + lp_do_global_parameter("security", "USER"); + lp_do_global_parameter("paranoid server security", "True"); + lp_do_global_parameter("EncryptPasswords", "True"); + lp_do_global_parameter("ReadRaw", "True"); + lp_do_global_parameter("WriteRaw", "True"); + lp_do_global_parameter("NullPasswords", "False"); + lp_do_global_parameter("ObeyPamRestrictions", "False"); + lp_do_global_parameter("announce as", "NT SERVER"); + + lp_do_global_parameter("TimeServer", "False"); + lp_do_global_parameter("BindInterfacesOnly", "False"); + lp_do_global_parameter("Unicode", "True"); + lp_do_global_parameter("ClientLanManAuth", "True"); + lp_do_global_parameter("LanmanAuth", "True"); + lp_do_global_parameter("NTLMAuth", "True"); + lp_do_global_parameter("client use spnego principal", "False"); - do_parameter("UnixExtensions", "False", NULL); + lp_do_global_parameter("UnixExtensions", "False"); - do_parameter("PreferredMaster", "Auto", NULL); - do_parameter("LocalMaster", "True", NULL); + lp_do_global_parameter("PreferredMaster", "Auto"); + lp_do_global_parameter("LocalMaster", "True"); - do_parameter("wins support", "False", NULL); - do_parameter("dns proxy", "True", NULL); + lp_do_global_parameter("wins support", "False"); + lp_do_global_parameter("dns proxy", "True"); - do_parameter("winbind separator", "\\", NULL); - do_parameter("winbind sealed pipes", "True", NULL); - do_parameter("winbindd socket directory", dyn_WINBINDD_SOCKET_DIR, NULL); - do_parameter("template shell", "/bin/false", NULL); - do_parameter("template homedir", "/home/%WORKGROUP%/%ACCOUNTNAME%", NULL); + lp_do_global_parameter("winbind separator", "\\"); + lp_do_global_parameter("winbind sealed pipes", "True"); + lp_do_global_parameter("winbindd socket directory", dyn_WINBINDD_SOCKET_DIR); + lp_do_global_parameter("template shell", "/bin/false"); + lp_do_global_parameter("template homedir", "/home/%WORKGROUP%/%ACCOUNTNAME%"); - do_parameter("client signing", "Yes", NULL); - do_parameter("server signing", "auto", NULL); + lp_do_global_parameter("client signing", "Yes"); + lp_do_global_parameter("server signing", "auto"); - do_parameter("use spnego", "True", NULL); + lp_do_global_parameter("use spnego", "True"); - do_parameter("smb ports", "445 139", NULL); - do_parameter("nbt port", "137", NULL); - do_parameter("dgram port", "138", NULL); - do_parameter("cldap port", "389", NULL); - do_parameter("krb5 port", "88", NULL); - do_parameter("kpasswd port", "464", NULL); - do_parameter("web port", "901", NULL); - do_parameter("web application directory", dyn_WEBAPPSDIR, NULL); - do_parameter("jsonrpc services directory", dyn_SERVICESDIR, NULL); + lp_do_global_parameter("smb ports", "445 139"); + lp_do_global_parameter("nbt port", "137"); + lp_do_global_parameter("dgram port", "138"); + lp_do_global_parameter("cldap port", "389"); + lp_do_global_parameter("krb5 port", "88"); + lp_do_global_parameter("kpasswd port", "464"); + lp_do_global_parameter("web port", "901"); + lp_do_global_parameter("web application directory", dyn_WEBAPPSDIR); + lp_do_global_parameter("jsonrpc services directory", dyn_SERVICESDIR); - do_parameter("nt status support", "True", NULL); + lp_do_global_parameter("nt status support", "True"); - do_parameter("max wins ttl", "518400", NULL); /* 6 days */ - do_parameter("min wins ttl", "10", NULL); + lp_do_global_parameter("max wins ttl", "518400"); /* 6 days */ + lp_do_global_parameter("min wins ttl", "10"); - do_parameter("tls enabled", "True", NULL); - do_parameter("tls keyfile", "tls/key.pem", NULL); - do_parameter("tls certfile", "tls/cert.pem", NULL); - do_parameter("tls cafile", "tls/ca.pem", NULL); - do_parameter_var("js include", "%s", dyn_JSDIR); - do_parameter_var("setup directory", "%s", dyn_SETUPDIR); + lp_do_global_parameter("tls enabled", "True"); + lp_do_global_parameter("tls keyfile", "tls/key.pem"); + lp_do_global_parameter("tls certfile", "tls/cert.pem"); + lp_do_global_parameter("tls cafile", "tls/ca.pem"); + lp_do_global_parameter_var("js include", "%s", dyn_JSDIR); + lp_do_global_parameter_var("setup directory", "%s", dyn_SETUPDIR); for (i = 0; parm_table[i].label; i++) { if (!(parm_table[i].flags & FLAG_CMDLINE)) { @@ -958,11 +958,10 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, &loadparm.Globals.client_signing) /* local prototypes */ static int map_parameter(const char *pszParmName); -static int getservicebyname(const char *pszServiceName, - struct service * pserviceDest); +static struct service *getservicebyname(const char *pszServiceName); static void copy_service(struct service * pserviceDest, struct service * pserviceSource, int *pcopymapDest); -static bool service_ok(int iService); +static bool service_ok(struct service *service); static bool do_section(const char *pszSectionName, void *); static void init_copymap(struct service * pservice); @@ -1197,7 +1196,7 @@ void string_free(char **str) service. ***************************************************************************/ -static int add_a_service(const struct service *pservice, const char *name) +static struct service *add_a_service(const struct service *pservice, const char *name) { int i; struct service tservice; @@ -1208,18 +1207,18 @@ static int add_a_service(const struct service *pservice, const char *name) /* it might already exist */ if (name) { - i = getservicebyname(name, NULL); - if (i >= 0) { + struct service *service = getservicebyname(name); + if (service != NULL) { /* Clean all parametric options for service */ /* They will be added during parsing again */ - data = loadparm.ServicePtrs[i]->param_opt; + data = service->param_opt; while (data) { pdata = data->next; talloc_free(data); data = pdata; } - loadparm.ServicePtrs[i]->param_opt = NULL; - return i; + service->param_opt = NULL; + return service; } } @@ -1236,7 +1235,7 @@ static int add_a_service(const struct service *pservice, const char *name) if (!tsp) { DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n")); - return -1; + return NULL; } else { loadparm.ServicePtrs = tsp; @@ -1249,12 +1248,12 @@ static int add_a_service(const struct service *pservice, const char *name) loadparm.ServicePtrs[i] = init_service(talloc_autofree_context()); if (loadparm.ServicePtrs[i] == NULL) { DEBUG(0,("add_a_service: out of memory!\n")); - return -1; + return NULL; } copy_service(loadparm.ServicePtrs[i], &tservice, NULL); if (name != NULL) string_set(loadparm.ServicePtrs[i], &loadparm.ServicePtrs[i]->szService, name); - return i; + return loadparm.ServicePtrs[i]; } /*************************************************************************** @@ -1265,12 +1264,12 @@ static int add_a_service(const struct service *pservice, const char *name) bool lp_add_home(const char *pszHomename, int iDefaultService, const char *user, const char *pszHomedir) { - int i; + struct service *service; pstring newHomedir; - i = add_a_service(loadparm.ServicePtrs[iDefaultService], pszHomename); + service = add_a_service(loadparm.ServicePtrs[iDefaultService], pszHomename); - if (i < 0) + if (service == NULL) return false; if (!(*(loadparm.ServicePtrs[iDefaultService]->szPath)) @@ -1281,16 +1280,16 @@ bool lp_add_home(const char *pszHomename, int iDefaultService, string_sub(newHomedir,"%H", pszHomedir, sizeof(newHomedir)); } - string_set(loadparm.ServicePtrs[i], &loadparm.ServicePtrs[i]->szPath, newHomedir); + string_set(service, &service->szPath, newHomedir); - if (!(*(loadparm.ServicePtrs[i]->comment))) { - loadparm.ServicePtrs[i]->comment = talloc_asprintf(loadparm.ServicePtrs[i], "Home directory of %s", user); + if (!(*(service->comment))) { + service->comment = talloc_asprintf(service, "Home directory of %s", user); } - loadparm.ServicePtrs[i]->bAvailable = sDefault.bAvailable; - loadparm.ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; + service->bAvailable = sDefault.bAvailable; + service->bBrowseable = sDefault.bBrowseable; - DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", pszHomename, - user, newHomedir)); + DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", + pszHomename, user, newHomedir)); return true; } @@ -1299,7 +1298,7 @@ bool lp_add_home(const char *pszHomename, int iDefaultService, Add a new service, based on an old one. ***************************************************************************/ -int lp_add_service(const char *pszService, int iDefaultService) +struct service *lp_add_service(const char *pszService, int iDefaultService) { return add_a_service(loadparm.ServicePtrs[iDefaultService], pszService); } @@ -1310,10 +1309,9 @@ int lp_add_service(const char *pszService, int iDefaultService) static bool lp_add_hidden(const char *name, const char *fstype) { - int i = add_a_service(&sDefault, name); - struct service *service = loadparm.ServicePtrs[i]; + struct service *service = add_a_service(&sDefault, name); - if (i < 0) + if (service == NULL) return false; string_set(service, &service->szPath, tmpdir()); @@ -1328,7 +1326,7 @@ static bool lp_add_hidden(const char *name, const char *fstype) service->bBrowseable = false; if (strcasecmp(fstype, "IPC") == 0) { - lp_do_parameter(i, "ntvfs handler", "default"); + lp_do_service_parameter(service, "ntvfs handler", "default"); } DEBUG(3, ("adding hidden service %s\n", name)); @@ -1343,10 +1341,11 @@ static bool lp_add_hidden(const char *name, const char *fstype) bool lp_add_printer(const char *pszPrintername, int iDefaultService) { const char *comment = "From Printcap"; - int i = add_a_service(loadparm.ServicePtrs[iDefaultService], + struct service *service; + service = add_a_service(loadparm.ServicePtrs[iDefaultService], pszPrintername); - if (i < 0) + if (service == NULL) return false; /* note that we do NOT default the availability flag to True - */ @@ -1355,14 +1354,13 @@ bool lp_add_printer(const char *pszPrintername, int iDefaultService) /* entry (if/when the 'available' keyword is implemented!). */ /* the printer name is set to the service name. */ - string_set(loadparm.ServicePtrs[i], &loadparm.ServicePtrs[i]->szPrintername, - pszPrintername); - string_set(loadparm.ServicePtrs[i], &loadparm.ServicePtrs[i]->comment, comment); - loadparm.ServicePtrs[i]->bBrowseable = sDefault.bBrowseable; + string_set(service, &service->szPrintername, pszPrintername); + string_set(service, &service->comment, comment); + service->bBrowseable = sDefault.bBrowseable; /* Printers cannot be read_only. */ - loadparm.ServicePtrs[i]->bRead_only = False; + service->bRead_only = false; /* Printer services must be printable. */ - loadparm.ServicePtrs[i]->bPrint_ok = True; + service->bPrint_ok = true; DEBUG(3, ("adding printer service %s\n", pszPrintername)); @@ -1420,20 +1418,17 @@ void *lp_parm_ptr(int snum, struct parm_struct *parm) Find a service by name. Otherwise works like get_service. ***************************************************************************/ -static int getservicebyname(const char *pszServiceName, - struct service * pserviceDest) +static struct service *getservicebyname(const char *pszServiceName) { int iService; for (iService = loadparm.iNumServices - 1; iService >= 0; iService--) if (VALID(iService) && strwicmp(loadparm.ServicePtrs[iService]->szService, pszServiceName) == 0) { - if (pserviceDest != NULL) - copy_service(pserviceDest, loadparm.ServicePtrs[iService], NULL); - break; + return loadparm.ServicePtrs[iService]; } - return iService; + return NULL; } /*************************************************************************** @@ -1503,7 +1498,7 @@ static void copy_service(struct service *pserviceDest, data = pserviceSource->param_opt; while (data) { - not_added = True; + not_added = true; pdata = pserviceDest->param_opt; /* Traverse destination */ while (pdata) { @@ -1534,12 +1529,12 @@ Check a service for consistency. Return False if the service is in any way incomplete or faulty, else True. ***************************************************************************/ -static bool service_ok(int iService) +static bool service_ok(struct service *service) { bool bRetval; bRetval = true; - if (loadparm.ServicePtrs[iService]->szService[0] == '\0') { + if (service->szService[0] == '\0') { DEBUG(0, ("The following message indicates an internal error:\n")); DEBUG(0, ("No service name in service entry.\n")); bRetval = false; @@ -1547,21 +1542,21 @@ static bool service_ok(int iService) /* The [printers] entry MUST be printable. I'm all for flexibility, but */ /* I can't see why you'd want a non-printable printer service... */ - if (strwicmp(loadparm.ServicePtrs[iService]->szService, PRINTERS_NAME) == 0) { - if (!loadparm.ServicePtrs[iService]->bPrint_ok) { + if (strwicmp(service->szService, PRINTERS_NAME) == 0) { + if (!service->bPrint_ok) { DEBUG(0, ("WARNING: [%s] service MUST be printable!\n", - loadparm.ServicePtrs[iService]->szService)); - loadparm.ServicePtrs[iService]->bPrint_ok = True; + service->szService)); + service->bPrint_ok = true; } /* [printers] service must also be non-browsable. */ - if (loadparm.ServicePtrs[iService]->bBrowseable) - loadparm.ServicePtrs[iService]->bBrowseable = False; + if (service->bBrowseable) + service->bBrowseable = false; } /* If a service is flagged unavailable, log the fact at level 0. */ - if (!loadparm.ServicePtrs[iService]->bAvailable) + if (!service->bAvailable) DEBUG(1, ("NOTE: Service %s is flagged unavailable.\n", - loadparm.ServicePtrs[iService]->szService)); + service->szService)); return bRetval; } @@ -1616,12 +1611,12 @@ static void add_to_file_list(const char *fname, const char *subfname) Check if a config file has changed date. ********************************************************************/ -BOOL lp_file_list_changed(void) +bool lp_file_list_changed(void) { - struct file_lists *f = file_lists; + struct file_lists *f; DEBUG(6, ("lp_file_list_changed()\n")); - while (f) { + for (f = file_lists; f != NULL; f = f->next) { char *n2; time_t mod_time; @@ -1633,15 +1628,13 @@ BOOL lp_file_list_changed(void) mod_time = file_modtime(n2); if (mod_time && ((f->modtime != mod_time) || (f->subfname == NULL) || (strcmp(n2, f->subfname) != 0))) { - DEBUGADD(6, - ("file %s modified: %s\n", n2, + DEBUGADD(6, ("file %s modified: %s\n", n2, ctime(&mod_time))); f->modtime = mod_time; talloc_free(f->subfname); f->subfname = talloc_strdup(f, n2); return true; } - f = f->next; } return false; } @@ -1674,24 +1667,21 @@ static bool handle_include(const char *pszParmValue, char **ptr) static bool handle_copy(const char *pszParmValue, char **ptr) { bool bRetval; - int iTemp; struct service *serviceTemp; string_set(talloc_autofree_context(), ptr, pszParmValue); - serviceTemp = init_service(talloc_autofree_context()); - bRetval = false; DEBUG(3, ("Copying service from service %s\n", pszParmValue)); - if ((iTemp = getservicebyname(pszParmValue, serviceTemp)) >= 0) { - if (iTemp == loadparm.iServiceIndex) { + if ((serviceTemp = getservicebyname(pszParmValue)) != NULL) { + if (serviceTemp == loadparm.currentService) { DEBUG(0, ("Can't copy service %s - unable to copy self!\n", pszParmValue)); } else { - copy_service(loadparm.ServicePtrs[loadparm.iServiceIndex], + copy_service(loadparm.currentService, serviceTemp, - loadparm.ServicePtrs[loadparm.iServiceIndex]->copymap); + loadparm.currentService->copymap); bRetval = true; } } else { @@ -1699,7 +1689,6 @@ static bool handle_copy(const char *pszParmValue, char **ptr) bRetval = false; } - talloc_free(serviceTemp); return bRetval; } @@ -1737,7 +1726,8 @@ void *lp_local_ptr(int snum, void *ptr) /*************************************************************************** Process a parametric option ***************************************************************************/ -static bool lp_do_parameter_parametric(int snum, const char *pszParmName, +static bool lp_do_parameter_parametric(struct service *service, + const char *pszParmName, const char *pszParmValue, int flags) { struct param_opt *paramo, *data; @@ -1749,16 +1739,16 @@ static bool lp_do_parameter_parametric(int snum, const char *pszParmName, } name = strdup(pszParmName); - if (!name) return False; + if (!name) return false; strlower(name); - if (snum < 0) { + if (service == NULL) { data = loadparm.Globals.param_opt; mem_ctx = talloc_autofree_context(); } else { - data = loadparm.ServicePtrs[snum]->param_opt; - mem_ctx = loadparm.ServicePtrs[snum]; + data = service->param_opt; + mem_ctx = service; } /* Traverse destination */ @@ -1768,14 +1758,14 @@ static bool lp_do_parameter_parametric(int snum, const char *pszParmName, if (strcmp(paramo->key, name) == 0) { if ((paramo->flags & FLAG_CMDLINE) && !(flags & FLAG_CMDLINE)) { - return True; + return true; } talloc_free(paramo->value); paramo->value = talloc_strdup(paramo, pszParmValue); paramo->flags = flags; free(name); - return True; + return true; } } @@ -1785,10 +1775,10 @@ static bool lp_do_parameter_parametric(int snum, const char *pszParmName, paramo->key = talloc_strdup(paramo, name); paramo->value = talloc_strdup(paramo, pszParmValue); paramo->flags = flags; - if (snum < 0) { + if (service == NULL) { DLIST_ADD(loadparm.Globals.param_opt, paramo); } else { - DLIST_ADD(loadparm.ServicePtrs[snum]->param_opt, paramo); + DLIST_ADD(service->param_opt, paramo); } free(name); @@ -1796,68 +1786,10 @@ static bool lp_do_parameter_parametric(int snum, const char *pszParmName, return true; } -/*************************************************************************** - Process a parameter for a particular service number. If snum < 0 - then assume we are in the globals. -***************************************************************************/ -bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue) +static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, + const char *pszParmName, const char *pszParmValue) { - int parmnum, i; - void *parm_ptr = NULL; /* where we are going to store the result */ - void *def_ptr = NULL; - TALLOC_CTX *mem_ctx; - - parmnum = map_parameter(pszParmName); - - if (parmnum < 0) { - if (strchr(pszParmName, ':')) { - return lp_do_parameter_parametric(snum, pszParmName, pszParmValue, 0); - } - DEBUG(0, ("Ignoring unknown parameter \"%s\"\n", pszParmName)); - return true; - } - - if (parm_table[parmnum].flags & FLAG_DEPRECATED) { - DEBUG(1, ("WARNING: The \"%s\" option is deprecated\n", - pszParmName)); - } - - /* if the flag has been set on the command line, then don't allow override, - but don't report an error */ - if (parm_table[parmnum].flags & FLAG_CMDLINE) { - return True; - } - - def_ptr = parm_table[parmnum].ptr; - - /* we might point at a service, the default service or a global */ - if (snum < 0) { - parm_ptr = def_ptr; - mem_ctx = talloc_autofree_context(); - } else { - if (parm_table[parmnum].class == P_GLOBAL) { - DEBUG(0, - ("Global parameter %s found in service section!\n", - pszParmName)); - return true; - } - parm_ptr = - ((char *)loadparm.ServicePtrs[snum]) + PTR_DIFF(def_ptr, - &sDefault); - mem_ctx = loadparm.ServicePtrs[snum]; - } - - if (snum >= 0) { - if (!loadparm.ServicePtrs[snum]->copymap) - init_copymap(loadparm.ServicePtrs[snum]); - - /* this handles the aliases - set the copymap for other entries with - the same data pointer */ - for (i = 0; parm_table[i].label; i++) - if (parm_table[i].ptr == parm_table[parmnum].ptr) - loadparm.ServicePtrs[snum]->copymap[i] = false; - } - + int i; /* if it is a special case then go ahead */ if (parm_table[parmnum].special) { parm_table[parmnum].special(pszParmValue, (char **)parm_ptr); @@ -1868,10 +1800,10 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue switch (parm_table[parmnum].type) { case P_BOOL: { - BOOL b; + bool b; if (!set_boolean(pszParmValue, &b)) { DEBUG(0,("lp_do_parameter(%s): value is not boolean!\n", pszParmValue)); - return False; + return false; } *(int *)parm_ptr = b; } @@ -1897,7 +1829,7 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue DEBUG(0,("lp_do_parameter(%s): value is not " "a valid size specifier!\n", pszParmValue)); - return False; + return false; } case P_LIST: @@ -1928,7 +1860,7 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue if (!parm_table[parmnum].enum_list[i].name) { DEBUG(0,("Unknown enumerated value '%s' for '%s'\n", pszParmValue, pszParmName)); - return False; + return false; } break; case P_SEP: @@ -1945,7 +1877,102 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue parm_table[i].flags &= ~FLAG_DEFAULT; } } + return true; +} + + +bool lp_do_global_parameter(const char *pszParmName, const char *pszParmValue) +{ + int parmnum = map_parameter(pszParmName); + void *parm_ptr; + + if (parmnum < 0) { + if (strchr(pszParmName, ':')) { + return lp_do_parameter_parametric(NULL, pszParmName, pszParmValue, 0); + } + DEBUG(0, ("Ignoring unknown parameter \"%s\"\n", pszParmName)); + return true; + } + if (parm_table[parmnum].flags & FLAG_DEPRECATED) { + DEBUG(1, ("WARNING: The \"%s\" option is deprecated\n", + pszParmName)); + } + + /* if the flag has been set on the command line, then don't allow override, + but don't report an error */ + if (parm_table[parmnum].flags & FLAG_CMDLINE) { + return true; + } + + parm_ptr = parm_table[parmnum].ptr; + + return set_variable(talloc_autofree_context(), parmnum, parm_ptr, + pszParmName, pszParmValue); +} + +bool lp_do_service_parameter(struct service *service, + const char *pszParmName, const char *pszParmValue) +{ + void *def_ptr = NULL; + void *parm_ptr; + int i; + int parmnum = map_parameter(pszParmName); + + if (parmnum < 0) { + if (strchr(pszParmName, ':')) { + return lp_do_parameter_parametric(service, pszParmName, pszParmValue, 0); + } + DEBUG(0, ("Ignoring unknown parameter \"%s\"\n", pszParmName)); + return true; + } + + if (parm_table[parmnum].flags & FLAG_DEPRECATED) { + DEBUG(1, ("WARNING: The \"%s\" option is deprecated\n", + pszParmName)); + } + + /* if the flag has been set on the command line, then don't allow override, + but don't report an error */ + if (parm_table[parmnum].flags & FLAG_CMDLINE) { + return true; + } + + def_ptr = parm_table[parmnum].ptr; + + if (parm_table[parmnum].class == P_GLOBAL) { + DEBUG(0, + ("Global parameter %s found in service section!\n", + pszParmName)); + return true; + } + parm_ptr = ((char *)service) + PTR_DIFF(def_ptr, &sDefault); + + if (!service->copymap) + init_copymap(service); + + /* this handles the aliases - set the copymap for other + * entries with the same data pointer */ + for (i = 0; parm_table[i].label; i++) + if (parm_table[i].ptr == parm_table[parmnum].ptr) + service->copymap[i] = false; + + return set_variable(service, parmnum, parm_ptr, pszParmName, + pszParmValue); +} + +/*************************************************************************** + Process a parameter for a particular service number. If snum < 0 + then assume we are in the globals. +***************************************************************************/ +bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue) +{ + if (snum < 0) { + return lp_do_global_parameter(pszParmName, pszParmValue); + } else { + return lp_do_service_parameter(loadparm.ServicePtrs[snum], + pszParmName, pszParmValue); + } return true; } @@ -1953,27 +1980,30 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue Process a parameter. ***************************************************************************/ -static BOOL do_parameter(const char *pszParmName, const char *pszParmValue, void *userdata) +static bool do_parameter(const char *pszParmName, const char *pszParmValue, + void *userdata) { - return lp_do_parameter(loadparm.bInGlobalSection ? -2 : loadparm.iServiceIndex, - pszParmName, pszParmValue); + if (loadparm.bInGlobalSection) + return lp_do_global_parameter(pszParmName, pszParmValue); + else + return lp_do_service_parameter(loadparm.currentService, + pszParmName, pszParmValue); } /* variable argument do parameter */ -static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...) PRINTF_ATTRIBUTE(2, 3); - -static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...) +bool lp_do_global_parameter_var(const char *pszParmName, const char *fmt, ...) PRINTF_ATTRIBUTE(2, 3); +bool lp_do_global_parameter_var(const char *pszParmName, const char *fmt, ...) { char *s; - BOOL ret; + bool ret; va_list ap; va_start(ap, fmt); s = talloc_vasprintf(NULL, fmt, ap); va_end(ap); - ret = do_parameter(pszParmName, s, NULL); + ret = lp_do_global_parameter(pszParmName, s); talloc_free(s); return ret; } @@ -1984,7 +2014,7 @@ static BOOL do_parameter_var(const char *pszParmName, const char *fmt, ...) parsing code. It sets the parameter then marks the parameter as unable to be modified by smb.conf processing */ -BOOL lp_set_cmdline(const char *pszParmName, const char *pszParmValue) +bool lp_set_cmdline(const char *pszParmName, const char *pszParmValue) { int parmnum = map_parameter(pszParmName); int i; @@ -1994,19 +2024,19 @@ BOOL lp_set_cmdline(const char *pszParmName, const char *pszParmValue) if (parmnum < 0 && strchr(pszParmName, ':')) { /* set a parametric option */ - return lp_do_parameter_parametric(-1, pszParmName, pszParmValue, FLAG_CMDLINE); + return lp_do_parameter_parametric(NULL, pszParmName, pszParmValue, FLAG_CMDLINE); } if (parmnum < 0) { DEBUG(0,("Unknown option '%s'\n", pszParmName)); - return False; + return false; } /* reset the CMDLINE flag in case this has been called before */ parm_table[parmnum].flags &= ~FLAG_CMDLINE; if (!lp_do_parameter(-2, pszParmName, pszParmValue)) { - return False; + return false; } parm_table[parmnum].flags |= FLAG_CMDLINE; @@ -2019,26 +2049,26 @@ BOOL lp_set_cmdline(const char *pszParmName, const char *pszParmValue) parm_table[i].flags |= FLAG_CMDLINE; } - return True; + return true; } /* set a option from the commandline in 'a=b' format. Use to support --option */ -BOOL lp_set_option(const char *option) +bool lp_set_option(const char *option) { char *p, *s; - BOOL ret; + bool ret; s = strdup(option); if (!s) { - return False; + return false; } p = strchr(s, '='); if (!p) { free(s); - return False; + return false; } *p = 0; @@ -2071,7 +2101,7 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) break; case P_BOOL: - fprintf(f, "%s", BOOLSTR((BOOL)*(int *)ptr)); + fprintf(f, "%s", BOOLSTR((bool)*(int *)ptr)); break; case P_INTEGER: @@ -2108,7 +2138,7 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) Check if two parameters are equal. ***************************************************************************/ -static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) +static bool equal_parameter(parm_type type, void *ptr1, void *ptr2) { switch (type) { case P_BOOL: @@ -2146,12 +2176,12 @@ static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) Returns True on success, False on failure. ***************************************************************************/ -static BOOL do_section(const char *pszSectionName, void *userdata) +static bool do_section(const char *pszSectionName, void *userdata) { - BOOL bRetval; - BOOL isglobal = ((strwicmp(pszSectionName, GLOBAL_NAME) == 0) || + bool bRetval; + bool isglobal = ((strwicmp(pszSectionName, GLOBAL_NAME) == 0) || (strwicmp(pszSectionName, GLOBAL_NAME2) == 0)); - bRetval = False; + bRetval = false; /* if we've just struck a global section, note the fact. */ loadparm.bInGlobalSection = isglobal; @@ -2163,10 +2193,10 @@ static BOOL do_section(const char *pszSectionName, void *userdata) } /* if we have a current service, tidy it up before moving on */ - bRetval = True; + bRetval = true; - if (loadparm.iServiceIndex >= 0) - bRetval = service_ok(loadparm.iServiceIndex); + if (loadparm.currentService != NULL) + bRetval = service_ok(loadparm.currentService); /* if all is still well, move to the next record in the services array */ if (bRetval) { @@ -2174,8 +2204,8 @@ static BOOL do_section(const char *pszSectionName, void *userdata) /* issued by the post-processing of a previous section. */ DEBUG(2, ("Processing section \"[%s]\"\n", pszSectionName)); - if ((loadparm.iServiceIndex = add_a_service(&sDefault, pszSectionName)) - < 0) { + if ((loadparm.currentService = add_a_service(&sDefault, pszSectionName)) + == NULL) { DEBUG(0, ("Failed to add a new service\n")); return false; } @@ -2189,10 +2219,10 @@ static BOOL do_section(const char *pszSectionName, void *userdata) Determine if a partcular base parameter is currentl set to the default value. ***************************************************************************/ -static BOOL is_default(int i) +static bool is_default(int i) { if (!defaults_saved) - return False; + return false; switch (parm_table[i].type) { case P_LIST: return str_list_equal((const char **)parm_table[i].def.lvalue, @@ -2213,14 +2243,14 @@ static BOOL is_default(int i) case P_SEP: break; } - return False; + return false; } /*************************************************************************** Display the contents of the global structure. ***************************************************************************/ -static void dump_globals(FILE *f, BOOL show_defaults) +static void dump_globals(FILE *f, bool show_defaults) { int i; struct param_opt *data; @@ -2297,7 +2327,7 @@ bool lp_dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal) parm = lp_parm_struct(parm_name); if (!parm) { - return False; + return false; } if (isGlobal) @@ -2309,7 +2339,7 @@ bool lp_dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal) print_parameter(parm, ptr, f); fprintf(f, "\n"); - return True; + return true; } /*************************************************************************** @@ -2393,7 +2423,7 @@ static void lp_add_auto_services(const char *str) Have we loaded a services file yet? ***************************************************************************/ -BOOL lp_loaded(void) +bool lp_loaded(void) { return bLoaded; } @@ -2402,7 +2432,7 @@ BOOL lp_loaded(void) Unload unused services. ***************************************************************************/ -void lp_killunused(struct smbsrv_connection *smb, BOOL (*snumused) (struct smbsrv_connection *, int)) +void lp_killunused(struct smbsrv_connection *smb, bool (*snumused) (struct smbsrv_connection *, int)) { int i; for (i = 0; i < loadparm.iNumServices; i++) { @@ -2461,14 +2491,14 @@ bool lp_load(void) add_to_file_list(lp_configfile(), n2); /* We get sections first, so have to start 'behind' to make up */ - loadparm.iServiceIndex = -1; + loadparm.currentService = NULL; bRetval = pm_process(n2, do_section, do_parameter, NULL); /* finish up the last section */ DEBUG(4, ("pm_process() returned %s\n", BOOLSTR(bRetval))); if (bRetval) - if (loadparm.iServiceIndex >= 0) - bRetval = service_ok(loadparm.iServiceIndex); + if (loadparm.currentService != NULL) + bRetval = service_ok(loadparm.currentService); lp_add_auto_services(lp_auto_services()); @@ -2508,12 +2538,12 @@ int lp_numservices(void) Display the contents of the services array in human-readable form. ***************************************************************************/ -void lp_dump(FILE *f, BOOL show_defaults, int maxtoprint) +void lp_dump(FILE *f, bool show_defaults, int maxtoprint) { int iService; if (show_defaults) - defaults_saved = False; + defaults_saved = false; dump_globals(f, show_defaults); @@ -2616,21 +2646,6 @@ void lp_remove_service(int snum) loadparm.ServicePtrs[snum] = NULL; } -/******************************************************************* - Copy a service. -********************************************************************/ - -void lp_copy_service(int snum, const char *new_name) -{ - const char *oldname = lp_servicename(snum); - do_section(new_name, NULL); - if (snum >= 0) { - snum = lp_servicenumber(new_name); - if (snum >= 0) - lp_do_parameter(snum, "copy", oldname); - } -} - const char *lp_printername(int snum) { const char *ret = _lp_printername(snum); -- cgit From 98b57d5eb61094a9c88e2f7d90d3e21b7e74e9d8 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 16:46:30 +0000 Subject: r25035: Fix some more warnings, use service pointer rather than service number in more places. (This used to be commit df9cebcb97e20564359097148665bd519f31bc6f) --- source4/param/loadparm.c | 137 ++++++++++++++++++++++++----------------------- 1 file changed, 69 insertions(+), 68 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c7c7656863..61b1aafbf4 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -819,19 +819,15 @@ static const char *lp_string(const char *s) int fn_name(void) {return(*(int *)(ptr));} #define FN_LOCAL_STRING(fn_name,val) \ - const char *fn_name(int i) {return(lp_string((LP_SNUM_OK(i) && loadparm.ServicePtrs[(i)]->val) ? loadparm.ServicePtrs[(i)]->val : sDefault.val));} + const char *fn_name(struct service *service) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault.val)));} #define FN_LOCAL_CONST_STRING(fn_name,val) \ - const char *fn_name(int i) {return (const char *)((LP_SNUM_OK(i) && loadparm.ServicePtrs[(i)]->val) ? loadparm.ServicePtrs[(i)]->val : sDefault.val);} + const char *fn_name(struct service *service) {return (const char *)(service != NULL && service->val != NULL) ? service->val : sDefault.val;} #define FN_LOCAL_LIST(fn_name,val) \ - const char **fn_name(int i) {return(const char **)(LP_SNUM_OK(i)? loadparm.ServicePtrs[(i)]->val : sDefault.val);} + const char **fn_name(struct service *service) {return(const char **)(service != NULL && service->val != NULL? service->val : sDefault.val);} #define FN_LOCAL_BOOL(fn_name,val) \ - bool fn_name(int i) {return(LP_SNUM_OK(i)? loadparm.ServicePtrs[(i)]->val : sDefault.val);} -#if 0 /* unused */ -#define FN_LOCAL_CHAR(fn_name,val) \ - char fn_name(int i) {return(LP_SNUM_OK(i)? ServicePtrs[(i)]->val : sDefault.val);} -#endif + bool fn_name(struct service *service) {return((service != NULL)? service->val : sDefault.val);} #define FN_LOCAL_INTEGER(fn_name,val) \ - int fn_name(int i) {return(LP_SNUM_OK(i)? loadparm.ServicePtrs[(i)]->val : sDefault.val);} + int fn_name(struct service *service) {return((service != NULL)? service->val : sDefault.val);} _PUBLIC_ FN_GLOBAL_INTEGER(lp_server_role, &loadparm.Globals.server_role) _PUBLIC_ FN_GLOBAL_LIST(lp_smb_ports, &loadparm.Globals.smb_ports) @@ -968,16 +964,12 @@ static void init_copymap(struct service * pservice); /* This is a helper function for parametrical options support. */ /* It returns a pointer to parametrical option value if it exists or NULL otherwise */ /* Actual parametrical functions are quite simple */ -const char *lp_get_parametric(int lookup_service, const char *type, const char *option) +const char *lp_get_parametric(struct service *service, const char *type, const char *option) { char *vfskey; struct param_opt *data; - if (lookup_service >= 0 && !LP_SNUM_OK(lookup_service)) - return NULL; - - data = (lookup_service < 0) ? - loadparm.Globals.param_opt : loadparm.ServicePtrs[lookup_service]->param_opt; + data = (service == NULL ? loadparm.Globals.param_opt : service->param_opt); asprintf(&vfskey, "%s:%s", type, option); strlower(vfskey); @@ -990,7 +982,7 @@ const char *lp_get_parametric(int lookup_service, const char *type, const char * data = data->next; } - if (lookup_service >= 0) { + if (service != NULL) { /* Try to fetch the same option but from globals */ /* but only if we are not already working with Globals */ for (data = loadparm.Globals.param_opt; data; @@ -1075,9 +1067,10 @@ static bool lp_bool(const char *s) /* Parametric option has following syntax: 'Type: option = value' */ /* Returned value is allocated in 'lp_talloc' context */ -const char *lp_parm_string(int lookup_service, const char *type, const char *option) +const char *lp_parm_string(struct service *service, const char *type, + const char *option) { - const char *value = lp_get_parametric(lookup_service, type, option); + const char *value = lp_get_parametric(service, type, option); if (value) return lp_string(value); @@ -1089,10 +1082,10 @@ const char *lp_parm_string(int lookup_service, const char *type, const char *opt /* Parametric option has following syntax: 'Type: option = value' */ /* Returned value is allocated in 'lp_talloc' context */ -const char **lp_parm_string_list(int lookup_service, const char *type, const char *option, - const char *separator) +const char **lp_parm_string_list(struct service *service, const char *type, + const char *option, const char *separator) { - const char *value = lp_get_parametric(lookup_service, type, option); + const char *value = lp_get_parametric(service, type, option); if (value) return str_list_make(talloc_autofree_context(), value, separator); @@ -1103,9 +1096,10 @@ const char **lp_parm_string_list(int lookup_service, const char *type, const cha /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -int lp_parm_int(int lookup_service, const char *type, const char *option, int default_v) +int lp_parm_int(struct service *service, const char *type, const char *option, + int default_v) { - const char *value = lp_get_parametric(lookup_service, type, option); + const char *value = lp_get_parametric(service, type, option); if (value) return lp_int(value); @@ -1118,11 +1112,12 @@ int lp_parm_int(int lookup_service, const char *type, const char *option, int de * Parametric option has following syntax: 'Type: option = value'. */ -int lp_parm_bytes(int lookup_service, const char *type, const char *option, int default_v) +int lp_parm_bytes(struct service *service, const char *type, + const char *option, int default_v) { uint64_t bval; - const char *value = lp_get_parametric(lookup_service, type, option); + const char *value = lp_get_parametric(service, type, option); if (value && conv_str_size(value, &bval)) { if (bval <= INT_MAX) { @@ -1136,9 +1131,10 @@ int lp_parm_bytes(int lookup_service, const char *type, const char *option, int /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -unsigned long lp_parm_ulong(int lookup_service, const char *type, const char *option, unsigned long default_v) +unsigned long lp_parm_ulong(struct service *service, const char *type, + const char *option, unsigned long default_v) { - const char *value = lp_get_parametric(lookup_service, type, option); + const char *value = lp_get_parametric(service, type, option); if (value) return lp_ulong(value); @@ -1147,9 +1143,10 @@ unsigned long lp_parm_ulong(int lookup_service, const char *type, const char *op } -double lp_parm_double(int lookup_service, const char *type, const char *option, double default_v) +double lp_parm_double(struct service *service, const char *type, + const char *option, double default_v) { - const char *value = lp_get_parametric(lookup_service, type, option); + const char *value = lp_get_parametric(service, type, option); if (value) return lp_double(value); @@ -1160,10 +1157,10 @@ double lp_parm_double(int lookup_service, const char *type, const char *option, /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -bool lp_parm_bool(int lookup_service, const char *type, const char *option, - bool default_v) +bool lp_parm_bool(struct service *service, const char *type, + const char *option, bool default_v) { - const char *value = lp_get_parametric(lookup_service, type, option); + const char *value = lp_get_parametric(service, type, option); if (value) return lp_bool(value); @@ -1261,22 +1258,22 @@ static struct service *add_a_service(const struct service *pservice, const char from service ifrom. ***************************************************************************/ -bool lp_add_home(const char *pszHomename, int iDefaultService, +bool lp_add_home(const char *pszHomename, struct service *default_service, const char *user, const char *pszHomedir) { struct service *service; pstring newHomedir; - service = add_a_service(loadparm.ServicePtrs[iDefaultService], pszHomename); + service = add_a_service(default_service, pszHomename); if (service == NULL) return false; - if (!(*(loadparm.ServicePtrs[iDefaultService]->szPath)) - || strequal(loadparm.ServicePtrs[iDefaultService]->szPath, lp_pathname(-1))) { + if (!(*(default_service->szPath)) + || strequal(default_service->szPath, sDefault.szPath)) { pstrcpy(newHomedir, pszHomedir); } else { - pstrcpy(newHomedir, lp_pathname(iDefaultService)); + pstrcpy(newHomedir, lp_pathname(default_service)); string_sub(newHomedir,"%H", pszHomedir, sizeof(newHomedir)); } @@ -1285,8 +1282,8 @@ bool lp_add_home(const char *pszHomename, int iDefaultService, if (!(*(service->comment))) { service->comment = talloc_asprintf(service, "Home directory of %s", user); } - service->bAvailable = sDefault.bAvailable; - service->bBrowseable = sDefault.bBrowseable; + service->bAvailable = default_service->bAvailable; + service->bBrowseable = default_service->bBrowseable; DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", pszHomename, user, newHomedir)); @@ -1298,9 +1295,10 @@ bool lp_add_home(const char *pszHomename, int iDefaultService, Add a new service, based on an old one. ***************************************************************************/ -struct service *lp_add_service(const char *pszService, int iDefaultService) +struct service *lp_add_service(const char *pszService, + struct service *default_service) { - return add_a_service(loadparm.ServicePtrs[iDefaultService], pszService); + return add_a_service(default_service, pszService); } /*************************************************************************** @@ -1338,12 +1336,11 @@ static bool lp_add_hidden(const char *name, const char *fstype) Add a new printer service, with defaults coming from service iFrom. ***************************************************************************/ -bool lp_add_printer(const char *pszPrintername, int iDefaultService) +bool lp_add_printer(const char *pszPrintername, struct service *default_service) { const char *comment = "From Printcap"; struct service *service; - service = add_a_service(loadparm.ServicePtrs[iDefaultService], - pszPrintername); + service = add_a_service(default_service, pszPrintername); if (service == NULL) return false; @@ -1406,12 +1403,12 @@ struct parm_struct *lp_parm_struct(const char *name) /* return the parameter pointer for a parameter */ -void *lp_parm_ptr(int snum, struct parm_struct *parm) +void *lp_parm_ptr(struct service *service, struct parm_struct *parm) { - if (snum == -1) { + if (service == NULL) return parm->ptr; - } - return ((char *)loadparm.ServicePtrs[snum]) + PTR_DIFF(parm->ptr, &sDefault); + + return ((char *)service) + PTR_DIFF(parm->ptr, &sDefault); } /*************************************************************************** @@ -2516,15 +2513,6 @@ bool lp_load(void) return bRetval; } -/*************************************************************************** - Reset the max number of services. -***************************************************************************/ - -void lp_resetnumservices(void) -{ - loadparm.iNumServices = 0; -} - /*************************************************************************** Return the max number of services. ***************************************************************************/ @@ -2550,22 +2538,35 @@ void lp_dump(FILE *f, bool show_defaults, int maxtoprint) dump_a_service(&sDefault, f); for (iService = 0; iService < maxtoprint; iService++) - lp_dump_one(f, show_defaults, iService); + lp_dump_one(f, show_defaults, loadparm.ServicePtrs[iService]); } /*************************************************************************** Display the contents of one service in human-readable form. ***************************************************************************/ -void lp_dump_one(FILE *f, bool show_defaults, int snum) +void lp_dump_one(FILE *f, bool show_defaults, struct service *service) { - if (VALID(snum)) { - if (loadparm.ServicePtrs[snum]->szService[0] == '\0') + if (service != NULL) { + if (service->szService[0] == '\0') return; - dump_a_service(loadparm.ServicePtrs[snum], f); + dump_a_service(service, f); } } +struct service *lp_servicebynum(int snum) +{ + return loadparm.ServicePtrs[snum]; +} + +struct service *lp_service(const char *service_name) +{ + int snum = lp_servicenumber(service_name); + if (snum < 0) + return NULL; + return loadparm.ServicePtrs[snum]; +} + /*************************************************************************** Return the number of the service with the given name, or -1 if it doesn't exist. Note that this is a DIFFERENT ANIMAL from the internal function @@ -2619,11 +2620,11 @@ int lp_find_valid_service(const char *pszServiceName) /******************************************************************* A useful volume label function. ********************************************************************/ -const char *volume_label(int snum) +const char *volume_label(struct service *service) { - const char *ret = lp_volume(snum); + const char *ret = lp_volume(service); if (!*ret) - return lp_servicename(snum); + return lp_servicename(service); return ret; } @@ -2646,11 +2647,11 @@ void lp_remove_service(int snum) loadparm.ServicePtrs[snum] = NULL; } -const char *lp_printername(int snum) +const char *lp_printername(struct service *service) { - const char *ret = _lp_printername(snum); + const char *ret = _lp_printername(service); if (ret == NULL || (ret != NULL && *ret == '\0')) - ret = lp_const_servicename(snum); + ret = lp_const_servicename(service); return ret; } -- cgit From 2461a4f14b21ac741c6da62b68ab929336f0184d Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 17:25:24 +0000 Subject: r25037: Start passing the context around. (This used to be commit 88c72ac75fed673f7bfb65bf633f352f231c90a3) --- source4/param/loadparm.c | 356 ++++++++++++++++++++++++----------------------- 1 file changed, 182 insertions(+), 174 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 61b1aafbf4..18a1e22d6c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -578,165 +578,6 @@ struct parm_struct *lp_parm_table(void) return parm_table; } -/*************************************************************************** - Initialise the global parameter structure. -***************************************************************************/ -static void init_globals(void) -{ - int i; - char *myname; - - DEBUG(3, ("Initialising global parameters\n")); - - for (i = 0; parm_table[i].label; i++) { - if ((parm_table[i].type == P_STRING || - parm_table[i].type == P_USTRING) && - parm_table[i].ptr && - !(parm_table[i].flags & FLAG_CMDLINE)) { - string_set(talloc_autofree_context(), - (char **)parm_table[i].ptr, ""); - } - } - - lp_do_global_parameter("config file", dyn_CONFIGFILE); - - lp_do_global_parameter("share backend", "classic"); - - lp_do_global_parameter("server role", "standalone"); - - /* options that can be set on the command line must be initialised via - the slower lp_do_global_parameter() to ensure that FLAG_CMDLINE is obeyed */ -#ifdef TCP_NODELAY - lp_do_global_parameter("socket options", "TCP_NODELAY"); -#endif - lp_do_global_parameter("workgroup", DEFAULT_WORKGROUP); - myname = get_myname(); - lp_do_global_parameter("netbios name", myname); - SAFE_FREE(myname); - lp_do_global_parameter("name resolve order", "lmhosts wins host bcast"); - - lp_do_global_parameter("fstype", FSTYPE_STRING); - lp_do_global_parameter("ntvfs handler", "unixuid default"); - lp_do_global_parameter("max connections", "-1"); - - lp_do_global_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo"); - lp_do_global_parameter("server services", "smb rpc nbt wrepl ldap cldap web kdc drepl winbind"); - lp_do_global_parameter("ntptr providor", "simple_ldb"); - lp_do_global_parameter("auth methods:domain controller", "anonymous sam_ignoredomain"); - lp_do_global_parameter("auth methods:member server", "anonymous sam winbind"); - lp_do_global_parameter("auth methods:standalone", "anonymous sam_ignoredomain"); - lp_do_global_parameter("private dir", dyn_PRIVATE_DIR); - lp_do_global_parameter("sam database", "sam.ldb"); - lp_do_global_parameter("secrets database", "secrets.ldb"); - lp_do_global_parameter("spoolss database", "spoolss.ldb"); - lp_do_global_parameter("wins config database", "wins_config.ldb"); - lp_do_global_parameter("wins database", "wins.ldb"); - lp_do_global_parameter("registry:HKEY_LOCAL_MACHINE", "hklm.ldb"); - - /* This hive should be dynamically generated by Samba using - data from the sam, but for the moment leave it in a tdb to - keep regedt32 from popping up an annoying dialog. */ - lp_do_global_parameter("registry:HKEY_USERS", "hku.ldb"); - - /* using UTF8 by default allows us to support all chars */ - lp_do_global_parameter("unix charset", "UTF8"); - - /* Use codepage 850 as a default for the dos character set */ - lp_do_global_parameter("dos charset", "CP850"); - - /* - * Allow the default PASSWD_CHAT to be overridden in local.h. - */ - lp_do_global_parameter("passwd chat", DEFAULT_PASSWD_CHAT); - - lp_do_global_parameter("pid directory", dyn_PIDDIR); - lp_do_global_parameter("lock dir", dyn_LOCKDIR); - lp_do_global_parameter("modules dir", dyn_MODULESDIR); - lp_do_global_parameter("ncalrpc dir", dyn_NCALRPCDIR); - - lp_do_global_parameter("socket address", "0.0.0.0"); - lp_do_global_parameter_var("server string", - "Samba %s", SAMBA_VERSION_STRING); - - lp_do_global_parameter_var("announce version", "%d.%d", - DEFAULT_MAJOR_VERSION, - DEFAULT_MINOR_VERSION); - - lp_do_global_parameter("password server", "*"); - - lp_do_global_parameter("max mux", "50"); - lp_do_global_parameter("max xmit", "12288"); - lp_do_global_parameter("password level", "0"); - lp_do_global_parameter("LargeReadwrite", "True"); - lp_do_global_parameter("server min protocol", "CORE"); - lp_do_global_parameter("server max protocol", "NT1"); - lp_do_global_parameter("client min protocol", "CORE"); - lp_do_global_parameter("client max protocol", "NT1"); - lp_do_global_parameter("security", "USER"); - lp_do_global_parameter("paranoid server security", "True"); - lp_do_global_parameter("EncryptPasswords", "True"); - lp_do_global_parameter("ReadRaw", "True"); - lp_do_global_parameter("WriteRaw", "True"); - lp_do_global_parameter("NullPasswords", "False"); - lp_do_global_parameter("ObeyPamRestrictions", "False"); - lp_do_global_parameter("announce as", "NT SERVER"); - - lp_do_global_parameter("TimeServer", "False"); - lp_do_global_parameter("BindInterfacesOnly", "False"); - lp_do_global_parameter("Unicode", "True"); - lp_do_global_parameter("ClientLanManAuth", "True"); - lp_do_global_parameter("LanmanAuth", "True"); - lp_do_global_parameter("NTLMAuth", "True"); - lp_do_global_parameter("client use spnego principal", "False"); - - lp_do_global_parameter("UnixExtensions", "False"); - - lp_do_global_parameter("PreferredMaster", "Auto"); - lp_do_global_parameter("LocalMaster", "True"); - - lp_do_global_parameter("wins support", "False"); - lp_do_global_parameter("dns proxy", "True"); - - lp_do_global_parameter("winbind separator", "\\"); - lp_do_global_parameter("winbind sealed pipes", "True"); - lp_do_global_parameter("winbindd socket directory", dyn_WINBINDD_SOCKET_DIR); - lp_do_global_parameter("template shell", "/bin/false"); - lp_do_global_parameter("template homedir", "/home/%WORKGROUP%/%ACCOUNTNAME%"); - - lp_do_global_parameter("client signing", "Yes"); - lp_do_global_parameter("server signing", "auto"); - - lp_do_global_parameter("use spnego", "True"); - - lp_do_global_parameter("smb ports", "445 139"); - lp_do_global_parameter("nbt port", "137"); - lp_do_global_parameter("dgram port", "138"); - lp_do_global_parameter("cldap port", "389"); - lp_do_global_parameter("krb5 port", "88"); - lp_do_global_parameter("kpasswd port", "464"); - lp_do_global_parameter("web port", "901"); - lp_do_global_parameter("web application directory", dyn_WEBAPPSDIR); - lp_do_global_parameter("jsonrpc services directory", dyn_SERVICESDIR); - - lp_do_global_parameter("nt status support", "True"); - - lp_do_global_parameter("max wins ttl", "518400"); /* 6 days */ - lp_do_global_parameter("min wins ttl", "10"); - - lp_do_global_parameter("tls enabled", "True"); - lp_do_global_parameter("tls keyfile", "tls/key.pem"); - lp_do_global_parameter("tls certfile", "tls/cert.pem"); - lp_do_global_parameter("tls cafile", "tls/ca.pem"); - lp_do_global_parameter_var("js include", "%s", dyn_JSDIR); - lp_do_global_parameter_var("setup directory", "%s", dyn_SETUPDIR); - - for (i = 0; parm_table[i].label; i++) { - if (!(parm_table[i].flags & FLAG_CMDLINE)) { - parm_table[i].flags |= FLAG_DEFAULT; - } - } -} - static TALLOC_CTX *lp_talloc; /******************************************************************* a @@ -1878,7 +1719,8 @@ static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, } -bool lp_do_global_parameter(const char *pszParmName, const char *pszParmValue) +bool lp_do_global_parameter(struct loadparm_context *lp_ctx, + const char *pszParmName, const char *pszParmValue) { int parmnum = map_parameter(pszParmName); void *parm_ptr; @@ -1962,12 +1804,14 @@ bool lp_do_service_parameter(struct service *service, Process a parameter for a particular service number. If snum < 0 then assume we are in the globals. ***************************************************************************/ -bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue) +bool lp_do_parameter(struct service *service, const char *pszParmName, + const char *pszParmValue) { - if (snum < 0) { - return lp_do_global_parameter(pszParmName, pszParmValue); + if (service == NULL) { + return lp_do_global_parameter(&loadparm, pszParmName, + pszParmValue); } else { - return lp_do_service_parameter(loadparm.ServicePtrs[snum], + return lp_do_service_parameter(service, pszParmName, pszParmValue); } return true; @@ -1981,7 +1825,8 @@ static bool do_parameter(const char *pszParmName, const char *pszParmValue, void *userdata) { if (loadparm.bInGlobalSection) - return lp_do_global_parameter(pszParmName, pszParmValue); + return lp_do_global_parameter(&loadparm, pszParmName, + pszParmValue); else return lp_do_service_parameter(loadparm.currentService, pszParmName, pszParmValue); @@ -1990,8 +1835,9 @@ static bool do_parameter(const char *pszParmName, const char *pszParmValue, /* variable argument do parameter */ -bool lp_do_global_parameter_var(const char *pszParmName, const char *fmt, ...) PRINTF_ATTRIBUTE(2, 3); -bool lp_do_global_parameter_var(const char *pszParmName, const char *fmt, ...) +bool lp_do_global_parameter_var(struct loadparm_context *lp_ctx, const char *pszParmName, const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4); +bool lp_do_global_parameter_var(struct loadparm_context *lp_ctx, + const char *pszParmName, const char *fmt, ...) { char *s; bool ret; @@ -2000,7 +1846,7 @@ bool lp_do_global_parameter_var(const char *pszParmName, const char *fmt, ...) va_start(ap, fmt); s = talloc_vasprintf(NULL, fmt, ap); va_end(ap); - ret = lp_do_global_parameter(pszParmName, s); + ret = lp_do_global_parameter(lp_ctx, pszParmName, s); talloc_free(s); return ret; } @@ -2032,7 +1878,7 @@ bool lp_set_cmdline(const char *pszParmName, const char *pszParmValue) /* reset the CMDLINE flag in case this has been called before */ parm_table[parmnum].flags &= ~FLAG_CMDLINE; - if (!lp_do_parameter(-2, pszParmName, pszParmValue)) { + if (!lp_do_parameter(NULL, pszParmName, pszParmValue)) { return false; } @@ -2455,6 +2301,168 @@ void lp_killservice(int iServiceIn) } } +/*************************************************************************** + Initialise the global parameter structure. +***************************************************************************/ +bool loadparm_init(struct loadparm_context *lp_ctx) +{ + int i; + char *myname; + + DEBUG(3, ("Initialising global parameters\n")); + + for (i = 0; parm_table[i].label; i++) { + if ((parm_table[i].type == P_STRING || + parm_table[i].type == P_USTRING) && + parm_table[i].ptr && + !(parm_table[i].flags & FLAG_CMDLINE)) { + string_set(talloc_autofree_context(), + (char **)parm_table[i].ptr, ""); + } + } + + lp_do_global_parameter(lp_ctx, "config file", dyn_CONFIGFILE); + + lp_do_global_parameter(lp_ctx, "share backend", "classic"); + + lp_do_global_parameter(lp_ctx, "server role", "standalone"); + + /* options that can be set on the command line must be initialised via + the slower lp_do_global_parameter() to ensure that FLAG_CMDLINE is obeyed */ +#ifdef TCP_NODELAY + lp_do_global_parameter(lp_ctx, "socket options", "TCP_NODELAY"); +#endif + lp_do_global_parameter(lp_ctx, "workgroup", DEFAULT_WORKGROUP); + myname = get_myname(); + lp_do_global_parameter(lp_ctx, "netbios name", myname); + SAFE_FREE(myname); + lp_do_global_parameter(lp_ctx, "name resolve order", "lmhosts wins host bcast"); + + lp_do_global_parameter(lp_ctx, "fstype", FSTYPE_STRING); + lp_do_global_parameter(lp_ctx, "ntvfs handler", "unixuid default"); + lp_do_global_parameter(lp_ctx, "max connections", "-1"); + + lp_do_global_parameter(lp_ctx, "dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo"); + lp_do_global_parameter(lp_ctx, "server services", "smb rpc nbt wrepl ldap cldap web kdc drepl winbind"); + lp_do_global_parameter(lp_ctx, "ntptr providor", "simple_ldb"); + lp_do_global_parameter(lp_ctx, "auth methods:domain controller", "anonymous sam_ignoredomain"); + lp_do_global_parameter(lp_ctx, "auth methods:member server", "anonymous sam winbind"); + lp_do_global_parameter(lp_ctx, "auth methods:standalone", "anonymous sam_ignoredomain"); + lp_do_global_parameter(lp_ctx, "private dir", dyn_PRIVATE_DIR); + lp_do_global_parameter(lp_ctx, "sam database", "sam.ldb"); + lp_do_global_parameter(lp_ctx, "secrets database", "secrets.ldb"); + lp_do_global_parameter(lp_ctx, "spoolss database", "spoolss.ldb"); + lp_do_global_parameter(lp_ctx, "wins config database", "wins_config.ldb"); + lp_do_global_parameter(lp_ctx, "wins database", "wins.ldb"); + lp_do_global_parameter(lp_ctx, "registry:HKEY_LOCAL_MACHINE", "hklm.ldb"); + + /* This hive should be dynamically generated by Samba using + data from the sam, but for the moment leave it in a tdb to + keep regedt32 from popping up an annoying dialog. */ + lp_do_global_parameter(lp_ctx, "registry:HKEY_USERS", "hku.ldb"); + + /* using UTF8 by default allows us to support all chars */ + lp_do_global_parameter(lp_ctx, "unix charset", "UTF8"); + + /* Use codepage 850 as a default for the dos character set */ + lp_do_global_parameter(lp_ctx, "dos charset", "CP850"); + + /* + * Allow the default PASSWD_CHAT to be overridden in local.h. + */ + lp_do_global_parameter(lp_ctx, "passwd chat", DEFAULT_PASSWD_CHAT); + + lp_do_global_parameter(lp_ctx, "pid directory", dyn_PIDDIR); + lp_do_global_parameter(lp_ctx, "lock dir", dyn_LOCKDIR); + lp_do_global_parameter(lp_ctx, "modules dir", dyn_MODULESDIR); + lp_do_global_parameter(lp_ctx, "ncalrpc dir", dyn_NCALRPCDIR); + + lp_do_global_parameter(lp_ctx, "socket address", "0.0.0.0"); + lp_do_global_parameter_var(lp_ctx, "server string", + "Samba %s", SAMBA_VERSION_STRING); + + lp_do_global_parameter_var(lp_ctx, "announce version", "%d.%d", + DEFAULT_MAJOR_VERSION, + DEFAULT_MINOR_VERSION); + + lp_do_global_parameter(lp_ctx, "password server", "*"); + + lp_do_global_parameter(lp_ctx, "max mux", "50"); + lp_do_global_parameter(lp_ctx, "max xmit", "12288"); + lp_do_global_parameter(lp_ctx, "password level", "0"); + lp_do_global_parameter(lp_ctx, "LargeReadwrite", "True"); + lp_do_global_parameter(lp_ctx, "server min protocol", "CORE"); + lp_do_global_parameter(lp_ctx, "server max protocol", "NT1"); + lp_do_global_parameter(lp_ctx, "client min protocol", "CORE"); + lp_do_global_parameter(lp_ctx, "client max protocol", "NT1"); + lp_do_global_parameter(lp_ctx, "security", "USER"); + lp_do_global_parameter(lp_ctx, "paranoid server security", "True"); + lp_do_global_parameter(lp_ctx, "EncryptPasswords", "True"); + lp_do_global_parameter(lp_ctx, "ReadRaw", "True"); + lp_do_global_parameter(lp_ctx, "WriteRaw", "True"); + lp_do_global_parameter(lp_ctx, "NullPasswords", "False"); + lp_do_global_parameter(lp_ctx, "ObeyPamRestrictions", "False"); + lp_do_global_parameter(lp_ctx, "announce as", "NT SERVER"); + + lp_do_global_parameter(lp_ctx, "TimeServer", "False"); + lp_do_global_parameter(lp_ctx, "BindInterfacesOnly", "False"); + lp_do_global_parameter(lp_ctx, "Unicode", "True"); + lp_do_global_parameter(lp_ctx, "ClientLanManAuth", "True"); + lp_do_global_parameter(lp_ctx, "LanmanAuth", "True"); + lp_do_global_parameter(lp_ctx, "NTLMAuth", "True"); + lp_do_global_parameter(lp_ctx, "client use spnego principal", "False"); + + lp_do_global_parameter(lp_ctx, "UnixExtensions", "False"); + + lp_do_global_parameter(lp_ctx, "PreferredMaster", "Auto"); + lp_do_global_parameter(lp_ctx, "LocalMaster", "True"); + + lp_do_global_parameter(lp_ctx, "wins support", "False"); + lp_do_global_parameter(lp_ctx, "dns proxy", "True"); + + lp_do_global_parameter(lp_ctx, "winbind separator", "\\"); + lp_do_global_parameter(lp_ctx, "winbind sealed pipes", "True"); + lp_do_global_parameter(lp_ctx, "winbindd socket directory", dyn_WINBINDD_SOCKET_DIR); + lp_do_global_parameter(lp_ctx, "template shell", "/bin/false"); + lp_do_global_parameter(lp_ctx, "template homedir", "/home/%WORKGROUP%/%ACCOUNTNAME%"); + + lp_do_global_parameter(lp_ctx, "client signing", "Yes"); + lp_do_global_parameter(lp_ctx, "server signing", "auto"); + + lp_do_global_parameter(lp_ctx, "use spnego", "True"); + + lp_do_global_parameter(lp_ctx, "smb ports", "445 139"); + lp_do_global_parameter(lp_ctx, "nbt port", "137"); + lp_do_global_parameter(lp_ctx, "dgram port", "138"); + lp_do_global_parameter(lp_ctx, "cldap port", "389"); + lp_do_global_parameter(lp_ctx, "krb5 port", "88"); + lp_do_global_parameter(lp_ctx, "kpasswd port", "464"); + lp_do_global_parameter(lp_ctx, "web port", "901"); + lp_do_global_parameter(lp_ctx, "web application directory", dyn_WEBAPPSDIR); + lp_do_global_parameter(lp_ctx, "jsonrpc services directory", dyn_SERVICESDIR); + + lp_do_global_parameter(lp_ctx, "nt status support", "True"); + + lp_do_global_parameter(lp_ctx, "max wins ttl", "518400"); /* 6 days */ + lp_do_global_parameter(lp_ctx, "min wins ttl", "10"); + + lp_do_global_parameter(lp_ctx, "tls enabled", "True"); + lp_do_global_parameter(lp_ctx, "tls keyfile", "tls/key.pem"); + lp_do_global_parameter(lp_ctx, "tls certfile", "tls/cert.pem"); + lp_do_global_parameter(lp_ctx, "tls cafile", "tls/ca.pem"); + lp_do_global_parameter_var(lp_ctx, "js include", "%s", dyn_JSDIR); + lp_do_global_parameter_var(lp_ctx, "setup directory", "%s", + dyn_SETUPDIR); + + for (i = 0; parm_table[i].label; i++) { + if (!(parm_table[i].flags & FLAG_CMDLINE)) { + parm_table[i].flags |= FLAG_DEFAULT; + } + } + + return true; +} + /*************************************************************************** Load the services array from the services file. Return True on success, False on failure. @@ -2468,8 +2476,6 @@ bool lp_load(void) bRetval = false; - loadparm.bInGlobalSection = true; - if (loadparm.Globals.param_opt != NULL) { struct param_opt *next; for (data=loadparm.Globals.param_opt; data; data=next) { @@ -2479,9 +2485,11 @@ bool lp_load(void) talloc_free(data); } } - - init_globals(); + if (!loadparm_init(&loadparm)) + return false; + + loadparm.bInGlobalSection = true; n2 = standard_sub_basic(talloc_autofree_context(), lp_configfile()); DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); @@ -2505,7 +2513,7 @@ bool lp_load(void) bLoaded = true; if (!loadparm.Globals.szWINSservers && loadparm.Globals.bWINSsupport) { - lp_do_parameter(-1, "wins server", "127.0.0.1"); + lp_do_parameter(NULL, "wins server", "127.0.0.1"); } init_iconv(); -- cgit From e25545dbb6a883f564afc402e50d42aad1541c14 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 19:16:08 +0000 Subject: r25038: Pass context in more places. (This used to be commit 8df36c15356b74e075604184558f9d6aa8a3f5e0) --- source4/param/loadparm.c | 102 ++++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 49 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 18a1e22d6c..6becf82066 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -793,24 +793,24 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_server_signing, &loadparm.Globals.server_signing) _PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, &loadparm.Globals.client_signing) /* local prototypes */ - static int map_parameter(const char *pszParmName); static struct service *getservicebyname(const char *pszServiceName); -static void copy_service(struct service * pserviceDest, - struct service * pserviceSource, int *pcopymapDest); +static void copy_service(struct service *pserviceDest, + struct service *pserviceSource, int *pcopymapDest); static bool service_ok(struct service *service); static bool do_section(const char *pszSectionName, void *); -static void init_copymap(struct service * pservice); +static void init_copymap(struct service *pservice); /* This is a helper function for parametrical options support. */ /* It returns a pointer to parametrical option value if it exists or NULL otherwise */ /* Actual parametrical functions are quite simple */ -const char *lp_get_parametric(struct service *service, const char *type, const char *option) +const char *lp_get_parametric(struct service *service, const char *type, + const char *option) { char *vfskey; struct param_opt *data; - data = (service == NULL ? loadparm.Globals.param_opt : service->param_opt); + data = (service == NULL ? loadparm.Globals.param_opt : service->param_opt); asprintf(&vfskey, "%s:%s", type, option); strlower(vfskey); @@ -929,7 +929,8 @@ const char **lp_parm_string_list(struct service *service, const char *type, const char *value = lp_get_parametric(service, type, option); if (value) - return str_list_make(talloc_autofree_context(), value, separator); + return str_list_make(talloc_autofree_context(), value, + separator); return NULL; } @@ -1021,24 +1022,18 @@ static struct service *init_service(TALLOC_CTX *mem_ctx) return pservice; } -void string_free(char **str) -{ - if (str) { - talloc_free(*str); - *str = NULL; - } -} - /*************************************************************************** Add a new service to the services array initialising it with the given service. ***************************************************************************/ -static struct service *add_a_service(const struct service *pservice, const char *name) +static struct service *add_a_service(struct loadparm_context *lp_ctx, + const struct service *pservice, + const char *name) { int i; struct service tservice; - int num_to_alloc = loadparm.iNumServices + 1; + int num_to_alloc = lp_ctx->iNumServices + 1; struct param_opt *data, *pdata; tservice = *pservice; @@ -1061,37 +1056,38 @@ static struct service *add_a_service(const struct service *pservice, const char } /* find an invalid one */ - for (i = 0; i < loadparm.iNumServices; i++) - if (loadparm.ServicePtrs[i] == NULL) + for (i = 0; i < lp_ctx->iNumServices; i++) + if (lp_ctx->ServicePtrs[i] == NULL) break; /* if not, then create one */ - if (i == loadparm.iNumServices) { + if (i == lp_ctx->iNumServices) { struct service **tsp; - tsp = realloc_p(loadparm.ServicePtrs, struct service *, num_to_alloc); + tsp = realloc_p(lp_ctx->ServicePtrs, struct service *, + num_to_alloc); if (!tsp) { DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n")); return NULL; } else { - loadparm.ServicePtrs = tsp; - loadparm.ServicePtrs[loadparm.iNumServices] = NULL; + lp_ctx->ServicePtrs = tsp; + lp_ctx->ServicePtrs[lp_ctx->iNumServices] = NULL; } - loadparm.iNumServices++; + lp_ctx->iNumServices++; } - loadparm.ServicePtrs[i] = init_service(talloc_autofree_context()); - if (loadparm.ServicePtrs[i] == NULL) { + lp_ctx->ServicePtrs[i] = init_service(talloc_autofree_context()); + if (lp_ctx->ServicePtrs[i] == NULL) { DEBUG(0,("add_a_service: out of memory!\n")); return NULL; } - copy_service(loadparm.ServicePtrs[i], &tservice, NULL); + copy_service(lp_ctx->ServicePtrs[i], &tservice, NULL); if (name != NULL) - string_set(loadparm.ServicePtrs[i], &loadparm.ServicePtrs[i]->szService, name); - return loadparm.ServicePtrs[i]; + string_set(lp_ctx->ServicePtrs[i], &lp_ctx->ServicePtrs[i]->szService, name); + return lp_ctx->ServicePtrs[i]; } /*************************************************************************** @@ -1099,13 +1095,14 @@ static struct service *add_a_service(const struct service *pservice, const char from service ifrom. ***************************************************************************/ -bool lp_add_home(const char *pszHomename, struct service *default_service, +bool lp_add_home(struct loadparm_context *lp_ctx, + const char *pszHomename, struct service *default_service, const char *user, const char *pszHomedir) { struct service *service; pstring newHomedir; - service = add_a_service(default_service, pszHomename); + service = add_a_service(lp_ctx, default_service, pszHomename); if (service == NULL) return false; @@ -1136,19 +1133,21 @@ bool lp_add_home(const char *pszHomename, struct service *default_service, Add a new service, based on an old one. ***************************************************************************/ -struct service *lp_add_service(const char *pszService, +struct service *lp_add_service(struct loadparm_context *lp_ctx, + const char *pszService, struct service *default_service) { - return add_a_service(default_service, pszService); + return add_a_service(lp_ctx, default_service, pszService); } /*************************************************************************** Add the IPC service. ***************************************************************************/ -static bool lp_add_hidden(const char *name, const char *fstype) +static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, + const char *fstype) { - struct service *service = add_a_service(&sDefault, name); + struct service *service = add_a_service(lp_ctx, &sDefault, name); if (service == NULL) return false; @@ -1177,11 +1176,13 @@ static bool lp_add_hidden(const char *name, const char *fstype) Add a new printer service, with defaults coming from service iFrom. ***************************************************************************/ -bool lp_add_printer(const char *pszPrintername, struct service *default_service) +bool lp_add_printer(struct loadparm_context *lp_ctx, + const char *pszPrintername, + struct service *default_service) { const char *comment = "From Printcap"; struct service *service; - service = add_a_service(default_service, pszPrintername); + service = add_a_service(lp_ctx, default_service, pszPrintername); if (service == NULL) return false; @@ -1342,7 +1343,7 @@ static void copy_service(struct service *pserviceDest, while (pdata) { /* If we already have same option, override it */ if (strcmp(pdata->key, data->key) == 0) { - string_free(&pdata->value); + talloc_free(pdata->value); pdata->value = talloc_reference(pdata, data->value); not_added = false; @@ -1491,7 +1492,7 @@ static bool handle_include(const char *pszParmValue, char **ptr) string_set(talloc_autofree_context(), ptr, fname); if (file_exist(fname)) - return pm_process(fname, do_section, do_parameter, NULL); + return pm_process(fname, do_section, do_parameter, &loadparm); DEBUG(2, ("Can't find include file %s\n", fname)); @@ -2021,16 +2022,17 @@ static bool equal_parameter(parm_type type, void *ptr1, void *ptr2) static bool do_section(const char *pszSectionName, void *userdata) { + struct loadparm_context *lp_ctx = (struct loadparm_context *)userdata; bool bRetval; bool isglobal = ((strwicmp(pszSectionName, GLOBAL_NAME) == 0) || (strwicmp(pszSectionName, GLOBAL_NAME2) == 0)); bRetval = false; /* if we've just struck a global section, note the fact. */ - loadparm.bInGlobalSection = isglobal; + lp_ctx->bInGlobalSection = isglobal; /* check for multiple global sections */ - if (loadparm.bInGlobalSection) { + if (lp_ctx->bInGlobalSection) { DEBUG(3, ("Processing section \"[%s]\"\n", pszSectionName)); return true; } @@ -2038,8 +2040,8 @@ static bool do_section(const char *pszSectionName, void *userdata) /* if we have a current service, tidy it up before moving on */ bRetval = true; - if (loadparm.currentService != NULL) - bRetval = service_ok(loadparm.currentService); + if (lp_ctx->currentService != NULL) + bRetval = service_ok(lp_ctx->currentService); /* if all is still well, move to the next record in the services array */ if (bRetval) { @@ -2047,7 +2049,8 @@ static bool do_section(const char *pszSectionName, void *userdata) /* issued by the post-processing of a previous section. */ DEBUG(2, ("Processing section \"[%s]\"\n", pszSectionName)); - if ((loadparm.currentService = add_a_service(&sDefault, pszSectionName)) + if ((loadparm.currentService = add_a_service(lp_ctx, &sDefault, + pszSectionName)) == NULL) { DEBUG(0, ("Failed to add a new service\n")); return false; @@ -2257,7 +2260,8 @@ bool lp_snum_ok(int iService) Auto-load some home services. ***************************************************************************/ -static void lp_add_auto_services(const char *str) +static void lp_add_auto_services(struct loadparm_context *lp_ctx, + const char *str) { return; } @@ -2497,7 +2501,7 @@ bool lp_load(void) /* We get sections first, so have to start 'behind' to make up */ loadparm.currentService = NULL; - bRetval = pm_process(n2, do_section, do_parameter, NULL); + bRetval = pm_process(n2, do_section, do_parameter, &loadparm); /* finish up the last section */ DEBUG(4, ("pm_process() returned %s\n", BOOLSTR(bRetval))); @@ -2505,10 +2509,10 @@ bool lp_load(void) if (loadparm.currentService != NULL) bRetval = service_ok(loadparm.currentService); - lp_add_auto_services(lp_auto_services()); + lp_add_auto_services(&loadparm, lp_auto_services()); - lp_add_hidden("IPC$", "IPC"); - lp_add_hidden("ADMIN$", "DISK"); + lp_add_hidden(&loadparm, "IPC$", "IPC"); + lp_add_hidden(&loadparm, "ADMIN$", "DISK"); bLoaded = true; -- cgit From 9fd1b1c130ad6886111df9bf3e3de86a64dea7f7 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 20:03:19 +0000 Subject: r25039: Rename service -> loadparm_service, use context more. (This used to be commit ab417cb32bd348c05b20707e73297df05c920079) --- source4/param/loadparm.c | 198 +++++++++++++++++------------------------------ 1 file changed, 72 insertions(+), 126 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 6becf82066..f508f32d06 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -70,7 +70,6 @@ static bool bLoaded = false; #define standard_sub_basic talloc_strdup /* some helpful bits */ -#define LP_SNUM_OK(i) (((i) >= 0) && ((i) < loadparm.iNumServices) && VALID(i)) #define VALID(i) (loadparm.ServicePtrs[i] != NULL) static bool do_parameter(const char *, const char *, void *); @@ -193,7 +192,7 @@ struct global /* * This structure describes a single service. */ -struct service +struct loadparm_service { char *szService; char *szPath; @@ -232,7 +231,7 @@ struct service /* This is a default service used to prime a services structure */ -static struct service sDefault = { +static struct loadparm_service sDefault = { NULL, /* szService */ NULL, /* szPath */ NULL, /* szCopy */ @@ -271,9 +270,9 @@ static struct service sDefault = { /* local variables */ static struct loadparm_context { struct global Globals; - struct service **ServicePtrs; + struct loadparm_service **ServicePtrs; int iNumServices; - struct service *currentService; + struct loadparm_service *currentService; bool bInGlobalSection; } loadparm = { .iNumServices = 0, @@ -660,15 +659,15 @@ static const char *lp_string(const char *s) int fn_name(void) {return(*(int *)(ptr));} #define FN_LOCAL_STRING(fn_name,val) \ - const char *fn_name(struct service *service) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault.val)));} + const char *fn_name(struct loadparm_service *service) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault.val)));} #define FN_LOCAL_CONST_STRING(fn_name,val) \ - const char *fn_name(struct service *service) {return (const char *)(service != NULL && service->val != NULL) ? service->val : sDefault.val;} + const char *fn_name(struct loadparm_service *service) {return (const char *)(service != NULL && service->val != NULL) ? service->val : sDefault.val;} #define FN_LOCAL_LIST(fn_name,val) \ - const char **fn_name(struct service *service) {return(const char **)(service != NULL && service->val != NULL? service->val : sDefault.val);} + const char **fn_name(struct loadparm_service *service) {return(const char **)(service != NULL && service->val != NULL? service->val : sDefault.val);} #define FN_LOCAL_BOOL(fn_name,val) \ - bool fn_name(struct service *service) {return((service != NULL)? service->val : sDefault.val);} + bool fn_name(struct loadparm_service *service) {return((service != NULL)? service->val : sDefault.val);} #define FN_LOCAL_INTEGER(fn_name,val) \ - int fn_name(struct service *service) {return((service != NULL)? service->val : sDefault.val);} + int fn_name(struct loadparm_service *service) {return((service != NULL)? service->val : sDefault.val);} _PUBLIC_ FN_GLOBAL_INTEGER(lp_server_role, &loadparm.Globals.server_role) _PUBLIC_ FN_GLOBAL_LIST(lp_smb_ports, &loadparm.Globals.smb_ports) @@ -794,18 +793,20 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, &loadparm.Globals.client_signing) /* local prototypes */ static int map_parameter(const char *pszParmName); -static struct service *getservicebyname(const char *pszServiceName); -static void copy_service(struct service *pserviceDest, - struct service *pserviceSource, int *pcopymapDest); -static bool service_ok(struct service *service); +static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx, + const char *pszServiceName); +static void copy_service(struct loadparm_service *pserviceDest, + struct loadparm_service *pserviceSource, + int *pcopymapDest); +static bool service_ok(struct loadparm_service *service); static bool do_section(const char *pszSectionName, void *); -static void init_copymap(struct service *pservice); +static void init_copymap(struct loadparm_service *pservice); /* This is a helper function for parametrical options support. */ /* It returns a pointer to parametrical option value if it exists or NULL otherwise */ /* Actual parametrical functions are quite simple */ -const char *lp_get_parametric(struct service *service, const char *type, - const char *option) +const char *lp_get_parametric(struct loadparm_service *service, + const char *type, const char *option) { char *vfskey; struct param_opt *data; @@ -908,7 +909,7 @@ static bool lp_bool(const char *s) /* Parametric option has following syntax: 'Type: option = value' */ /* Returned value is allocated in 'lp_talloc' context */ -const char *lp_parm_string(struct service *service, const char *type, +const char *lp_parm_string(struct loadparm_service *service, const char *type, const char *option) { const char *value = lp_get_parametric(service, type, option); @@ -923,7 +924,8 @@ const char *lp_parm_string(struct service *service, const char *type, /* Parametric option has following syntax: 'Type: option = value' */ /* Returned value is allocated in 'lp_talloc' context */ -const char **lp_parm_string_list(struct service *service, const char *type, +const char **lp_parm_string_list(struct loadparm_service *service, + const char *type, const char *option, const char *separator) { const char *value = lp_get_parametric(service, type, option); @@ -938,8 +940,8 @@ const char **lp_parm_string_list(struct service *service, const char *type, /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -int lp_parm_int(struct service *service, const char *type, const char *option, - int default_v) +int lp_parm_int(struct loadparm_service *service, const char *type, + const char *option, int default_v) { const char *value = lp_get_parametric(service, type, option); @@ -954,7 +956,7 @@ int lp_parm_int(struct service *service, const char *type, const char *option, * Parametric option has following syntax: 'Type: option = value'. */ -int lp_parm_bytes(struct service *service, const char *type, +int lp_parm_bytes(struct loadparm_service *service, const char *type, const char *option, int default_v) { uint64_t bval; @@ -973,7 +975,7 @@ int lp_parm_bytes(struct service *service, const char *type, /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -unsigned long lp_parm_ulong(struct service *service, const char *type, +unsigned long lp_parm_ulong(struct loadparm_service *service, const char *type, const char *option, unsigned long default_v) { const char *value = lp_get_parametric(service, type, option); @@ -985,7 +987,7 @@ unsigned long lp_parm_ulong(struct service *service, const char *type, } -double lp_parm_double(struct service *service, const char *type, +double lp_parm_double(struct loadparm_service *service, const char *type, const char *option, double default_v) { const char *value = lp_get_parametric(service, type, option); @@ -999,7 +1001,7 @@ double lp_parm_double(struct service *service, const char *type, /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -bool lp_parm_bool(struct service *service, const char *type, +bool lp_parm_bool(struct loadparm_service *service, const char *type, const char *option, bool default_v) { const char *value = lp_get_parametric(service, type, option); @@ -1015,9 +1017,10 @@ bool lp_parm_bool(struct service *service, const char *type, Initialise a service to the defaults. ***************************************************************************/ -static struct service *init_service(TALLOC_CTX *mem_ctx) +static struct loadparm_service *init_service(TALLOC_CTX *mem_ctx) { - struct service *pservice = talloc_zero(mem_ctx, struct service); + struct loadparm_service *pservice = + talloc_zero(mem_ctx, struct loadparm_service); copy_service(pservice, &sDefault, NULL); return pservice; } @@ -1027,12 +1030,12 @@ static struct service *init_service(TALLOC_CTX *mem_ctx) service. ***************************************************************************/ -static struct service *add_a_service(struct loadparm_context *lp_ctx, - const struct service *pservice, +static struct loadparm_service *add_a_service(struct loadparm_context *lp_ctx, + const struct loadparm_service *pservice, const char *name) { int i; - struct service tservice; + struct loadparm_service tservice; int num_to_alloc = lp_ctx->iNumServices + 1; struct param_opt *data, *pdata; @@ -1040,7 +1043,8 @@ static struct service *add_a_service(struct loadparm_context *lp_ctx, /* it might already exist */ if (name) { - struct service *service = getservicebyname(name); + struct loadparm_service *service = getservicebyname(lp_ctx, + name); if (service != NULL) { /* Clean all parametric options for service */ /* They will be added during parsing again */ @@ -1062,9 +1066,9 @@ static struct service *add_a_service(struct loadparm_context *lp_ctx, /* if not, then create one */ if (i == lp_ctx->iNumServices) { - struct service **tsp; + struct loadparm_service **tsp; - tsp = realloc_p(lp_ctx->ServicePtrs, struct service *, + tsp = realloc_p(lp_ctx->ServicePtrs, struct loadparm_service *, num_to_alloc); if (!tsp) { @@ -1096,10 +1100,11 @@ static struct service *add_a_service(struct loadparm_context *lp_ctx, ***************************************************************************/ bool lp_add_home(struct loadparm_context *lp_ctx, - const char *pszHomename, struct service *default_service, + const char *pszHomename, + struct loadparm_service *default_service, const char *user, const char *pszHomedir) { - struct service *service; + struct loadparm_service *service; pstring newHomedir; service = add_a_service(lp_ctx, default_service, pszHomename); @@ -1133,9 +1138,9 @@ bool lp_add_home(struct loadparm_context *lp_ctx, Add a new service, based on an old one. ***************************************************************************/ -struct service *lp_add_service(struct loadparm_context *lp_ctx, +struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, const char *pszService, - struct service *default_service) + struct loadparm_service *default_service) { return add_a_service(lp_ctx, default_service, pszService); } @@ -1147,7 +1152,7 @@ struct service *lp_add_service(struct loadparm_context *lp_ctx, static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, const char *fstype) { - struct service *service = add_a_service(lp_ctx, &sDefault, name); + struct loadparm_service *service = add_a_service(lp_ctx, &sDefault, name); if (service == NULL) return false; @@ -1178,10 +1183,10 @@ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, bool lp_add_printer(struct loadparm_context *lp_ctx, const char *pszPrintername, - struct service *default_service) + struct loadparm_service *default_service) { const char *comment = "From Printcap"; - struct service *service; + struct loadparm_service *service; service = add_a_service(lp_ctx, default_service, pszPrintername); if (service == NULL) @@ -1245,7 +1250,7 @@ struct parm_struct *lp_parm_struct(const char *name) /* return the parameter pointer for a parameter */ -void *lp_parm_ptr(struct service *service, struct parm_struct *parm) +void *lp_parm_ptr(struct loadparm_service *service, struct parm_struct *parm) { if (service == NULL) return parm->ptr; @@ -1257,14 +1262,15 @@ void *lp_parm_ptr(struct service *service, struct parm_struct *parm) Find a service by name. Otherwise works like get_service. ***************************************************************************/ -static struct service *getservicebyname(const char *pszServiceName) +static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx, + const char *pszServiceName) { int iService; - for (iService = loadparm.iNumServices - 1; iService >= 0; iService--) - if (VALID(iService) && - strwicmp(loadparm.ServicePtrs[iService]->szService, pszServiceName) == 0) { - return loadparm.ServicePtrs[iService]; + for (iService = lp_ctx->iNumServices - 1; iService >= 0; iService--) + if (lp_ctx->ServicePtrs[iService] != NULL && + strwicmp(lp_ctx->ServicePtrs[iService]->szService, pszServiceName) == 0) { + return lp_ctx->ServicePtrs[iService]; } return NULL; @@ -1275,8 +1281,8 @@ static struct service *getservicebyname(const char *pszServiceName) If pcopymapDest is NULL then copy all fields ***************************************************************************/ -static void copy_service(struct service *pserviceDest, - struct service *pserviceSource, +static void copy_service(struct loadparm_service *pserviceDest, + struct loadparm_service *pserviceSource, int *pcopymapDest) { int i; @@ -1368,7 +1374,7 @@ Check a service for consistency. Return False if the service is in any way incomplete or faulty, else True. ***************************************************************************/ -static bool service_ok(struct service *service) +static bool service_ok(struct loadparm_service *service) { bool bRetval; @@ -1506,7 +1512,7 @@ static bool handle_include(const char *pszParmValue, char **ptr) static bool handle_copy(const char *pszParmValue, char **ptr) { bool bRetval; - struct service *serviceTemp; + struct loadparm_service *serviceTemp; string_set(talloc_autofree_context(), ptr, pszParmValue); @@ -1514,7 +1520,7 @@ static bool handle_copy(const char *pszParmValue, char **ptr) DEBUG(3, ("Copying service from service %s\n", pszParmValue)); - if ((serviceTemp = getservicebyname(pszParmValue)) != NULL) { + if ((serviceTemp = getservicebyname(&loadparm, pszParmValue)) != NULL) { if (serviceTemp == loadparm.currentService) { DEBUG(0, ("Can't copy service %s - unable to copy self!\n", pszParmValue)); } else { @@ -1535,7 +1541,7 @@ static bool handle_copy(const char *pszParmValue, char **ptr) Initialise a copymap. ***************************************************************************/ -static void init_copymap(struct service *pservice) +static void init_copymap(struct loadparm_service *pservice) { int i; talloc_free(pservice->copymap); @@ -1550,22 +1556,10 @@ static void init_copymap(struct service *pservice) pservice->copymap[i] = true; } -#if 0 /* not used anywhere */ -/*************************************************************************** - Return the local pointer to a parameter given the service number and the - pointer into the default structure. -***************************************************************************/ - -void *lp_local_ptr(int snum, void *ptr) -{ - return (void *)(((char *)ServicePtrs[snum]) + PTR_DIFF(ptr, &sDefault)); -} -#endif - /*************************************************************************** Process a parametric option ***************************************************************************/ -static bool lp_do_parameter_parametric(struct service *service, +static bool lp_do_parameter_parametric(struct loadparm_service *service, const char *pszParmName, const char *pszParmValue, int flags) { @@ -1751,7 +1745,7 @@ bool lp_do_global_parameter(struct loadparm_context *lp_ctx, pszParmName, pszParmValue); } -bool lp_do_service_parameter(struct service *service, +bool lp_do_service_parameter(struct loadparm_service *service, const char *pszParmName, const char *pszParmValue) { void *def_ptr = NULL; @@ -1805,7 +1799,7 @@ bool lp_do_service_parameter(struct service *service, Process a parameter for a particular service number. If snum < 0 then assume we are in the globals. ***************************************************************************/ -bool lp_do_parameter(struct service *service, const char *pszParmName, +bool lp_do_parameter(struct loadparm_service *service, const char *pszParmName, const char *pszParmValue) { if (service == NULL) { @@ -2126,7 +2120,7 @@ static void dump_globals(FILE *f, bool show_defaults) Display the contents of a single services record. ***************************************************************************/ -static void dump_a_service(struct service * pService, FILE * f) +static void dump_a_service(struct loadparm_service * pService, FILE * f) { int i; struct param_opt *data; @@ -2167,7 +2161,7 @@ static void dump_a_service(struct service * pService, FILE * f) bool lp_dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal) { - struct service * pService = loadparm.ServicePtrs[snum]; + struct loadparm_service * pService = loadparm.ServicePtrs[snum]; struct parm_struct *parm; void *ptr; @@ -2213,7 +2207,7 @@ struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters) return &parm_table[(*i)++]; } } else { - struct service *pService = loadparm.ServicePtrs[snum]; + struct loadparm_service *pService = loadparm.ServicePtrs[snum]; for (; parm_table[*i].label; (*i)++) { if (parm_table[*i].class == P_SEPARATOR) @@ -2247,15 +2241,6 @@ struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters) } -/*************************************************************************** - Return TRUE if the passed service number is within range. -***************************************************************************/ - -bool lp_snum_ok(int iService) -{ - return (LP_SNUM_OK(iService) && loadparm.ServicePtrs[iService]->bAvailable); -} - /*************************************************************************** Auto-load some home services. ***************************************************************************/ @@ -2283,7 +2268,7 @@ void lp_killunused(struct smbsrv_connection *smb, bool (*snumused) (struct smbsr { int i; for (i = 0; i < loadparm.iNumServices; i++) { - if (!VALID(i)) + if (loadparm.ServicePtrs[i] == NULL) continue; if (!snumused || !snumused(smb, i)) { @@ -2293,18 +2278,6 @@ void lp_killunused(struct smbsrv_connection *smb, bool (*snumused) (struct smbsr } } -/*************************************************************************** - Unload a service. -***************************************************************************/ - -void lp_killservice(int iServiceIn) -{ - if (VALID(iServiceIn)) { - talloc_free(loadparm.ServicePtrs[iServiceIn]); - loadparm.ServicePtrs[iServiceIn] = NULL; - } -} - /*************************************************************************** Initialise the global parameter structure. ***************************************************************************/ @@ -2557,7 +2530,7 @@ void lp_dump(FILE *f, bool show_defaults, int maxtoprint) Display the contents of one service in human-readable form. ***************************************************************************/ -void lp_dump_one(FILE *f, bool show_defaults, struct service *service) +void lp_dump_one(FILE *f, bool show_defaults, struct loadparm_service *service) { if (service != NULL) { if (service->szService[0] == '\0') @@ -2566,12 +2539,12 @@ void lp_dump_one(FILE *f, bool show_defaults, struct service *service) } } -struct service *lp_servicebynum(int snum) +struct loadparm_service *lp_servicebynum(int snum) { return loadparm.ServicePtrs[snum]; } -struct service *lp_service(const char *service_name) +struct loadparm_service *lp_service(const char *service_name) { int snum = lp_servicenumber(service_name); if (snum < 0) @@ -2611,28 +2584,10 @@ int lp_servicenumber(const char *pszServiceName) return iService; } -int lp_find_valid_service(const char *pszServiceName) -{ - int iService; - - iService = lp_servicenumber(pszServiceName); - - if (iService >= 0 && !lp_snum_ok(iService)) { - DEBUG(0,("lp_find_valid_service: Invalid snum %d for '%s'\n",iService, pszServiceName)); - iService = -1; - } - - if (iService == -1) { - DEBUG(3,("lp_find_valid_service: failed to find service '%s'\n", pszServiceName)); - } - - return iService; -} - /******************************************************************* A useful volume label function. ********************************************************************/ -const char *volume_label(struct service *service) +const char *volume_label(struct loadparm_service *service) { const char *ret = lp_volume(service); if (!*ret) @@ -2650,16 +2605,7 @@ bool lp_domain_logons(void) return (lp_server_role() == ROLE_DOMAIN_CONTROLLER); } -/******************************************************************* - Remove a service. -********************************************************************/ - -void lp_remove_service(int snum) -{ - loadparm.ServicePtrs[snum] = NULL; -} - -const char *lp_printername(struct service *service) +const char *lp_printername(struct loadparm_service *service) { const char *ret = _lp_printername(service); if (ret == NULL || (ret != NULL && *ret == '\0')) @@ -2673,9 +2619,9 @@ const char *lp_printername(struct service *service) Return the max print jobs per queue. ********************************************************************/ -int lp_maxprintjobs(int snum) +int lp_maxprintjobs(struct loadparm_service *service) { - int maxjobs = LP_SNUM_OK(snum) ? loadparm.ServicePtrs[snum]->iMaxPrintJobs : sDefault.iMaxPrintJobs; + int maxjobs = (service != NULL) ? service->iMaxPrintJobs : sDefault.iMaxPrintJobs; if (maxjobs <= 0 || maxjobs >= PRINT_MAX_JOBID) maxjobs = PRINT_MAX_JOBID - 1; -- cgit From 46d16c0131f69f320f58a2e074d7623f23311e1e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 20:49:43 +0000 Subject: r25041: Use context in more places, fix warnings. (This used to be commit 9bb8738945b80d308e592bbecd44fe4e4f048ad8) --- source4/param/loadparm.c | 143 +++++++++++++++++++++++------------------------ 1 file changed, 69 insertions(+), 74 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index f508f32d06..6c3dee239b 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -69,11 +69,7 @@ static bool bLoaded = false; #define standard_sub_basic talloc_strdup -/* some helpful bits */ -#define VALID(i) (loadparm.ServicePtrs[i] != NULL) - static bool do_parameter(const char *, const char *, void *); - static bool defaults_saved = false; struct param_opt { @@ -274,18 +270,27 @@ static struct loadparm_context { int iNumServices; struct loadparm_service *currentService; bool bInGlobalSection; + struct file_lists { + struct file_lists *next; + char *name; + char *subfname; + time_t modtime; + } *file_lists; } loadparm = { .iNumServices = 0, .currentService = NULL, .bInGlobalSection = true, .ServicePtrs = NULL, + .file_lists = NULL, }; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) /* prototypes for the special type handlers */ -static bool handle_include(const char *pszParmValue, char **ptr); -static bool handle_copy(const char *pszParmValue, char **ptr); +static bool handle_include(struct loadparm_context *lp_ctx, + const char *pszParmValue, char **ptr); +static bool handle_copy(struct loadparm_context *lp_ctx, + const char *pszParmValue, char **ptr); static const struct enum_list enum_protocol[] = { {PROTOCOL_SMB2, "SMB2"}, @@ -1169,7 +1174,8 @@ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, service->bBrowseable = false; if (strcasecmp(fstype, "IPC") == 0) { - lp_do_service_parameter(service, "ntvfs handler", "default"); + lp_do_service_parameter(lp_ctx, service, "ntvfs handler", + "default"); } DEBUG(3, ("adding hidden service %s\n", name)); @@ -1406,21 +1412,16 @@ static bool service_ok(struct loadparm_service *service) return bRetval; } -static struct file_lists { - struct file_lists *next; - char *name; - char *subfname; - time_t modtime; -} *file_lists = NULL; /******************************************************************* Keep a linked list of all config files so we know when one has changed it's date and needs to be reloaded. ********************************************************************/ -static void add_to_file_list(const char *fname, const char *subfname) +static void add_to_file_list(struct loadparm_context *lp_ctx, + const char *fname, const char *subfname) { - struct file_lists *f = file_lists; + struct file_lists *f = lp_ctx->file_lists; while (f) { if (f->name && !strcmp(f->name, fname)) @@ -1432,7 +1433,7 @@ static void add_to_file_list(const char *fname, const char *subfname) f = talloc(talloc_autofree_context(), struct file_lists); if (!f) return; - f->next = file_lists; + f->next = lp_ctx->file_lists; f->name = talloc_strdup(f, fname); if (!f->name) { talloc_free(f); @@ -1443,7 +1444,7 @@ static void add_to_file_list(const char *fname, const char *subfname) talloc_free(f); return; } - file_lists = f; + lp_ctx->file_lists = f; f->modtime = file_modtime(subfname); } else { time_t t = file_modtime(subfname); @@ -1456,12 +1457,12 @@ static void add_to_file_list(const char *fname, const char *subfname) Check if a config file has changed date. ********************************************************************/ -bool lp_file_list_changed(void) +bool lp_file_list_changed(struct loadparm_context *lp_ctx) { struct file_lists *f; DEBUG(6, ("lp_file_list_changed()\n")); - for (f = file_lists; f != NULL; f = f->next) { + for (f = lp_ctx->file_lists; f != NULL; f = f->next) { char *n2; time_t mod_time; @@ -1488,17 +1489,18 @@ bool lp_file_list_changed(void) Handle the include operation. ***************************************************************************/ -static bool handle_include(const char *pszParmValue, char **ptr) +static bool handle_include(struct loadparm_context *lp_ctx, + const char *pszParmValue, char **ptr) { char *fname = standard_sub_basic(talloc_autofree_context(), pszParmValue); - add_to_file_list(pszParmValue, fname); + add_to_file_list(lp_ctx, pszParmValue, fname); string_set(talloc_autofree_context(), ptr, fname); if (file_exist(fname)) - return pm_process(fname, do_section, do_parameter, &loadparm); + return pm_process(fname, do_section, do_parameter, lp_ctx); DEBUG(2, ("Can't find include file %s\n", fname)); @@ -1509,7 +1511,8 @@ static bool handle_include(const char *pszParmValue, char **ptr) Handle the interpretation of the copy parameter. ***************************************************************************/ -static bool handle_copy(const char *pszParmValue, char **ptr) +static bool handle_copy(struct loadparm_context *lp_ctx, + const char *pszParmValue, char **ptr) { bool bRetval; struct loadparm_service *serviceTemp; @@ -1520,17 +1523,18 @@ static bool handle_copy(const char *pszParmValue, char **ptr) DEBUG(3, ("Copying service from service %s\n", pszParmValue)); - if ((serviceTemp = getservicebyname(&loadparm, pszParmValue)) != NULL) { - if (serviceTemp == loadparm.currentService) { + if ((serviceTemp = getservicebyname(lp_ctx, pszParmValue)) != NULL) { + if (serviceTemp == lp_ctx->currentService) { DEBUG(0, ("Can't copy service %s - unable to copy self!\n", pszParmValue)); } else { - copy_service(loadparm.currentService, + copy_service(lp_ctx->currentService, serviceTemp, - loadparm.currentService->copymap); + lp_ctx->currentService->copymap); bRetval = true; } } else { - DEBUG(0, ("Unable to copy service - source not found: %s\n", pszParmValue)); + DEBUG(0, ("Unable to copy service - source not found: %s\n", + pszParmValue)); bRetval = false; } @@ -1620,12 +1624,14 @@ static bool lp_do_parameter_parametric(struct loadparm_service *service, } static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, - const char *pszParmName, const char *pszParmValue) + const char *pszParmName, const char *pszParmValue, + struct loadparm_context *lp_ctx) { int i; /* if it is a special case then go ahead */ if (parm_table[parmnum].special) { - parm_table[parmnum].special(pszParmValue, (char **)parm_ptr); + parm_table[parmnum].special(lp_ctx, pszParmValue, + (char **)parm_ptr); return true; } @@ -1742,10 +1748,11 @@ bool lp_do_global_parameter(struct loadparm_context *lp_ctx, parm_ptr = parm_table[parmnum].ptr; return set_variable(talloc_autofree_context(), parmnum, parm_ptr, - pszParmName, pszParmValue); + pszParmName, pszParmValue, lp_ctx); } -bool lp_do_service_parameter(struct loadparm_service *service, +bool lp_do_service_parameter(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *pszParmName, const char *pszParmValue) { void *def_ptr = NULL; @@ -1792,24 +1799,7 @@ bool lp_do_service_parameter(struct loadparm_service *service, service->copymap[i] = false; return set_variable(service, parmnum, parm_ptr, pszParmName, - pszParmValue); -} - -/*************************************************************************** - Process a parameter for a particular service number. If snum < 0 - then assume we are in the globals. -***************************************************************************/ -bool lp_do_parameter(struct loadparm_service *service, const char *pszParmName, - const char *pszParmValue) -{ - if (service == NULL) { - return lp_do_global_parameter(&loadparm, pszParmName, - pszParmValue); - } else { - return lp_do_service_parameter(service, - pszParmName, pszParmValue); - } - return true; + pszParmValue, lp_ctx); } /*************************************************************************** @@ -1819,11 +1809,13 @@ bool lp_do_parameter(struct loadparm_service *service, const char *pszParmName, static bool do_parameter(const char *pszParmName, const char *pszParmValue, void *userdata) { - if (loadparm.bInGlobalSection) - return lp_do_global_parameter(&loadparm, pszParmName, + struct loadparm_context *lp_ctx = (struct loadparm_context *)userdata; + + if (lp_ctx->bInGlobalSection) + return lp_do_global_parameter(lp_ctx, pszParmName, pszParmValue); else - return lp_do_service_parameter(loadparm.currentService, + return lp_do_service_parameter(lp_ctx, lp_ctx->currentService, pszParmName, pszParmValue); } @@ -1873,7 +1865,7 @@ bool lp_set_cmdline(const char *pszParmName, const char *pszParmValue) /* reset the CMDLINE flag in case this has been called before */ parm_table[parmnum].flags &= ~FLAG_CMDLINE; - if (!lp_do_parameter(NULL, pszParmName, pszParmValue)) { + if (!lp_do_global_parameter(&loadparm, pszParmName, pszParmValue)) { return false; } @@ -2450,47 +2442,48 @@ bool lp_load(void) char *n2; bool bRetval; struct param_opt *data; + struct loadparm_context *lp_ctx = &loadparm; bRetval = false; - if (loadparm.Globals.param_opt != NULL) { + if (lp_ctx->Globals.param_opt != NULL) { struct param_opt *next; - for (data=loadparm.Globals.param_opt; data; data=next) { + for (data = lp_ctx->Globals.param_opt; data; data=next) { next = data->next; if (data->flags & FLAG_CMDLINE) continue; - DLIST_REMOVE(loadparm.Globals.param_opt, data); + DLIST_REMOVE(lp_ctx->Globals.param_opt, data); talloc_free(data); } } - if (!loadparm_init(&loadparm)) + if (!loadparm_init(lp_ctx)) return false; - loadparm.bInGlobalSection = true; + lp_ctx->bInGlobalSection = true; n2 = standard_sub_basic(talloc_autofree_context(), lp_configfile()); DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); - add_to_file_list(lp_configfile(), n2); + add_to_file_list(lp_ctx, lp_configfile(), n2); /* We get sections first, so have to start 'behind' to make up */ - loadparm.currentService = NULL; - bRetval = pm_process(n2, do_section, do_parameter, &loadparm); + lp_ctx->currentService = NULL; + bRetval = pm_process(n2, do_section, do_parameter, lp_ctx); /* finish up the last section */ DEBUG(4, ("pm_process() returned %s\n", BOOLSTR(bRetval))); if (bRetval) - if (loadparm.currentService != NULL) - bRetval = service_ok(loadparm.currentService); + if (lp_ctx->currentService != NULL) + bRetval = service_ok(lp_ctx->currentService); - lp_add_auto_services(&loadparm, lp_auto_services()); + lp_add_auto_services(lp_ctx, lp_auto_services()); - lp_add_hidden(&loadparm, "IPC$", "IPC"); - lp_add_hidden(&loadparm, "ADMIN$", "DISK"); + lp_add_hidden(lp_ctx, "IPC$", "IPC"); + lp_add_hidden(lp_ctx, "ADMIN$", "DISK"); bLoaded = true; - if (!loadparm.Globals.szWINSservers && loadparm.Globals.bWINSsupport) { - lp_do_parameter(NULL, "wins server", "127.0.0.1"); + if (!lp_ctx->Globals.szWINSservers && lp_ctx->Globals.bWINSsupport) { + lp_do_global_parameter(lp_ctx, "wins server", "127.0.0.1"); } init_iconv(); @@ -2502,16 +2495,17 @@ bool lp_load(void) Return the max number of services. ***************************************************************************/ -int lp_numservices(void) +int lp_numservices(struct loadparm_context *lp_ctx) { - return loadparm.iNumServices; + return lp_ctx->iNumServices; } /*************************************************************************** Display the contents of the services array in human-readable form. ***************************************************************************/ -void lp_dump(FILE *f, bool show_defaults, int maxtoprint) +void lp_dump(FILE *f, bool show_defaults, int maxtoprint, + struct loadparm_context *lp_ctx) { int iService; @@ -2523,7 +2517,7 @@ void lp_dump(FILE *f, bool show_defaults, int maxtoprint) dump_a_service(&sDefault, f); for (iService = 0; iService < maxtoprint; iService++) - lp_dump_one(f, show_defaults, loadparm.ServicePtrs[iService]); + lp_dump_one(f, show_defaults, lp_ctx->ServicePtrs[iService]); } /*************************************************************************** @@ -2566,7 +2560,8 @@ int lp_servicenumber(const char *pszServiceName) for (iService = loadparm.iNumServices - 1; iService >= 0; iService--) { - if (VALID(iService) && loadparm.ServicePtrs[iService]->szService) { + if (loadparm.ServicePtrs[iService] && + loadparm.ServicePtrs[iService]->szService) { /* * The substitution here is used to support %U is * service names -- cgit From e44d8bc87fbf4277fbd797f65de7842133fbe1e5 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 21:06:57 +0000 Subject: r25042: Avoid direct references to global loadparm context. (This used to be commit 256532ab4b772c5c38bc7ced21408f3ed42fe6b5) --- source4/param/loadparm.c | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 6c3dee239b..2dbf7cd60a 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2539,26 +2539,10 @@ struct loadparm_service *lp_servicebynum(int snum) } struct loadparm_service *lp_service(const char *service_name) -{ - int snum = lp_servicenumber(service_name); - if (snum < 0) - return NULL; - return loadparm.ServicePtrs[snum]; -} - -/*************************************************************************** -Return the number of the service with the given name, or -1 if it doesn't -exist. Note that this is a DIFFERENT ANIMAL from the internal function -getservicebyname()! This works ONLY if all services have been loaded, and -does not copy the found service. -***************************************************************************/ - -int lp_servicenumber(const char *pszServiceName) { int iService; char *serviceName; - for (iService = loadparm.iNumServices - 1; iService >= 0; iService--) { if (loadparm.ServicePtrs[iService] && loadparm.ServicePtrs[iService]->szService) { @@ -2568,17 +2552,16 @@ int lp_servicenumber(const char *pszServiceName) */ serviceName = standard_sub_basic(loadparm.ServicePtrs[iService], loadparm.ServicePtrs[iService]->szService); - if (strequal(serviceName, pszServiceName)) - break; + if (strequal(serviceName, service_name)) + return loadparm.ServicePtrs[iService]; } } - if (iService < 0) - DEBUG(7,("lp_servicenumber: couldn't find %s\n", pszServiceName)); - - return iService; + DEBUG(7,("lp_servicenumber: couldn't find %s\n", service_name)); + return NULL; } + /******************************************************************* A useful volume label function. ********************************************************************/ -- cgit From 7e297ecfa4db2c7ab720a63c7764bc0e20f8058c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 9 Sep 2007 19:34:30 +0000 Subject: r25047: Fix more warnings. (This used to be commit 69de86d2d2e49439760fbc61901eb87fb7fc5d55) --- source4/param/loadparm.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 2dbf7cd60a..f5c0ba51eb 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1030,6 +1030,28 @@ static struct loadparm_service *init_service(TALLOC_CTX *mem_ctx) return pservice; } +/** + Set a string value, deallocating any existing space, and allocing the space + for the string +**/ +static bool string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src) +{ + talloc_free(*dest); + + if (src == NULL) + src = ""; + + *dest = talloc_strdup(mem_ctx, src); + if ((*dest) == NULL) { + DEBUG(0,("Out of memory in string_init\n")); + return false; + } + + return true; +} + + + /*************************************************************************** Add a new service to the services array initialising it with the given service. @@ -2495,20 +2517,22 @@ bool lp_load(void) Return the max number of services. ***************************************************************************/ -int lp_numservices(struct loadparm_context *lp_ctx) +int lp_numservices(void) { - return lp_ctx->iNumServices; + return loadparm.iNumServices; } /*************************************************************************** Display the contents of the services array in human-readable form. ***************************************************************************/ -void lp_dump(FILE *f, bool show_defaults, int maxtoprint, - struct loadparm_context *lp_ctx) +void lp_dump(FILE *f, bool show_defaults, int maxtoprint) { + struct loadparm_context *lp_ctx; int iService; + lp_ctx = &loadparm; + if (show_defaults) defaults_saved = false; -- cgit From 15c1801a5c13479f1bf67e0e3c1ad7c0af8e3af7 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 10 Sep 2007 03:44:47 +0000 Subject: r25051: Move SWAT back to the old-style form-submit modal. The Web 2.0, async client tools were really interesting, but without developer backing they remain impossible to support into a release. The most interesting app was the LDB browser, and I intend to replace this with phpLdapAdmin, preconfigured for Apache during provision. This also removes the need to 'compile' SWAT on SVN checkouts. Andrew Bartlett (This used to be commit cda965e908055d45b1c05bc29cc791f7238d2fae) --- source4/param/loadparm.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index f5c0ba51eb..b83d66dfb4 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -126,7 +126,7 @@ struct global char *szTemplateShell; char *szTemplateHomedir; int bWinbindSealedPipes; - char *webapps_directory; + char *swat_directory; int tls_enabled; char *tls_keyfile; char *tls_certfile; @@ -460,7 +460,7 @@ static struct parm_struct parm_table[] = { {"tls cafile", P_STRING, P_GLOBAL, &loadparm.Globals.tls_cafile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"tls crlfile", P_STRING, P_GLOBAL, &loadparm.Globals.tls_crlfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"tls dh params file", P_STRING, P_GLOBAL, &loadparm.Globals.tls_dhpfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"web application directory", P_STRING, P_GLOBAL, &loadparm.Globals.webapps_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"swat directory", P_STRING, P_GLOBAL, &loadparm.Globals.swat_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"large readwrite", P_BOOL, P_GLOBAL, &loadparm.Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, {"server max protocol", P_ENUM, P_GLOBAL, &loadparm.Globals.srv_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, {"server min protocol", P_ENUM, P_GLOBAL, &loadparm.Globals.srv_minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, @@ -549,7 +549,6 @@ static struct parm_struct parm_table[] = { {"modules dir", P_STRING, P_GLOBAL, &loadparm.Globals.szModulesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"pid directory", P_STRING, P_GLOBAL, &loadparm.Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"js include", P_LIST, P_GLOBAL, &loadparm.Globals.jsInclude, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"jsonrpc services directory", P_STRING, P_GLOBAL, &loadparm.Globals.jsonrpcServicesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"setup directory", P_STRING, P_GLOBAL, &loadparm.Globals.szSetupDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"socket address", P_STRING, P_GLOBAL, &loadparm.Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER}, @@ -683,7 +682,7 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_krb5_port, &loadparm.Globals.krb5_port) _PUBLIC_ FN_GLOBAL_INTEGER(lp_kpasswd_port, &loadparm.Globals.kpasswd_port) _PUBLIC_ FN_GLOBAL_INTEGER(lp_web_port, &loadparm.Globals.web_port) _PUBLIC_ FN_GLOBAL_STRING(lp_dos_charset, &dos_charset) -_PUBLIC_ FN_GLOBAL_STRING(lp_webapps_directory, &loadparm.Globals.webapps_directory) +_PUBLIC_ FN_GLOBAL_STRING(lp_swat_directory, &loadparm.Globals.swat_directory) _PUBLIC_ FN_GLOBAL_BOOL(lp_tls_enabled, &loadparm.Globals.tls_enabled) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_keyfile, &loadparm.Globals.tls_keyfile) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_certfile, &loadparm.Globals.tls_certfile) @@ -766,7 +765,6 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_security, &loadparm.Globals.security) _PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &loadparm.Globals.paranoid_server_security) _PUBLIC_ FN_GLOBAL_INTEGER(lp_announce_as, &loadparm.Globals.announce_as) _PUBLIC_ FN_GLOBAL_LIST(lp_js_include, &loadparm.Globals.jsInclude) -_PUBLIC_ FN_GLOBAL_STRING(lp_jsonrpc_services_dir, &loadparm.Globals.jsonrpcServicesDir) _PUBLIC_ FN_LOCAL_STRING(lp_servicename, szService) _PUBLIC_ FN_LOCAL_CONST_STRING(lp_const_servicename, szService) _PUBLIC_ FN_LOCAL_STRING(lp_pathname, szPath) @@ -2429,8 +2427,7 @@ bool loadparm_init(struct loadparm_context *lp_ctx) lp_do_global_parameter(lp_ctx, "krb5 port", "88"); lp_do_global_parameter(lp_ctx, "kpasswd port", "464"); lp_do_global_parameter(lp_ctx, "web port", "901"); - lp_do_global_parameter(lp_ctx, "web application directory", dyn_WEBAPPSDIR); - lp_do_global_parameter(lp_ctx, "jsonrpc services directory", dyn_SERVICESDIR); + lp_do_global_parameter(lp_ctx, "swat directory", dyn_SWATDIR); lp_do_global_parameter(lp_ctx, "nt status support", "True"); -- cgit From dce6620a9e735e3a6bdfce2c01694739d533ba13 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 24 Sep 2007 18:47:50 +0000 Subject: r25308: Remove use of pstring. (This used to be commit 586246137c60c9c2fb49f902b013f2052695dd32) --- source4/param/loadparm.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index b83d66dfb4..f914d706cd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -63,7 +63,6 @@ #include "lib/util/dlinklist.h" #include "param/param.h" #include "param/loadparm.h" -#include "pstring.h" static bool bLoaded = false; @@ -82,7 +81,7 @@ struct param_opt { /* * This structure describes global (ie., server-wide) parameters. */ -struct global +struct loadparm_global { enum server_role server_role; @@ -265,7 +264,7 @@ static struct loadparm_service sDefault = { /* local variables */ static struct loadparm_context { - struct global Globals; + struct loadparm_global Globals; struct loadparm_service **ServicePtrs; int iNumServices; struct loadparm_service *currentService; @@ -1130,7 +1129,6 @@ bool lp_add_home(struct loadparm_context *lp_ctx, const char *user, const char *pszHomedir) { struct loadparm_service *service; - pstring newHomedir; service = add_a_service(lp_ctx, default_service, pszHomename); @@ -1139,14 +1137,11 @@ bool lp_add_home(struct loadparm_context *lp_ctx, if (!(*(default_service->szPath)) || strequal(default_service->szPath, sDefault.szPath)) { - pstrcpy(newHomedir, pszHomedir); + service->szPath = talloc_strdup(service, pszHomedir); } else { - pstrcpy(newHomedir, lp_pathname(default_service)); - string_sub(newHomedir,"%H", pszHomedir, sizeof(newHomedir)); + service->szPath = string_sub_talloc(service, lp_pathname(default_service),"%H", pszHomedir); } - string_set(service, &service->szPath, newHomedir); - if (!(*(service->comment))) { service->comment = talloc_asprintf(service, "Home directory of %s", user); } @@ -1154,7 +1149,7 @@ bool lp_add_home(struct loadparm_context *lp_ctx, service->bBrowseable = default_service->bBrowseable; DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", - pszHomename, user, newHomedir)); + pszHomename, user, service->szPath)); return true; } @@ -2571,8 +2566,9 @@ struct loadparm_service *lp_service(const char *service_name) * The substitution here is used to support %U is * service names */ - serviceName = standard_sub_basic(loadparm.ServicePtrs[iService], - loadparm.ServicePtrs[iService]->szService); + serviceName = standard_sub_basic( + loadparm.ServicePtrs[iService], + loadparm.ServicePtrs[iService]->szService); if (strequal(serviceName, service_name)) return loadparm.ServicePtrs[iService]; } -- cgit From 5e2f9cd8e223368d38d49cf60f199bbd818b8732 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 27 Sep 2007 19:49:53 +0000 Subject: r25379: Use loadparm context parameter in a lot more places. (This used to be commit 091961b13be665061c7e88ab4e2808c015bc403e) --- source4/param/loadparm.c | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index f914d706cd..1582eb6075 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -66,6 +66,8 @@ static bool bLoaded = false; +struct loadparm_context *global_loadparm = NULL; + #define standard_sub_basic talloc_strdup static bool do_parameter(const char *, const char *, void *); @@ -2293,6 +2295,8 @@ bool loadparm_init(struct loadparm_context *lp_ctx) int i; char *myname; + lp_ctx->bInGlobalSection = true; + DEBUG(3, ("Initialising global parameters\n")); for (i = 0; parm_table[i].label; i++) { @@ -2458,6 +2462,8 @@ bool lp_load(void) struct param_opt *data; struct loadparm_context *lp_ctx = &loadparm; + global_loadparm = lp_ctx; + bRetval = false; if (lp_ctx->Globals.param_opt != NULL) { @@ -2509,22 +2515,20 @@ bool lp_load(void) Return the max number of services. ***************************************************************************/ -int lp_numservices(void) +int lp_numservices(struct loadparm_context *lp_ctx) { - return loadparm.iNumServices; + return lp_ctx->iNumServices; } /*************************************************************************** Display the contents of the services array in human-readable form. ***************************************************************************/ -void lp_dump(FILE *f, bool show_defaults, int maxtoprint) +void lp_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults, + int maxtoprint) { - struct loadparm_context *lp_ctx; int iService; - lp_ctx = &loadparm; - if (show_defaults) defaults_saved = false; @@ -2549,28 +2553,30 @@ void lp_dump_one(FILE *f, bool show_defaults, struct loadparm_service *service) } } -struct loadparm_service *lp_servicebynum(int snum) +struct loadparm_service *lp_servicebynum(struct loadparm_context *lp_ctx, + int snum) { - return loadparm.ServicePtrs[snum]; + return lp_ctx->ServicePtrs[snum]; } -struct loadparm_service *lp_service(const char *service_name) +struct loadparm_service *lp_service(struct loadparm_context *lp_ctx, + const char *service_name) { int iService; char *serviceName; - for (iService = loadparm.iNumServices - 1; iService >= 0; iService--) { - if (loadparm.ServicePtrs[iService] && - loadparm.ServicePtrs[iService]->szService) { + for (iService = lp_ctx->iNumServices - 1; iService >= 0; iService--) { + if (lp_ctx->ServicePtrs[iService] && + lp_ctx->ServicePtrs[iService]->szService) { /* * The substitution here is used to support %U is * service names */ serviceName = standard_sub_basic( - loadparm.ServicePtrs[iService], - loadparm.ServicePtrs[iService]->szService); + lp_ctx->ServicePtrs[iService], + lp_ctx->ServicePtrs[iService]->szService); if (strequal(serviceName, service_name)) - return loadparm.ServicePtrs[iService]; + return lp_ctx->ServicePtrs[iService]; } } -- cgit From 3048e9ad654506219b169a934edded388d10fcad Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 27 Sep 2007 23:31:28 +0000 Subject: r25392: Add loadparm context as argument in a couple more places. (This used to be commit c62f51cc28a37959128e78a1f34cfd4c6d3ba069) --- source4/param/loadparm.c | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 1582eb6075..90abc4abcd 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1182,7 +1182,7 @@ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, string_set(service, &service->szPath, tmpdir()); service->comment = talloc_asprintf(service, "%s Service (%s)", - fstype, loadparm.Globals.szServerString); + fstype, lp_ctx->Globals.szServerString); string_set(service, &service->fstype, fstype); service->iMaxConnections = -1; service->bAvailable = true; @@ -1861,7 +1861,8 @@ bool lp_do_global_parameter_var(struct loadparm_context *lp_ctx, parsing code. It sets the parameter then marks the parameter as unable to be modified by smb.conf processing */ -bool lp_set_cmdline(const char *pszParmName, const char *pszParmValue) +bool lp_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName, + const char *pszParmValue) { int parmnum = map_parameter(pszParmName); int i; @@ -1882,7 +1883,7 @@ bool lp_set_cmdline(const char *pszParmName, const char *pszParmValue) /* reset the CMDLINE flag in case this has been called before */ parm_table[parmnum].flags &= ~FLAG_CMDLINE; - if (!lp_do_global_parameter(&loadparm, pszParmName, pszParmValue)) { + if (!lp_do_global_parameter(lp_ctx, pszParmName, pszParmValue)) { return false; } @@ -1902,7 +1903,7 @@ bool lp_set_cmdline(const char *pszParmName, const char *pszParmValue) /* set a option from the commandline in 'a=b' format. Use to support --option */ -bool lp_set_option(const char *option) +bool lp_set_option(struct loadparm_context *lp_ctx, const char *option) { char *p, *s; bool ret; @@ -1920,7 +1921,7 @@ bool lp_set_option(const char *option) *p = 0; - ret = lp_set_cmdline(s, p+1); + ret = lp_set_cmdline(lp_ctx, s, p+1); free(s); return ret; } @@ -2052,7 +2053,7 @@ static bool do_section(const char *pszSectionName, void *userdata) /* issued by the post-processing of a previous section. */ DEBUG(2, ("Processing section \"[%s]\"\n", pszSectionName)); - if ((loadparm.currentService = add_a_service(lp_ctx, &sDefault, + if ((lp_ctx->currentService = add_a_service(lp_ctx, &sDefault, pszSectionName)) == NULL) { DEBUG(0, ("Failed to add a new service\n")); @@ -2099,7 +2100,7 @@ static bool is_default(int i) Display the contents of the global structure. ***************************************************************************/ -static void dump_globals(FILE *f, bool show_defaults) +static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults) { int i; struct param_opt *data; @@ -2116,8 +2117,8 @@ static void dump_globals(FILE *f, bool show_defaults) print_parameter(&parm_table[i], parm_table[i].ptr, f); fprintf(f, "\n"); } - if (loadparm.Globals.param_opt != NULL) { - for (data = loadparm.Globals.param_opt; data; + if (lp_ctx->Globals.param_opt != NULL) { + for (data = lp_ctx->Globals.param_opt; data; data = data->next) { fprintf(f, "\t%s = %s\n", data->key, data->value); } @@ -2168,9 +2169,10 @@ static void dump_a_service(struct loadparm_service * pService, FILE * f) } } -bool lp_dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal) +bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, int snum, char *parm_name, FILE * f, + bool isGlobal) { - struct loadparm_service * pService = loadparm.ServicePtrs[snum]; + struct loadparm_service * pService = lp_ctx->ServicePtrs[snum]; struct parm_struct *parm; void *ptr; @@ -2196,7 +2198,8 @@ bool lp_dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal) Return NULL when out of parameters. ***************************************************************************/ -struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters) +struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, int *i, + int allparameters) { if (snum == -1) { /* do the globals */ @@ -2216,7 +2219,7 @@ struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters) return &parm_table[(*i)++]; } } else { - struct loadparm_service *pService = loadparm.ServicePtrs[snum]; + struct loadparm_service *pService = lp_ctx->ServicePtrs[snum]; for (; parm_table[*i].label; (*i)++) { if (parm_table[*i].class == P_SEPARATOR) @@ -2273,16 +2276,18 @@ bool lp_loaded(void) Unload unused services. ***************************************************************************/ -void lp_killunused(struct smbsrv_connection *smb, bool (*snumused) (struct smbsrv_connection *, int)) +void lp_killunused(struct loadparm_context *lp_ctx, + struct smbsrv_connection *smb, + bool (*snumused) (struct smbsrv_connection *, int)) { int i; - for (i = 0; i < loadparm.iNumServices; i++) { - if (loadparm.ServicePtrs[i] == NULL) + for (i = 0; i < lp_ctx->iNumServices; i++) { + if (lp_ctx->ServicePtrs[i] == NULL) continue; if (!snumused || !snumused(smb, i)) { - talloc_free(loadparm.ServicePtrs[i]); - loadparm.ServicePtrs[i] = NULL; + talloc_free(lp_ctx->ServicePtrs[i]); + lp_ctx->ServicePtrs[i] = NULL; } } } @@ -2532,7 +2537,7 @@ void lp_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults, if (show_defaults) defaults_saved = false; - dump_globals(f, show_defaults); + dump_globals(lp_ctx, f, show_defaults); dump_a_service(&sDefault, f); -- cgit From 37d53832a4623653f706e77985a79d84bd7c6694 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 28 Sep 2007 01:17:46 +0000 Subject: r25398: Parse loadparm context to all lp_*() functions. (This used to be commit 3fcc960839c6e5ca4de2c3c042f12f369ac5f238) --- source4/param/loadparm.c | 260 +++++++++++++++++++++++------------------------ 1 file changed, 126 insertions(+), 134 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 90abc4abcd..cd990ab088 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -66,8 +66,6 @@ static bool bLoaded = false; -struct loadparm_context *global_loadparm = NULL; - #define standard_sub_basic talloc_strdup static bool do_parameter(const char *, const char *, void *); @@ -87,7 +85,7 @@ struct loadparm_global { enum server_role server_role; - char **smb_ports; + const char **smb_ports; char *ncalrpc_dir; char *szLockDir; char *szModulesDir; @@ -96,7 +94,7 @@ struct loadparm_global char *szServerString; char *szAutoServices; char *szPasswdChat; - char *szConfigFile; + const char *szConfigFile; char *szShareBackend; char *szSAM_URL; char *szSECRETS_URL; @@ -104,23 +102,23 @@ struct loadparm_global char *szWINS_CONFIG_URL; char *szWINS_URL; char *szPrivateDir; - char **jsInclude; + const char **jsInclude; char *jsonrpcServicesDir; - char **szPasswordServers; + const char **szPasswordServers; char *szSocketOptions; char *szRealm; - char **szWINSservers; - char **szInterfaces; + const char **szWINSservers; + const char **szInterfaces; char *szSocketAddress; char *szAnnounceVersion; /* This is initialised in init_globals */ char *szWorkgroup; char *szNetbiosName; - char **szNetbiosAliases; + const char **szNetbiosAliases; char *szNetbiosScope; char *szDomainOtherSIDs; - char **szNameResolveOrder; - char **dcerpc_ep_servers; - char **server_services; + const char **szNameResolveOrder; + const char **dcerpc_ep_servers; + const char **server_services; char *ntptr_providor; char *szWinbindSeparator; char *szWinbinddSocketDirectory; @@ -277,13 +275,9 @@ static struct loadparm_context { char *subfname; time_t modtime; } *file_lists; -} loadparm = { - .iNumServices = 0, - .currentService = NULL, - .bInGlobalSection = true, - .ServicePtrs = NULL, - .file_lists = NULL, -}; +} loadparm; + +struct loadparm_context *global_loadparm = &loadparm; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) @@ -386,6 +380,8 @@ static const struct enum_list enum_server_role[] = { static struct parm_struct parm_table[] = { {"Base Options", P_SEP, P_SEPARATOR}, + {"config file", P_STRING, P_GLOBAL, &loadparm.Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, + {"server role", P_ENUM, P_GLOBAL, &loadparm.Globals.server_role, NULL, enum_server_role, FLAG_BASIC}, {"dos charset", P_STRING, P_GLOBAL, &dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -541,7 +537,6 @@ static struct parm_struct parm_table[] = { {"Miscellaneous Options", P_SEP, P_SEPARATOR}, - {"config file", P_STRING, P_GLOBAL, &loadparm.Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, {"share backend", P_STRING, P_GLOBAL, &loadparm.Globals.szShareBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"preload", P_STRING, P_GLOBAL, &loadparm.Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"auto services", P_STRING, P_GLOBAL, &loadparm.Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -648,20 +643,20 @@ static const char *lp_string(const char *s) parameters from the rest of the program are defined */ -#define FN_GLOBAL_STRING(fn_name,ptr) \ - const char *fn_name(void) {return(lp_string(*(char **)(ptr) ? *(char **)(ptr) : ""));} -#define FN_GLOBAL_CONST_STRING(fn_name,ptr) \ - const char *fn_name(void) {return(*(const char **)(ptr) ? *(const char **)(ptr) : "");} -#define FN_GLOBAL_LIST(fn_name,ptr) \ - const char **fn_name(void) {return(*(const char ***)(ptr));} -#define FN_GLOBAL_BOOL(fn_name,ptr) \ - bool fn_name(void) {return((bool)*(int *)(ptr));} +#define FN_GLOBAL_STRING(fn_name,var_name) \ + const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->Globals.var_name ? lp_string(lp_ctx->Globals.var_name) : "";} +#define FN_GLOBAL_CONST_STRING(fn_name,var_name) \ + const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->Globals.var_name ? lp_ctx->Globals.var_name : "";} +#define FN_GLOBAL_LIST(fn_name,var_name) \ + const char **fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->Globals.var_name;} +#define FN_GLOBAL_BOOL(fn_name,var_name) \ + bool fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return false; return lp_ctx->Globals.var_name;} #if 0 /* unused */ #define FN_GLOBAL_CHAR(fn_name,ptr) \ char fn_name(void) {return(*(char *)(ptr));} #endif -#define FN_GLOBAL_INTEGER(fn_name,ptr) \ - int fn_name(void) {return(*(int *)(ptr));} +#define FN_GLOBAL_INTEGER(fn_name,var_name) \ + int fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return 0; return lp_ctx->Globals.var_name;} #define FN_LOCAL_STRING(fn_name,val) \ const char *fn_name(struct loadparm_service *service) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault.val)));} @@ -674,98 +669,95 @@ static const char *lp_string(const char *s) #define FN_LOCAL_INTEGER(fn_name,val) \ int fn_name(struct loadparm_service *service) {return((service != NULL)? service->val : sDefault.val);} -_PUBLIC_ FN_GLOBAL_INTEGER(lp_server_role, &loadparm.Globals.server_role) -_PUBLIC_ FN_GLOBAL_LIST(lp_smb_ports, &loadparm.Globals.smb_ports) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_nbt_port, &loadparm.Globals.nbt_port) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_dgram_port, &loadparm.Globals.dgram_port) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_cldap_port, &loadparm.Globals.cldap_port) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_krb5_port, &loadparm.Globals.krb5_port) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_kpasswd_port, &loadparm.Globals.kpasswd_port) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_web_port, &loadparm.Globals.web_port) -_PUBLIC_ FN_GLOBAL_STRING(lp_dos_charset, &dos_charset) -_PUBLIC_ FN_GLOBAL_STRING(lp_swat_directory, &loadparm.Globals.swat_directory) -_PUBLIC_ FN_GLOBAL_BOOL(lp_tls_enabled, &loadparm.Globals.tls_enabled) -_PUBLIC_ FN_GLOBAL_STRING(lp_tls_keyfile, &loadparm.Globals.tls_keyfile) -_PUBLIC_ FN_GLOBAL_STRING(lp_tls_certfile, &loadparm.Globals.tls_certfile) -_PUBLIC_ FN_GLOBAL_STRING(lp_tls_cafile, &loadparm.Globals.tls_cafile) -_PUBLIC_ FN_GLOBAL_STRING(lp_tls_crlfile, &loadparm.Globals.tls_crlfile) -_PUBLIC_ FN_GLOBAL_STRING(lp_tls_dhpfile, &loadparm.Globals.tls_dhpfile) -_PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, &unix_charset) -_PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, &display_charset) -_PUBLIC_ FN_GLOBAL_STRING(lp_configfile, &loadparm.Globals.szConfigFile) -_PUBLIC_ FN_GLOBAL_STRING(lp_share_backend, &loadparm.Globals.szShareBackend) -_PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, &loadparm.Globals.szSAM_URL) -_PUBLIC_ FN_GLOBAL_STRING(lp_secrets_url, &loadparm.Globals.szSECRETS_URL) -_PUBLIC_ FN_GLOBAL_STRING(lp_spoolss_url, &loadparm.Globals.szSPOOLSS_URL) -_PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, &loadparm.Globals.szWINS_CONFIG_URL) -_PUBLIC_ FN_GLOBAL_STRING(lp_wins_url, &loadparm.Globals.szWINS_URL) -_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbind_separator, &loadparm.Globals.szWinbindSeparator) -_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, &loadparm.Globals.szWinbinddSocketDirectory) -_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_shell, &loadparm.Globals.szTemplateShell) -_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_homedir, &loadparm.Globals.szTemplateHomedir) -_PUBLIC_ FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, &loadparm.Globals.bWinbindSealedPipes) -_PUBLIC_ FN_GLOBAL_STRING(lp_private_dir, &loadparm.Globals.szPrivateDir) -_PUBLIC_ FN_GLOBAL_STRING(lp_serverstring, &loadparm.Globals.szServerString) -_PUBLIC_ FN_GLOBAL_STRING(lp_lockdir, &loadparm.Globals.szLockDir) -_PUBLIC_ FN_GLOBAL_STRING(lp_modulesdir, &loadparm.Globals.szModulesDir) -_PUBLIC_ FN_GLOBAL_STRING(lp_setupdir, &loadparm.Globals.szSetupDir) -_PUBLIC_ FN_GLOBAL_STRING(lp_ncalrpc_dir, &loadparm.Globals.ncalrpc_dir) -_PUBLIC_ FN_GLOBAL_STRING(lp_piddir, &loadparm.Globals.szPidDir) -_PUBLIC_ FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, &loadparm.Globals.dcerpc_ep_servers) -_PUBLIC_ FN_GLOBAL_LIST(lp_server_services, &loadparm.Globals.server_services) -_PUBLIC_ FN_GLOBAL_STRING(lp_ntptr_providor, &loadparm.Globals.ntptr_providor) -_PUBLIC_ FN_GLOBAL_STRING(lp_auto_services, &loadparm.Globals.szAutoServices) -_PUBLIC_ FN_GLOBAL_STRING(lp_passwd_chat, &loadparm.Globals.szPasswdChat) -_PUBLIC_ FN_GLOBAL_LIST(lp_passwordserver, &loadparm.Globals.szPasswordServers) -_PUBLIC_ FN_GLOBAL_LIST(lp_name_resolve_order, &loadparm.Globals.szNameResolveOrder) -_PUBLIC_ FN_GLOBAL_STRING(lp_realm, &loadparm.Globals.szRealm) -_PUBLIC_ FN_GLOBAL_STRING(lp_socket_options, &loadparm.Globals.socket_options) -_PUBLIC_ FN_GLOBAL_STRING(lp_workgroup, &loadparm.Globals.szWorkgroup) -_PUBLIC_ FN_GLOBAL_STRING(lp_netbios_name, &loadparm.Globals.szNetbiosName) -_PUBLIC_ FN_GLOBAL_STRING(lp_netbios_scope, &loadparm.Globals.szNetbiosScope) -_PUBLIC_ FN_GLOBAL_LIST(lp_wins_server_list, &loadparm.Globals.szWINSservers) -_PUBLIC_ FN_GLOBAL_LIST(lp_interfaces, &loadparm.Globals.szInterfaces) -_PUBLIC_ FN_GLOBAL_STRING(lp_socket_address, &loadparm.Globals.szSocketAddress) -_PUBLIC_ FN_GLOBAL_LIST(lp_netbios_aliases, &loadparm.Globals.szNetbiosAliases) - -_PUBLIC_ FN_GLOBAL_BOOL(lp_disable_netbios, &loadparm.Globals.bDisableNetbios) -_PUBLIC_ FN_GLOBAL_BOOL(lp_wins_support, &loadparm.Globals.bWINSsupport) -_PUBLIC_ FN_GLOBAL_BOOL(lp_wins_dns_proxy, &loadparm.Globals.bWINSdnsProxy) -_PUBLIC_ FN_GLOBAL_STRING(lp_wins_hook, &loadparm.Globals.szWINSHook) -_PUBLIC_ FN_GLOBAL_BOOL(lp_local_master, &loadparm.Globals.bLocalMaster) -_PUBLIC_ FN_GLOBAL_BOOL(lp_readraw, &loadparm.Globals.bReadRaw) -_PUBLIC_ FN_GLOBAL_BOOL(lp_large_readwrite, &loadparm.Globals.bLargeReadwrite) -_PUBLIC_ FN_GLOBAL_BOOL(lp_writeraw, &loadparm.Globals.bWriteRaw) -_PUBLIC_ FN_GLOBAL_BOOL(lp_null_passwords, &loadparm.Globals.bNullPasswords) -_PUBLIC_ FN_GLOBAL_BOOL(lp_obey_pam_restrictions, &loadparm.Globals.bObeyPamRestrictions) -_PUBLIC_ FN_GLOBAL_BOOL(lp_encrypted_passwords, &loadparm.Globals.bEncryptPasswords) -_PUBLIC_ FN_GLOBAL_BOOL(lp_time_server, &loadparm.Globals.bTimeServer) -_PUBLIC_ FN_GLOBAL_BOOL(lp_bind_interfaces_only, &loadparm.Globals.bBindInterfacesOnly) -_PUBLIC_ FN_GLOBAL_BOOL(lp_unicode, &loadparm.Globals.bUnicode) -_PUBLIC_ FN_GLOBAL_BOOL(lp_nt_status_support, &loadparm.Globals.bNTStatusSupport) -_PUBLIC_ FN_GLOBAL_BOOL(lp_lanman_auth, &loadparm.Globals.bLanmanAuth) -_PUBLIC_ FN_GLOBAL_BOOL(lp_ntlm_auth, &loadparm.Globals.bNTLMAuth) -_PUBLIC_ FN_GLOBAL_BOOL(lp_client_plaintext_auth, &loadparm.Globals.bClientPlaintextAuth) -_PUBLIC_ FN_GLOBAL_BOOL(lp_client_lanman_auth, &loadparm.Globals.bClientLanManAuth) -_PUBLIC_ FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, &loadparm.Globals.bClientNTLMv2Auth) -_PUBLIC_ FN_GLOBAL_BOOL(lp_client_use_spnego_principal, &loadparm.Globals.client_use_spnego_principal) -_PUBLIC_ FN_GLOBAL_BOOL(lp_host_msdfs, &loadparm.Globals.bHostMSDfs) -_PUBLIC_ FN_GLOBAL_BOOL(lp_unix_extensions, &loadparm.Globals.bUnixExtensions) -_PUBLIC_ FN_GLOBAL_BOOL(lp_use_spnego, &loadparm.Globals.bUseSpnego) -_PUBLIC_ FN_GLOBAL_BOOL(lp_rpc_big_endian, &loadparm.Globals.bRpcBigEndian) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_max_wins_ttl, &loadparm.Globals.max_wins_ttl) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_min_wins_ttl, &loadparm.Globals.min_wins_ttl) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_maxmux, &loadparm.Globals.max_mux) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_max_xmit, &loadparm.Globals.max_xmit) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_passwordlevel, &loadparm.Globals.pwordlevel) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_maxprotocol, &loadparm.Globals.srv_maxprotocol) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_minprotocol, &loadparm.Globals.srv_minprotocol) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_maxprotocol, &loadparm.Globals.cli_maxprotocol) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_minprotocol, &loadparm.Globals.cli_minprotocol) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_security, &loadparm.Globals.security) -_PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, &loadparm.Globals.paranoid_server_security) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_announce_as, &loadparm.Globals.announce_as) -_PUBLIC_ FN_GLOBAL_LIST(lp_js_include, &loadparm.Globals.jsInclude) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_server_role, server_role) +_PUBLIC_ FN_GLOBAL_LIST(lp_smb_ports, smb_ports) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_nbt_port, nbt_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_dgram_port, dgram_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_cldap_port, cldap_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_krb5_port, krb5_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_kpasswd_port, kpasswd_port) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_web_port, web_port) +_PUBLIC_ FN_GLOBAL_STRING(lp_swat_directory, swat_directory) +_PUBLIC_ FN_GLOBAL_BOOL(lp_tls_enabled, tls_enabled) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_keyfile, tls_keyfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_certfile, tls_certfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_cafile, tls_cafile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_crlfile, tls_crlfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_tls_dhpfile, tls_dhpfile) +_PUBLIC_ FN_GLOBAL_STRING(lp_share_backend, szShareBackend) +_PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, szSAM_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_secrets_url, szSECRETS_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_spoolss_url, szSPOOLSS_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, szWINS_CONFIG_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_wins_url, szWINS_URL) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbind_separator, szWinbindSeparator) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, szWinbinddSocketDirectory) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_shell, szTemplateShell) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_homedir, szTemplateHomedir) +_PUBLIC_ FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, bWinbindSealedPipes) +_PUBLIC_ FN_GLOBAL_STRING(lp_private_dir, szPrivateDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_serverstring, szServerString) +_PUBLIC_ FN_GLOBAL_STRING(lp_lockdir, szLockDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_modulesdir, szModulesDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_setupdir, szSetupDir) +_PUBLIC_ FN_GLOBAL_STRING(lp_ncalrpc_dir, ncalrpc_dir) +_PUBLIC_ FN_GLOBAL_STRING(lp_piddir, szPidDir) +_PUBLIC_ FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, dcerpc_ep_servers) +_PUBLIC_ FN_GLOBAL_LIST(lp_server_services, server_services) +_PUBLIC_ FN_GLOBAL_STRING(lp_ntptr_providor, ntptr_providor) +_PUBLIC_ FN_GLOBAL_STRING(lp_auto_services, szAutoServices) +_PUBLIC_ FN_GLOBAL_STRING(lp_passwd_chat, szPasswdChat) +_PUBLIC_ FN_GLOBAL_LIST(lp_passwordserver, szPasswordServers) +_PUBLIC_ FN_GLOBAL_LIST(lp_name_resolve_order, szNameResolveOrder) +_PUBLIC_ FN_GLOBAL_STRING(lp_realm, szRealm) +_PUBLIC_ FN_GLOBAL_STRING(lp_socket_options, socket_options) +_PUBLIC_ FN_GLOBAL_STRING(lp_workgroup, szWorkgroup) +_PUBLIC_ FN_GLOBAL_STRING(lp_netbios_name, szNetbiosName) +_PUBLIC_ FN_GLOBAL_STRING(lp_netbios_scope, szNetbiosScope) +_PUBLIC_ FN_GLOBAL_LIST(lp_wins_server_list, szWINSservers) +_PUBLIC_ FN_GLOBAL_LIST(lp_interfaces, szInterfaces) +_PUBLIC_ FN_GLOBAL_STRING(lp_socket_address, szSocketAddress) +_PUBLIC_ FN_GLOBAL_LIST(lp_netbios_aliases, szNetbiosAliases) + +_PUBLIC_ FN_GLOBAL_BOOL(lp_disable_netbios, bDisableNetbios) +_PUBLIC_ FN_GLOBAL_BOOL(lp_wins_support, bWINSsupport) +_PUBLIC_ FN_GLOBAL_BOOL(lp_wins_dns_proxy, bWINSdnsProxy) +_PUBLIC_ FN_GLOBAL_STRING(lp_wins_hook, szWINSHook) +_PUBLIC_ FN_GLOBAL_STRING(lp_configfile, szConfigFile) +_PUBLIC_ FN_GLOBAL_BOOL(lp_local_master, bLocalMaster) +_PUBLIC_ FN_GLOBAL_BOOL(lp_readraw, bReadRaw) +_PUBLIC_ FN_GLOBAL_BOOL(lp_large_readwrite, bLargeReadwrite) +_PUBLIC_ FN_GLOBAL_BOOL(lp_writeraw, bWriteRaw) +_PUBLIC_ FN_GLOBAL_BOOL(lp_null_passwords, bNullPasswords) +_PUBLIC_ FN_GLOBAL_BOOL(lp_obey_pam_restrictions, bObeyPamRestrictions) +_PUBLIC_ FN_GLOBAL_BOOL(lp_encrypted_passwords, bEncryptPasswords) +_PUBLIC_ FN_GLOBAL_BOOL(lp_time_server, bTimeServer) +_PUBLIC_ FN_GLOBAL_BOOL(lp_bind_interfaces_only, bBindInterfacesOnly) +_PUBLIC_ FN_GLOBAL_BOOL(lp_unicode, bUnicode) +_PUBLIC_ FN_GLOBAL_BOOL(lp_nt_status_support, bNTStatusSupport) +_PUBLIC_ FN_GLOBAL_BOOL(lp_lanman_auth, bLanmanAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_ntlm_auth, bNTLMAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_plaintext_auth, bClientPlaintextAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_lanman_auth, bClientLanManAuth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, bClientNTLMv2Auth) +_PUBLIC_ FN_GLOBAL_BOOL(lp_client_use_spnego_principal, client_use_spnego_principal) +_PUBLIC_ FN_GLOBAL_BOOL(lp_host_msdfs, bHostMSDfs) +_PUBLIC_ FN_GLOBAL_BOOL(lp_unix_extensions, bUnixExtensions) +_PUBLIC_ FN_GLOBAL_BOOL(lp_use_spnego, bUseSpnego) +_PUBLIC_ FN_GLOBAL_BOOL(lp_rpc_big_endian, bRpcBigEndian) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_max_wins_ttl, max_wins_ttl) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_min_wins_ttl, min_wins_ttl) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_maxmux, max_mux) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_max_xmit, max_xmit) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_passwordlevel, pwordlevel) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_maxprotocol, srv_maxprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_minprotocol, srv_minprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_maxprotocol, cli_maxprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_minprotocol, cli_minprotocol) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_security, security) +_PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, paranoid_server_security) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_announce_as, announce_as) +_PUBLIC_ FN_GLOBAL_LIST(lp_js_include, jsInclude) _PUBLIC_ FN_LOCAL_STRING(lp_servicename, szService) _PUBLIC_ FN_LOCAL_CONST_STRING(lp_const_servicename, szService) _PUBLIC_ FN_LOCAL_STRING(lp_pathname, szPath) @@ -792,8 +784,8 @@ _PUBLIC_ FN_LOCAL_INTEGER(lp_create_mask, iCreate_mask) _PUBLIC_ FN_LOCAL_INTEGER(lp_force_create_mode, iCreate_force_mode) _PUBLIC_ FN_LOCAL_INTEGER(lp_dir_mask, iDir_mask) _PUBLIC_ FN_LOCAL_INTEGER(lp_force_dir_mode, iDir_force_mode) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_server_signing, &loadparm.Globals.server_signing) -_PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, &loadparm.Globals.client_signing) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_server_signing, server_signing) +_PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, client_signing) /* local prototypes */ static int map_parameter(const char *pszParmName); @@ -2314,8 +2306,6 @@ bool loadparm_init(struct loadparm_context *lp_ctx) } } - lp_do_global_parameter(lp_ctx, "config file", dyn_CONFIGFILE); - lp_do_global_parameter(lp_ctx, "share backend", "classic"); lp_do_global_parameter(lp_ctx, "server role", "standalone"); @@ -2460,16 +2450,16 @@ bool loadparm_init(struct loadparm_context *lp_ctx) False on failure. ***************************************************************************/ -bool lp_load(void) +bool lp_load(const char *filename) { char *n2; bool bRetval; struct param_opt *data; struct loadparm_context *lp_ctx = &loadparm; - global_loadparm = lp_ctx; + filename = talloc_strdup(talloc_autofree_context(), filename); - bRetval = false; + global_loadparm = lp_ctx; if (lp_ctx->Globals.param_opt != NULL) { struct param_opt *next; @@ -2483,12 +2473,14 @@ bool lp_load(void) if (!loadparm_init(lp_ctx)) return false; + + lp_ctx->Globals.szConfigFile = filename; lp_ctx->bInGlobalSection = true; - n2 = standard_sub_basic(talloc_autofree_context(), lp_configfile()); + n2 = standard_sub_basic(talloc_autofree_context(), lp_ctx->Globals.szConfigFile); DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); - add_to_file_list(lp_ctx, lp_configfile(), n2); + add_to_file_list(lp_ctx, lp_ctx->Globals.szConfigFile, n2); /* We get sections first, so have to start 'behind' to make up */ lp_ctx->currentService = NULL; @@ -2500,7 +2492,7 @@ bool lp_load(void) if (lp_ctx->currentService != NULL) bRetval = service_ok(lp_ctx->currentService); - lp_add_auto_services(lp_ctx, lp_auto_services()); + lp_add_auto_services(lp_ctx, lp_auto_services(lp_ctx)); lp_add_hidden(lp_ctx, "IPC$", "IPC"); lp_add_hidden(lp_ctx, "ADMIN$", "DISK"); @@ -2606,9 +2598,9 @@ const char *volume_label(struct loadparm_service *service) If we are PDC then prefer us as DMB ************************************************************/ -bool lp_domain_logons(void) +bool lp_domain_logons(struct loadparm_context *lp_ctx) { - return (lp_server_role() == ROLE_DOMAIN_CONTROLLER); + return (lp_server_role(lp_ctx) == ROLE_DOMAIN_CONTROLLER); } const char *lp_printername(struct loadparm_service *service) -- cgit From 95157091e342afabf75dbe08886cfc9f0a51a007 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 28 Sep 2007 18:53:26 +0000 Subject: r25410: Use C99 struct initialization. (This used to be commit ad1513bc1bada69a071ae4f477b9952e45622837) --- source4/param/loadparm.c | 63 +++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 33 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index cd990ab088..edd3cec82a 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -227,39 +227,36 @@ struct loadparm_service /* This is a default service used to prime a services structure */ static struct loadparm_service sDefault = { - NULL, /* szService */ - NULL, /* szPath */ - NULL, /* szCopy */ - NULL, /* szInclude */ - NULL, /* szPrintername */ - NULL, /* szHostsallow */ - NULL, /* szHostsdeny */ - NULL, /* comment */ - NULL, /* volume */ - NULL, /* fstype */ - NULL, /* ntvfs_handler */ - 1000, /* iMaxPrintJobs */ - 0, /* iMaxConnections */ - 0, /* iCSCPolicy */ - true, /* bAvailable */ - true, /* bBrowseable */ - true, /* bRead_only */ - false, /* bPrint_ok */ - false, /* bMap_system */ - false, /* bMap_hidden */ - true, /* bMap_archive */ - true, /* bStrictLocking */ - 0744, /* iCreate_mask */ - 0000, /* iCreate_force_mode */ - 0755, /* iDir_mask */ - 0000, /* iDir_force_mode */ - NULL, /* copymap */ - false, /* bMSDfsRoot */ - false, /* bStrictSync */ - false, /* bCIFileSystem */ - NULL, /* Parametric options */ - - "" /* dummy */ + .szService = NULL, + .szPath = NULL, + .szCopy = NULL, + .szInclude = NULL, + .szPrintername = NULL, + .szHostsallow = NULL, + .szHostsdeny = NULL, + .comment = NULL, + .volume = NULL, + .fstype = NULL, + .ntvfs_handler = NULL, + .iMaxPrintJobs = 1000, + .iMaxConnections = 0, + .iCSCPolicy = 0, + .bAvailable = true, + .bBrowseable = true, + .bRead_only = true, + .bPrint_ok = false, + .bMap_system = false, + .bMap_hidden = false, + .bMap_archive = true, + .bStrictLocking = true, + .iCreate_mask = 0744, + .iCreate_force_mode = 0000, + .iDir_mask = 0755, + .iDir_force_mode = 0000, + .copymap = NULL, + .bMSDfsRoot = false, + .bStrictSync = false, + .bCIFileSystem = false, }; /* local variables */ -- cgit From 60a1046c5c5783799bd64fe18e03534670f83d82 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 29 Sep 2007 18:00:19 +0000 Subject: r25430: Add the loadparm context to all parametric options. (This used to be commit fd697d77c9fe67a00939a1f04b35c451316fff58) --- source4/param/loadparm.c | 56 ++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 23 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index edd3cec82a..1d12a2b73c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -798,13 +798,14 @@ static void init_copymap(struct loadparm_service *pservice); /* This is a helper function for parametrical options support. */ /* It returns a pointer to parametrical option value if it exists or NULL otherwise */ /* Actual parametrical functions are quite simple */ -const char *lp_get_parametric(struct loadparm_service *service, +const char *lp_get_parametric(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option) { char *vfskey; struct param_opt *data; - data = (service == NULL ? loadparm.Globals.param_opt : service->param_opt); + data = (service == NULL ? lp_ctx->Globals.param_opt : service->param_opt); asprintf(&vfskey, "%s:%s", type, option); strlower(vfskey); @@ -820,7 +821,7 @@ const char *lp_get_parametric(struct loadparm_service *service, if (service != NULL) { /* Try to fetch the same option but from globals */ /* but only if we are not already working with Globals */ - for (data = loadparm.Globals.param_opt; data; + for (data = lp_ctx->Globals.param_opt; data; data = data->next) { if (strcmp(data->key, vfskey) == 0) { free(vfskey); @@ -902,10 +903,11 @@ static bool lp_bool(const char *s) /* Parametric option has following syntax: 'Type: option = value' */ /* Returned value is allocated in 'lp_talloc' context */ -const char *lp_parm_string(struct loadparm_service *service, const char *type, +const char *lp_parm_string(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option) { - const char *value = lp_get_parametric(service, type, option); + const char *value = lp_get_parametric(lp_ctx, service, type, option); if (value) return lp_string(value); @@ -917,11 +919,12 @@ const char *lp_parm_string(struct loadparm_service *service, const char *type, /* Parametric option has following syntax: 'Type: option = value' */ /* Returned value is allocated in 'lp_talloc' context */ -const char **lp_parm_string_list(struct loadparm_service *service, +const char **lp_parm_string_list(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, const char *separator) { - const char *value = lp_get_parametric(service, type, option); + const char *value = lp_get_parametric(lp_ctx, service, type, option); if (value) return str_list_make(talloc_autofree_context(), value, @@ -933,10 +936,11 @@ const char **lp_parm_string_list(struct loadparm_service *service, /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -int lp_parm_int(struct loadparm_service *service, const char *type, +int lp_parm_int(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, int default_v) { - const char *value = lp_get_parametric(service, type, option); + const char *value = lp_get_parametric(lp_ctx, service, type, option); if (value) return lp_int(value); @@ -949,12 +953,13 @@ int lp_parm_int(struct loadparm_service *service, const char *type, * Parametric option has following syntax: 'Type: option = value'. */ -int lp_parm_bytes(struct loadparm_service *service, const char *type, +int lp_parm_bytes(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, int default_v) { uint64_t bval; - const char *value = lp_get_parametric(service, type, option); + const char *value = lp_get_parametric(lp_ctx, service, type, option); if (value && conv_str_size(value, &bval)) { if (bval <= INT_MAX) { @@ -968,10 +973,11 @@ int lp_parm_bytes(struct loadparm_service *service, const char *type, /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -unsigned long lp_parm_ulong(struct loadparm_service *service, const char *type, +unsigned long lp_parm_ulong(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, unsigned long default_v) { - const char *value = lp_get_parametric(service, type, option); + const char *value = lp_get_parametric(lp_ctx, service, type, option); if (value) return lp_ulong(value); @@ -980,10 +986,11 @@ unsigned long lp_parm_ulong(struct loadparm_service *service, const char *type, } -double lp_parm_double(struct loadparm_service *service, const char *type, +double lp_parm_double(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, double default_v) { - const char *value = lp_get_parametric(service, type, option); + const char *value = lp_get_parametric(lp_ctx, service, type, option); if (value) return lp_double(value); @@ -994,10 +1001,11 @@ double lp_parm_double(struct loadparm_service *service, const char *type, /* Return parametric option from a given service. Type is a part of option before ':' */ /* Parametric option has following syntax: 'Type: option = value' */ -bool lp_parm_bool(struct loadparm_service *service, const char *type, +bool lp_parm_bool(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, bool default_v) { - const char *value = lp_get_parametric(service, type, option); + const char *value = lp_get_parametric(lp_ctx, service, type, option); if (value) return lp_bool(value); @@ -1569,7 +1577,8 @@ static void init_copymap(struct loadparm_service *pservice) /*************************************************************************** Process a parametric option ***************************************************************************/ -static bool lp_do_parameter_parametric(struct loadparm_service *service, +static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *pszParmName, const char *pszParmValue, int flags) { @@ -1587,7 +1596,7 @@ static bool lp_do_parameter_parametric(struct loadparm_service *service, strlower(name); if (service == NULL) { - data = loadparm.Globals.param_opt; + data = lp_ctx->Globals.param_opt; mem_ctx = talloc_autofree_context(); } else { data = service->param_opt; @@ -1619,7 +1628,7 @@ static bool lp_do_parameter_parametric(struct loadparm_service *service, paramo->value = talloc_strdup(paramo, pszParmValue); paramo->flags = flags; if (service == NULL) { - DLIST_ADD(loadparm.Globals.param_opt, paramo); + DLIST_ADD(lp_ctx->Globals.param_opt, paramo); } else { DLIST_ADD(service->param_opt, paramo); } @@ -1734,7 +1743,7 @@ bool lp_do_global_parameter(struct loadparm_context *lp_ctx, if (parmnum < 0) { if (strchr(pszParmName, ':')) { - return lp_do_parameter_parametric(NULL, pszParmName, pszParmValue, 0); + return lp_do_parameter_parametric(lp_ctx, NULL, pszParmName, pszParmValue, 0); } DEBUG(0, ("Ignoring unknown parameter \"%s\"\n", pszParmName)); return true; @@ -1768,7 +1777,7 @@ bool lp_do_service_parameter(struct loadparm_context *lp_ctx, if (parmnum < 0) { if (strchr(pszParmName, ':')) { - return lp_do_parameter_parametric(service, pszParmName, pszParmValue, 0); + return lp_do_parameter_parametric(lp_ctx, service, pszParmName, pszParmValue, 0); } DEBUG(0, ("Ignoring unknown parameter \"%s\"\n", pszParmName)); return true; @@ -1861,7 +1870,8 @@ bool lp_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName, if (parmnum < 0 && strchr(pszParmName, ':')) { /* set a parametric option */ - return lp_do_parameter_parametric(NULL, pszParmName, pszParmValue, FLAG_CMDLINE); + return lp_do_parameter_parametric(lp_ctx, NULL, pszParmName, + pszParmValue, FLAG_CMDLINE); } if (parmnum < 0) { -- cgit From ce7bccef5fa41d5445a97f32daf387c9ed85030e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 1 Oct 2007 19:46:00 +0000 Subject: r25449: Add convenience function for opening the default smb.conf for openchange. (This used to be commit 5f023ef7a4046442a96768b926546f93735c9666) --- source4/param/loadparm.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 1d12a2b73c..39b02f0ccb 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2452,6 +2452,11 @@ bool loadparm_init(struct loadparm_context *lp_ctx) return true; } +_PUBLIC_ _DEPRECATED_ bool lp_load_default(void) +{ + return lp_load(dyn_CONFIGFILE); +} + /*************************************************************************** Load the services array from the services file. Return True on success, False on failure. -- cgit From 5ecd526d1ca41821118165af039d16d0e729b59d Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 1 Oct 2007 23:26:37 +0000 Subject: r25456: Avoid externs for charsets for now - it breaks openchange. (This used to be commit 836431af83674018e9700f9da92ce251d108687a) --- source4/param/loadparm.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 39b02f0ccb..a8a0a0393f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -87,6 +87,9 @@ struct loadparm_global const char **smb_ports; char *ncalrpc_dir; + char *dos_charset; + char *unix_charset; + char *display_charset; char *szLockDir; char *szModulesDir; char *szPidDir; @@ -381,10 +384,10 @@ static struct parm_struct parm_table[] = { {"server role", P_ENUM, P_GLOBAL, &loadparm.Globals.server_role, NULL, enum_server_role, FLAG_BASIC}, - {"dos charset", P_STRING, P_GLOBAL, &dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"unix charset", P_STRING, P_GLOBAL, &unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"dos charset", P_STRING, P_GLOBAL, &loadparm.Globals.dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"unix charset", P_STRING, P_GLOBAL, &loadparm.Globals.unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"ncalrpc dir", P_STRING, P_GLOBAL, &loadparm.Globals.ncalrpc_dir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"display charset", P_STRING, P_GLOBAL, &display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"display charset", P_STRING, P_GLOBAL, &loadparm.Globals.display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_HIDE}, @@ -698,6 +701,9 @@ _PUBLIC_ FN_GLOBAL_STRING(lp_lockdir, szLockDir) _PUBLIC_ FN_GLOBAL_STRING(lp_modulesdir, szModulesDir) _PUBLIC_ FN_GLOBAL_STRING(lp_setupdir, szSetupDir) _PUBLIC_ FN_GLOBAL_STRING(lp_ncalrpc_dir, ncalrpc_dir) +_PUBLIC_ FN_GLOBAL_STRING(lp_dos_charset, dos_charset) +_PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, unix_charset) +_PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, display_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_piddir, szPidDir) _PUBLIC_ FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, dcerpc_ep_servers) _PUBLIC_ FN_GLOBAL_LIST(lp_server_services, server_services) -- cgit From 30047a95432984c8c450b8a819b9f742bdedf66b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 2 Oct 2007 13:00:33 +0000 Subject: r25460: use common structure in param/generic.c (This used to be commit 01ce5448f44ddda7ec864d812fe23f0fa68d1561) --- source4/param/loadparm.c | 7 ------- 1 file changed, 7 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index a8a0a0393f..78cd6adb0c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -71,13 +71,6 @@ static bool bLoaded = false; static bool do_parameter(const char *, const char *, void *); static bool defaults_saved = false; -struct param_opt { - struct param_opt *prev, *next; - char *key; - char *value; - int flags; -}; - /* * This structure describes global (ie., server-wide) parameters. */ -- cgit From f5f6d6d2ab09aa0d0f0b659a07f9fe81920eeca2 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 2 Oct 2007 13:30:10 +0000 Subject: r25461: Remove section headers in loadparm - trying to keep data and metadata separate and this should help when refactoring loadparm later on. (This used to be commit e15fd412f954efb0bb91b32ec854b9b312516ea1) --- source4/param/loadparm.c | 53 +++++++----------------------------------------- 1 file changed, 7 insertions(+), 46 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 78cd6adb0c..809a9173c4 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -318,10 +318,12 @@ static const struct enum_list enum_bool_auto[] = { }; /* Client-side offline caching policy types */ -#define CSC_POLICY_MANUAL 0 -#define CSC_POLICY_DOCUMENTS 1 -#define CSC_POLICY_PROGRAMS 2 -#define CSC_POLICY_DISABLE 3 +enum csc_policy { + CSC_POLICY_MANUAL=0, + CSC_POLICY_DOCUMENTS=1, + CSC_POLICY_PROGRAMS=2, + CSC_POLICY_DISABLE=3 +}; static const struct enum_list enum_csc_policy[] = { {CSC_POLICY_MANUAL, "manual"}, @@ -366,13 +368,11 @@ static const struct enum_list enum_server_role[] = { * is implied in current control logic. This may change at some later time. A * flag value of 0 means - show as development option only. * - * The FLAG_HIDE is explicit. Paramters set this way do NOT appear in any edit + * The FLAG_HIDE is explicit. Parameters set this way do NOT appear in any edit * screen in SWAT. This is used to exclude parameters as well as to squash all * parameters that have been duplicated by pseudonyms. */ static struct parm_struct parm_table[] = { - {"Base Options", P_SEP, P_SEPARATOR}, - {"config file", P_STRING, P_GLOBAL, &loadparm.Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, {"server role", P_ENUM, P_GLOBAL, &loadparm.Globals.server_role, NULL, enum_server_role, FLAG_BASIC}, @@ -397,8 +397,6 @@ static struct parm_struct parm_table[] = { {"dcerpc endpoint servers", P_LIST, P_GLOBAL, &loadparm.Globals.dcerpc_ep_servers, NULL, NULL, FLAG_ADVANCED}, {"server services", P_LIST, P_GLOBAL, &loadparm.Globals.server_services, NULL, NULL, FLAG_ADVANCED}, - {"Security Options", P_SEP, P_SEPARATOR}, - {"security", P_ENUM, P_GLOBAL, &loadparm.Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"encrypt passwords", P_BOOL, P_GLOBAL, &loadparm.Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"null passwords", P_BOOL, P_GLOBAL, &loadparm.Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -429,14 +427,10 @@ static struct parm_struct parm_table[] = { {"hosts allow", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"Logging Options", P_SEP, P_SEPARATOR}, - {"log level", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"debuglevel", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_HIDE}, {"log file", P_STRING, P_GLOBAL, &logfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"Protocol Options", P_SEP, P_SEPARATOR}, - {"smb ports", P_LIST, P_GLOBAL, &loadparm.Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"nbt port", P_INTEGER, P_GLOBAL, &loadparm.Globals.nbt_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"dgram port", P_INTEGER, P_GLOBAL, &loadparm.Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -478,8 +472,6 @@ static struct parm_struct parm_table[] = { {"client signing", P_ENUM, P_GLOBAL, &loadparm.Globals.client_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, {"rpc big endian", P_BOOL, P_GLOBAL, &loadparm.Globals.bRpcBigEndian, NULL, NULL, FLAG_DEVELOPER}, - {"Tuning Options", P_SEP, P_SEPARATOR}, - {"max connections", P_INTEGER, P_LOCAL, &sDefault.iMaxConnections, NULL, NULL, FLAG_SHARE}, {"paranoid server security", P_BOOL, P_GLOBAL, &loadparm.Globals.paranoid_server_security, NULL, NULL, FLAG_DEVELOPER}, {"socket options", P_STRING, P_GLOBAL, &loadparm.Globals.socket_options, NULL, NULL, FLAG_DEVELOPER}, @@ -487,8 +479,6 @@ static struct parm_struct parm_table[] = { {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, {"case insensitive filesystem", P_BOOL, P_LOCAL, &sDefault.bCIFileSystem, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, - {"Printing Options", P_SEP, P_SEPARATOR}, - {"max print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxPrintJobs, NULL, NULL, FLAG_PRINT}, {"printable", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_PRINT}, {"print ok", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_HIDE}, @@ -496,40 +486,25 @@ static struct parm_struct parm_table[] = { {"printer name", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_PRINT}, {"printer", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_HIDE}, - {"Filename Handling", P_SEP, P_SEPARATOR}, - {"map system", P_BOOL, P_LOCAL, &sDefault.bMap_system, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"map hidden", P_BOOL, P_LOCAL, &sDefault.bMap_hidden, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, {"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"Domain Options", P_SEP, P_SEPARATOR}, - - {"Logon Options", P_SEP, P_SEPARATOR}, - - - {"Browse Options", P_SEP, P_SEPARATOR}, - {"preferred master", P_ENUM, P_GLOBAL, &loadparm.Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"prefered master", P_ENUM, P_GLOBAL, &loadparm.Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_HIDE}, {"local master", P_BOOL, P_GLOBAL, &loadparm.Globals.bLocalMaster, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, {"browseable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_HIDE}, - {"WINS Options", P_SEP, P_SEPARATOR}, - {"wins server", P_LIST, P_GLOBAL, &loadparm.Globals.szWINSservers, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"wins support", P_BOOL, P_GLOBAL, &loadparm.Globals.bWINSsupport, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"dns proxy", P_BOOL, P_GLOBAL, &loadparm.Globals.bWINSdnsProxy, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"wins hook", P_STRING, P_GLOBAL, &loadparm.Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED}, - {"Locking Options", P_SEP, P_SEPARATOR}, - {"csc policy", P_ENUM, P_LOCAL, &sDefault.iCSCPolicy, NULL, enum_csc_policy, FLAG_SHARE | FLAG_GLOBAL}, {"strict locking", P_BOOL, P_LOCAL, &sDefault.bStrictLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"Miscellaneous Options", P_SEP, P_SEPARATOR}, - {"share backend", P_STRING, P_GLOBAL, &loadparm.Globals.szShareBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"preload", P_STRING, P_GLOBAL, &loadparm.Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"auto services", P_STRING, P_GLOBAL, &loadparm.Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -1716,8 +1691,6 @@ static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, return false; } break; - case P_SEP: - break; } if (parm_table[parmnum].flags & FLAG_DEFAULT) { @@ -1975,8 +1948,6 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) fprintf(f, "%s", *(char **)ptr); } break; - case P_SEP: - break; } } @@ -2010,8 +1981,6 @@ static bool equal_parameter(parm_type type, void *ptr1, void *ptr2) p2 = NULL; return (p1 == p2 || strequal(p1, p2)); } - case P_SEP: - break; } return false; } @@ -2088,8 +2057,6 @@ static bool is_default(int i) case P_ENUM: return parm_table[i].def.ivalue == *(int *)parm_table[i].ptr; - case P_SEP: - break; } return false; } @@ -2202,9 +2169,6 @@ struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, if (snum == -1) { /* do the globals */ for (; parm_table[*i].label; (*i)++) { - if (parm_table[*i].class == P_SEPARATOR) - return &parm_table[(*i)++]; - if (!parm_table[*i].ptr || (*parm_table[*i].label == '-')) continue; @@ -2220,9 +2184,6 @@ struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, struct loadparm_service *pService = lp_ctx->ServicePtrs[snum]; for (; parm_table[*i].label; (*i)++) { - if (parm_table[*i].class == P_SEPARATOR) - return &parm_table[(*i)++]; - if (parm_table[*i].class == P_LOCAL && parm_table[*i].ptr && (*parm_table[*i].label != '-') && -- cgit From 8ffc4c1f97bf40cf19812b086cab2c48ff9aed9d Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 2 Oct 2007 14:29:20 +0000 Subject: r25462: Remove refernece to categories from js as well. (This used to be commit 12d7cccd7c8c632e2d49e9c21e0e139366ffe2c3) --- source4/param/loadparm.c | 62 ++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 809a9173c4..043e7d2ba8 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -120,9 +120,9 @@ struct loadparm_global char *szWinbinddSocketDirectory; char *szTemplateShell; char *szTemplateHomedir; - int bWinbindSealedPipes; + bool bWinbindSealedPipes; char *swat_directory; - int tls_enabled; + bool tls_enabled; char *tls_keyfile; char *tls_certfile; char *tls_cafile; @@ -135,8 +135,8 @@ struct loadparm_global int srv_minprotocol; int cli_maxprotocol; int cli_minprotocol; - int security; - int paranoid_server_security; + enum security_types security; + bool paranoid_server_security; int max_wins_ttl; int min_wins_ttl; int announce_as; /* This is initialised in init_globals */ @@ -147,35 +147,35 @@ struct loadparm_global int kpasswd_port; int web_port; char *socket_options; - int bWINSsupport; - int bWINSdnsProxy; + bool bWINSsupport; + bool bWINSdnsProxy; char *szWINSHook; - int bLocalMaster; - int bPreferredMaster; - int bEncryptPasswords; - int bNullPasswords; - int bObeyPamRestrictions; - int bLargeReadwrite; - int bReadRaw; - int bWriteRaw; - int bTimeServer; - int bBindInterfacesOnly; - int bNTSmbSupport; - int bNTStatusSupport; - int bLanmanAuth; - int bNTLMAuth; - int bUseSpnego; + bool bLocalMaster; + bool bPreferredMaster; + bool bEncryptPasswords; + bool bNullPasswords; + bool bObeyPamRestrictions; + bool bLargeReadwrite; + bool bReadRaw; + bool bWriteRaw; + bool bTimeServer; + bool bBindInterfacesOnly; + bool bNTSmbSupport; + bool bNTStatusSupport; + bool bLanmanAuth; + bool bNTLMAuth; + bool bUseSpnego; int server_signing; int client_signing; - int bClientPlaintextAuth; - int bClientLanManAuth; - int bClientNTLMv2Auth; - int client_use_spnego_principal; - int bHostMSDfs; - int bUnicode; - int bUnixExtensions; - int bDisableNetbios; - int bRpcBigEndian; + bool bClientPlaintextAuth; + bool bClientLanManAuth; + bool bClientNTLMv2Auth; + bool client_use_spnego_principal; + bool bHostMSDfs; + bool bUnicode; + bool bUnixExtensions; + bool bDisableNetbios; + bool bRpcBigEndian; struct param_opt *param_opt; }; @@ -2033,7 +2033,7 @@ static bool do_section(const char *pszSectionName, void *userdata) /*************************************************************************** - Determine if a partcular base parameter is currentl set to the default value. + Determine if a particular base parameter is currentl set to the default value. ***************************************************************************/ static bool is_default(int i) -- cgit From 650abae845accfa4ef38b388408b76607ce33fe8 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 2 Oct 2007 15:02:19 +0000 Subject: r25463: revert accidently committed type changes for now, broke the build. (This used to be commit ce4fbb4f44a5f84cf516b4de9861e3fd498cc6c4) --- source4/param/loadparm.c | 62 ++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 043e7d2ba8..809a9173c4 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -120,9 +120,9 @@ struct loadparm_global char *szWinbinddSocketDirectory; char *szTemplateShell; char *szTemplateHomedir; - bool bWinbindSealedPipes; + int bWinbindSealedPipes; char *swat_directory; - bool tls_enabled; + int tls_enabled; char *tls_keyfile; char *tls_certfile; char *tls_cafile; @@ -135,8 +135,8 @@ struct loadparm_global int srv_minprotocol; int cli_maxprotocol; int cli_minprotocol; - enum security_types security; - bool paranoid_server_security; + int security; + int paranoid_server_security; int max_wins_ttl; int min_wins_ttl; int announce_as; /* This is initialised in init_globals */ @@ -147,35 +147,35 @@ struct loadparm_global int kpasswd_port; int web_port; char *socket_options; - bool bWINSsupport; - bool bWINSdnsProxy; + int bWINSsupport; + int bWINSdnsProxy; char *szWINSHook; - bool bLocalMaster; - bool bPreferredMaster; - bool bEncryptPasswords; - bool bNullPasswords; - bool bObeyPamRestrictions; - bool bLargeReadwrite; - bool bReadRaw; - bool bWriteRaw; - bool bTimeServer; - bool bBindInterfacesOnly; - bool bNTSmbSupport; - bool bNTStatusSupport; - bool bLanmanAuth; - bool bNTLMAuth; - bool bUseSpnego; + int bLocalMaster; + int bPreferredMaster; + int bEncryptPasswords; + int bNullPasswords; + int bObeyPamRestrictions; + int bLargeReadwrite; + int bReadRaw; + int bWriteRaw; + int bTimeServer; + int bBindInterfacesOnly; + int bNTSmbSupport; + int bNTStatusSupport; + int bLanmanAuth; + int bNTLMAuth; + int bUseSpnego; int server_signing; int client_signing; - bool bClientPlaintextAuth; - bool bClientLanManAuth; - bool bClientNTLMv2Auth; - bool client_use_spnego_principal; - bool bHostMSDfs; - bool bUnicode; - bool bUnixExtensions; - bool bDisableNetbios; - bool bRpcBigEndian; + int bClientPlaintextAuth; + int bClientLanManAuth; + int bClientNTLMv2Auth; + int client_use_spnego_principal; + int bHostMSDfs; + int bUnicode; + int bUnixExtensions; + int bDisableNetbios; + int bRpcBigEndian; struct param_opt *param_opt; }; @@ -2033,7 +2033,7 @@ static bool do_section(const char *pszSectionName, void *userdata) /*************************************************************************** - Determine if a particular base parameter is currentl set to the default value. + Determine if a partcular base parameter is currentl set to the default value. ***************************************************************************/ static bool is_default(int i) -- cgit From 9b1fd7f52dee9b24254543c0bc5a3e080edefa76 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 2 Oct 2007 18:40:37 +0000 Subject: r25471: Use macros for loadparm field names, should make migration to offsets rather than pointers easier later on. (This used to be commit 3f98a97ac327166e3451cfdcd857d693b5a2ec3c) --- source4/param/loadparm.c | 282 ++++++++++++++++++++++++----------------------- 1 file changed, 143 insertions(+), 139 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 809a9173c4..c54932aa47 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -372,166 +372,170 @@ static const struct enum_list enum_server_role[] = { * screen in SWAT. This is used to exclude parameters as well as to squash all * parameters that have been duplicated by pseudonyms. */ + +#define GLOBAL_VAR(name) &loadparm.Globals.name +#define LOCAL_VAR(name) &sDefault.name + static struct parm_struct parm_table[] = { - {"config file", P_STRING, P_GLOBAL, &loadparm.Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, - - {"server role", P_ENUM, P_GLOBAL, &loadparm.Globals.server_role, NULL, enum_server_role, FLAG_BASIC}, - - {"dos charset", P_STRING, P_GLOBAL, &loadparm.Globals.dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"unix charset", P_STRING, P_GLOBAL, &loadparm.Globals.unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ncalrpc dir", P_STRING, P_GLOBAL, &loadparm.Globals.ncalrpc_dir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"display charset", P_STRING, P_GLOBAL, &loadparm.Globals.display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_HIDE}, - {"workgroup", P_USTRING, P_GLOBAL, &loadparm.Globals.szWorkgroup, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"realm", P_STRING, P_GLOBAL, &loadparm.Globals.szRealm, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"netbios name", P_USTRING, P_GLOBAL, &loadparm.Globals.szNetbiosName, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"netbios aliases", P_LIST, P_GLOBAL, &loadparm.Globals.szNetbiosAliases, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"netbios scope", P_USTRING, P_GLOBAL, &loadparm.Globals.szNetbiosScope, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"server string", P_STRING, P_GLOBAL, &loadparm.Globals.szServerString, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"interfaces", P_LIST, P_GLOBAL, &loadparm.Globals.szInterfaces, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"bind interfaces only", P_BOOL, P_GLOBAL, &loadparm.Globals.bBindInterfacesOnly, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"ntvfs handler", P_LIST, P_LOCAL, &sDefault.ntvfs_handler, NULL, NULL, FLAG_ADVANCED}, - {"ntptr providor", P_STRING, P_GLOBAL, &loadparm.Globals.ntptr_providor, NULL, NULL, FLAG_ADVANCED}, - {"dcerpc endpoint servers", P_LIST, P_GLOBAL, &loadparm.Globals.dcerpc_ep_servers, NULL, NULL, FLAG_ADVANCED}, - {"server services", P_LIST, P_GLOBAL, &loadparm.Globals.server_services, NULL, NULL, FLAG_ADVANCED}, - - {"security", P_ENUM, P_GLOBAL, &loadparm.Globals.security, NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"encrypt passwords", P_BOOL, P_GLOBAL, &loadparm.Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"null passwords", P_BOOL, P_GLOBAL, &loadparm.Globals.bNullPasswords, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"obey pam restrictions", P_BOOL, P_GLOBAL, &loadparm.Globals.bObeyPamRestrictions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"password server", P_LIST, P_GLOBAL, &loadparm.Globals.szPasswordServers, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"sam database", P_STRING, P_GLOBAL, &loadparm.Globals.szSAM_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"secrets database", P_STRING, P_GLOBAL, &loadparm.Globals.szSECRETS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"spoolss database", P_STRING, P_GLOBAL, &loadparm.Globals.szSPOOLSS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"wins config database", P_STRING, P_GLOBAL, &loadparm.Globals.szWINS_CONFIG_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"wins database", P_STRING, P_GLOBAL, &loadparm.Globals.szWINS_URL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"private dir", P_STRING, P_GLOBAL, &loadparm.Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"passwd chat", P_STRING, P_GLOBAL, &loadparm.Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"password level", P_INTEGER, P_GLOBAL, &loadparm.Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"lanman auth", P_BOOL, P_GLOBAL, &loadparm.Globals.bLanmanAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ntlm auth", P_BOOL, P_GLOBAL, &loadparm.Globals.bNTLMAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client NTLMv2 auth", P_BOOL, P_GLOBAL, &loadparm.Globals.bClientNTLMv2Auth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client lanman auth", P_BOOL, P_GLOBAL, &loadparm.Globals.bClientLanManAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client plaintext auth", P_BOOL, P_GLOBAL, &loadparm.Globals.bClientPlaintextAuth, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client use spnego principal", P_BOOL, P_GLOBAL, &loadparm.Globals.client_use_spnego_principal, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"config file", P_STRING, P_GLOBAL, GLOBAL_VAR(szConfigFile), NULL, NULL, FLAG_HIDE}, + + {"server role", P_ENUM, P_GLOBAL, GLOBAL_VAR(server_role), NULL, enum_server_role, FLAG_BASIC}, + + {"dos charset", P_STRING, P_GLOBAL, GLOBAL_VAR(dos_charset), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"unix charset", P_STRING, P_GLOBAL, GLOBAL_VAR(unix_charset), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ncalrpc dir", P_STRING, P_GLOBAL, GLOBAL_VAR(ncalrpc_dir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"display charset", P_STRING, P_GLOBAL, GLOBAL_VAR(display_charset), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"comment", P_STRING, P_LOCAL, LOCAL_VAR(comment), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"path", P_STRING, P_LOCAL, LOCAL_VAR(szPath), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"directory", P_STRING, P_LOCAL, LOCAL_VAR(szPath), NULL, NULL, FLAG_HIDE}, + {"workgroup", P_USTRING, P_GLOBAL, GLOBAL_VAR(szWorkgroup), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"realm", P_STRING, P_GLOBAL, GLOBAL_VAR(szRealm), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"netbios name", P_USTRING, P_GLOBAL, GLOBAL_VAR(szNetbiosName), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"netbios aliases", P_LIST, P_GLOBAL, GLOBAL_VAR(szNetbiosAliases), NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"netbios scope", P_USTRING, P_GLOBAL, GLOBAL_VAR(szNetbiosScope), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"server string", P_STRING, P_GLOBAL, GLOBAL_VAR(szServerString), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"interfaces", P_LIST, P_GLOBAL, GLOBAL_VAR(szInterfaces), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"bind interfaces only", P_BOOL, P_GLOBAL, GLOBAL_VAR(bBindInterfacesOnly), NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"ntvfs handler", P_LIST, P_LOCAL, LOCAL_VAR(ntvfs_handler), NULL, NULL, FLAG_ADVANCED}, + {"ntptr providor", P_STRING, P_GLOBAL, GLOBAL_VAR(ntptr_providor), NULL, NULL, FLAG_ADVANCED}, + {"dcerpc endpoint servers", P_LIST, P_GLOBAL, GLOBAL_VAR()dcerpc_ep_servers, NULL, NULL, FLAG_ADVANCED}, + {"server services", P_LIST, P_GLOBAL, GLOBAL_VAR(server_services), NULL, NULL, FLAG_ADVANCED}, + + {"security", P_ENUM, P_GLOBAL, GLOBAL_VAR(security), NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"encrypt passwords", P_BOOL, P_GLOBAL, GLOBAL_VAR(bEncryptPasswords), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"null passwords", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNullPasswords), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"obey pam restrictions", P_BOOL, P_GLOBAL, GLOBAL_VAR(bObeyPamRestrictions), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"password server", P_LIST, P_GLOBAL, GLOBAL_VAR(szPasswordServers), NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"sam database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSAM_URL), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"secrets database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSECRETS_URL), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"spoolss database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSPOOLSS_URL), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"wins config database", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINS_CONFIG_URL), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"wins database", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINS_URL), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"private dir", P_STRING, P_GLOBAL, GLOBAL_VAR(szPrivateDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"passwd chat", P_STRING, P_GLOBAL, GLOBAL_VAR(szPasswdChat), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"password level", P_INTEGER, P_GLOBAL, GLOBAL_VAR(pwordlevel), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"lanman auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bLanmanAuth), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"ntlm auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNTLMAuth), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client NTLMv2 auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientNTLMv2Auth), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client lanman auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientLanManAuth), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client plaintext auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientPlaintextAuth), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"client use spnego principal", P_BOOL, P_GLOBAL, GLOBAL_VAR(client_use_spnego_principal), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"read only", P_BOOL, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE}, + {"read only", P_BOOL, P_LOCAL, LOCAL_VAR(bRead_only), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE}, - {"create mask", P_OCTAL, P_LOCAL, &sDefault.iCreate_mask, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, - {"force create mode", P_OCTAL, P_LOCAL, &sDefault.iCreate_force_mode, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, - {"directory mask", P_OCTAL, P_LOCAL, &sDefault.iDir_mask, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, - {"force directory mode", P_OCTAL, P_LOCAL, &sDefault.iDir_force_mode, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, + {"create mask", P_OCTAL, P_LOCAL, LOCAL_VAR(iCreate_mask), NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, + {"force create mode", P_OCTAL, P_LOCAL, LOCAL_VAR(iCreate_force_mode), NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, + {"directory mask", P_OCTAL, P_LOCAL, LOCAL_VAR(iDir_mask), NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, + {"force directory mode", P_OCTAL, P_LOCAL, LOCAL_VAR(iDir_force_mode), NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, - {"hosts allow", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"hosts allow", P_LIST, P_LOCAL, LOCAL_VAR(szHostsallow), NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"hosts deny", P_LIST, P_LOCAL, LOCAL_VAR(szHostsdeny), NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"log level", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"debuglevel", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_HIDE}, {"log file", P_STRING, P_GLOBAL, &logfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"smb ports", P_LIST, P_GLOBAL, &loadparm.Globals.smb_ports, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"nbt port", P_INTEGER, P_GLOBAL, &loadparm.Globals.nbt_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"dgram port", P_INTEGER, P_GLOBAL, &loadparm.Globals.dgram_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"cldap port", P_INTEGER, P_GLOBAL, &loadparm.Globals.cldap_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"krb5 port", P_INTEGER, P_GLOBAL, &loadparm.Globals.krb5_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"kpasswd port", P_INTEGER, P_GLOBAL, &loadparm.Globals.kpasswd_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"web port", P_INTEGER, P_GLOBAL, &loadparm.Globals.web_port, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls enabled", P_BOOL, P_GLOBAL, &loadparm.Globals.tls_enabled, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls keyfile", P_STRING, P_GLOBAL, &loadparm.Globals.tls_keyfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls certfile", P_STRING, P_GLOBAL, &loadparm.Globals.tls_certfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls cafile", P_STRING, P_GLOBAL, &loadparm.Globals.tls_cafile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls crlfile", P_STRING, P_GLOBAL, &loadparm.Globals.tls_crlfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls dh params file", P_STRING, P_GLOBAL, &loadparm.Globals.tls_dhpfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"swat directory", P_STRING, P_GLOBAL, &loadparm.Globals.swat_directory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"large readwrite", P_BOOL, P_GLOBAL, &loadparm.Globals.bLargeReadwrite, NULL, NULL, FLAG_DEVELOPER}, - {"server max protocol", P_ENUM, P_GLOBAL, &loadparm.Globals.srv_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, - {"server min protocol", P_ENUM, P_GLOBAL, &loadparm.Globals.srv_minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, - {"client max protocol", P_ENUM, P_GLOBAL, &loadparm.Globals.cli_maxprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, - {"client min protocol", P_ENUM, P_GLOBAL, &loadparm.Globals.cli_minprotocol, NULL, enum_protocol, FLAG_DEVELOPER}, - {"unicode", P_BOOL, P_GLOBAL, &loadparm.Globals.bUnicode, NULL, NULL, FLAG_DEVELOPER}, - {"read raw", P_BOOL, P_GLOBAL, &loadparm.Globals.bReadRaw, NULL, NULL, FLAG_DEVELOPER}, - {"write raw", P_BOOL, P_GLOBAL, &loadparm.Globals.bWriteRaw, NULL, NULL, FLAG_DEVELOPER}, - {"disable netbios", P_BOOL, P_GLOBAL, &loadparm.Globals.bDisableNetbios, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"smb ports", P_LIST, P_GLOBAL, GLOBAL_VAR(smb_ports), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"nbt port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(nbt_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"dgram port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(dgram_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"cldap port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(cldap_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"krb5 port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(krb5_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"kpasswd port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(kpasswd_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"web port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(web_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls enabled", P_BOOL, P_GLOBAL, GLOBAL_VAR(tls_enabled), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls keyfile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_keyfile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls certfile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_certfile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls cafile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_cafile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls crlfile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_crlfile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"tls dh params file", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_dhpfile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"swat directory", P_STRING, P_GLOBAL, GLOBAL_VAR(swat_directory), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"large readwrite", P_BOOL, P_GLOBAL, GLOBAL_VAR(bLargeReadwrite), NULL, NULL, FLAG_DEVELOPER}, + {"server max protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(srv_maxprotocol), NULL, enum_protocol, FLAG_DEVELOPER}, + {"server min protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(srv_minprotocol), NULL, enum_protocol, FLAG_DEVELOPER}, + {"client max protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(cli_maxprotocol), NULL, enum_protocol, FLAG_DEVELOPER}, + {"client min protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(cli_minprotocol), NULL, enum_protocol, FLAG_DEVELOPER}, + {"unicode", P_BOOL, P_GLOBAL, GLOBAL_VAR(bUnicode), NULL, NULL, FLAG_DEVELOPER}, + {"read raw", P_BOOL, P_GLOBAL, GLOBAL_VAR(bReadRaw), NULL, NULL, FLAG_DEVELOPER}, + {"write raw", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWriteRaw), NULL, NULL, FLAG_DEVELOPER}, + {"disable netbios", P_BOOL, P_GLOBAL, GLOBAL_VAR(bDisableNetbios), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"nt status support", P_BOOL, P_GLOBAL, &loadparm.Globals.bNTStatusSupport, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - - {"announce version", P_STRING, P_GLOBAL, &loadparm.Globals.szAnnounceVersion, NULL, NULL, FLAG_DEVELOPER}, - {"announce as", P_ENUM, P_GLOBAL, &loadparm.Globals.announce_as, NULL, enum_announce_as, FLAG_DEVELOPER}, - {"max mux", P_INTEGER, P_GLOBAL, &loadparm.Globals.max_mux, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"max xmit", P_BYTES, P_GLOBAL, &loadparm.Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - - {"name resolve order", P_LIST, P_GLOBAL, &loadparm.Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"max wins ttl", P_INTEGER, P_GLOBAL, &loadparm.Globals.max_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"min wins ttl", P_INTEGER, P_GLOBAL, &loadparm.Globals.min_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"time server", P_BOOL, P_GLOBAL, &loadparm.Globals.bTimeServer, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"unix extensions", P_BOOL, P_GLOBAL, &loadparm.Globals.bUnixExtensions, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"use spnego", P_BOOL, P_GLOBAL, &loadparm.Globals.bUseSpnego, NULL, NULL, FLAG_DEVELOPER}, - {"server signing", P_ENUM, P_GLOBAL, &loadparm.Globals.server_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, - {"client signing", P_ENUM, P_GLOBAL, &loadparm.Globals.client_signing, NULL, enum_smb_signing_vals, FLAG_ADVANCED}, - {"rpc big endian", P_BOOL, P_GLOBAL, &loadparm.Globals.bRpcBigEndian, NULL, NULL, FLAG_DEVELOPER}, - - {"max connections", P_INTEGER, P_LOCAL, &sDefault.iMaxConnections, NULL, NULL, FLAG_SHARE}, - {"paranoid server security", P_BOOL, P_GLOBAL, &loadparm.Globals.paranoid_server_security, NULL, NULL, FLAG_DEVELOPER}, - {"socket options", P_STRING, P_GLOBAL, &loadparm.Globals.socket_options, NULL, NULL, FLAG_DEVELOPER}, - - {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, - {"case insensitive filesystem", P_BOOL, P_LOCAL, &sDefault.bCIFileSystem, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, - - {"max print jobs", P_INTEGER, P_LOCAL, &sDefault.iMaxPrintJobs, NULL, NULL, FLAG_PRINT}, - {"printable", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_PRINT}, - {"print ok", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_HIDE}, + {"nt status support", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNTStatusSupport), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"announce version", P_STRING, P_GLOBAL, GLOBAL_VAR(szAnnounceVersion), NULL, NULL, FLAG_DEVELOPER}, + {"announce as", P_ENUM, P_GLOBAL, GLOBAL_VAR(announce_as), NULL, enum_announce_as, FLAG_DEVELOPER}, + {"max mux", P_INTEGER, P_GLOBAL, GLOBAL_VAR(max_mux), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"max xmit", P_BYTES, P_GLOBAL, GLOBAL_VAR(max_xmit), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + + {"name resolve order", P_LIST, P_GLOBAL, GLOBAL_VAR(szNameResolveOrder), NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"max wins ttl", P_INTEGER, P_GLOBAL, GLOBAL_VAR(max_wins_ttl), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"min wins ttl", P_INTEGER, P_GLOBAL, GLOBAL_VAR(min_wins_ttl), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"time server", P_BOOL, P_GLOBAL, GLOBAL_VAR(bTimeServer), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"unix extensions", P_BOOL, P_GLOBAL, GLOBAL_VAR(bUnixExtensions), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"use spnego", P_BOOL, P_GLOBAL, GLOBAL_VAR(bUseSpnego), NULL, NULL, FLAG_DEVELOPER}, + {"server signing", P_ENUM, P_GLOBAL, GLOBAL_VAR(server_signing), NULL, enum_smb_signing_vals, FLAG_ADVANCED}, + {"client signing", P_ENUM, P_GLOBAL, GLOBAL_VAR(client_signing), NULL, enum_smb_signing_vals, FLAG_ADVANCED}, + {"rpc big endian", P_BOOL, P_GLOBAL, GLOBAL_VAR(bRpcBigEndian), NULL, NULL, FLAG_DEVELOPER}, + + {"max connections", P_INTEGER, P_LOCAL, LOCAL_VAR(iMaxConnections), NULL, NULL, FLAG_SHARE}, + {"paranoid server security", P_BOOL, P_GLOBAL, GLOBAL_VAR(paranoid_server_security), NULL, NULL, FLAG_DEVELOPER}, + {"socket options", P_STRING, P_GLOBAL, GLOBAL_VAR(socket_options), NULL, NULL, FLAG_DEVELOPER}, + + {"strict sync", P_BOOL, P_LOCAL, LOCAL_VAR(bStrictSync), NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, + {"case insensitive filesystem", P_BOOL, P_LOCAL, LOCAL_VAR(bCIFileSystem), NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, + + {"max print jobs", P_INTEGER, P_LOCAL, LOCAL_VAR(iMaxPrintJobs), NULL, NULL, FLAG_PRINT}, + {"printable", P_BOOL, P_LOCAL, LOCAL_VAR(bPrint_ok), NULL, NULL, FLAG_PRINT}, + {"print ok", P_BOOL, P_LOCAL, LOCAL_VAR(bPrint_ok), NULL, NULL, FLAG_HIDE}, - {"printer name", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_PRINT}, - {"printer", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_HIDE}, + {"printer name", P_STRING, P_LOCAL, LOCAL_VAR(szPrintername), NULL, NULL, FLAG_PRINT}, + {"printer", P_STRING, P_LOCAL, LOCAL_VAR(szPrintername), NULL, NULL, FLAG_HIDE}, - {"map system", P_BOOL, P_LOCAL, &sDefault.bMap_system, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"map hidden", P_BOOL, P_LOCAL, &sDefault.bMap_hidden, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"map system", P_BOOL, P_LOCAL, LOCAL_VAR(bMap_system), NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"map hidden", P_BOOL, P_LOCAL, LOCAL_VAR(bMap_hidden), NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"map archive", P_BOOL, P_LOCAL, LOCAL_VAR(bMap_archive), NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"preferred master", P_ENUM, P_GLOBAL, &loadparm.Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"prefered master", P_ENUM, P_GLOBAL, &loadparm.Globals.bPreferredMaster, NULL, enum_bool_auto, FLAG_HIDE}, - {"local master", P_BOOL, P_GLOBAL, &loadparm.Globals.bLocalMaster, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"browseable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, FLAG_HIDE}, + {"preferred master", P_ENUM, P_GLOBAL, GLOBAL_VAR(bPreferredMaster), NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"prefered master", P_ENUM, P_GLOBAL, GLOBAL_VAR(bPreferredMaster), NULL, enum_bool_auto, FLAG_HIDE}, + {"local master", P_BOOL, P_GLOBAL, GLOBAL_VAR(bLocalMaster), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, + {"browseable", P_BOOL, P_LOCAL, LOCAL_VAR(bBrowseable), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"browsable", P_BOOL, P_LOCAL, LOCAL_VAR(bBrowseable), NULL, NULL, FLAG_HIDE}, - {"wins server", P_LIST, P_GLOBAL, &loadparm.Globals.szWINSservers, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"wins support", P_BOOL, P_GLOBAL, &loadparm.Globals.bWINSsupport, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"dns proxy", P_BOOL, P_GLOBAL, &loadparm.Globals.bWINSdnsProxy, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"wins hook", P_STRING, P_GLOBAL, &loadparm.Globals.szWINSHook, NULL, NULL, FLAG_ADVANCED}, + {"wins server", P_LIST, P_GLOBAL, GLOBAL_VAR(szWINSservers), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"wins support", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWINSsupport), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"dns proxy", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWINSdnsProxy), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, + {"wins hook", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINSHook), NULL, NULL, FLAG_ADVANCED}, - {"csc policy", P_ENUM, P_LOCAL, &sDefault.iCSCPolicy, NULL, enum_csc_policy, FLAG_SHARE | FLAG_GLOBAL}, + {"csc policy", P_ENUM, P_LOCAL, LOCAL_VAR(iCSCPolicy), NULL, enum_csc_policy, FLAG_SHARE | FLAG_GLOBAL}, - {"strict locking", P_BOOL, P_LOCAL, &sDefault.bStrictLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - - {"share backend", P_STRING, P_GLOBAL, &loadparm.Globals.szShareBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"preload", P_STRING, P_GLOBAL, &loadparm.Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"auto services", P_STRING, P_GLOBAL, &loadparm.Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"lock dir", P_STRING, P_GLOBAL, &loadparm.Globals.szLockDir, NULL, NULL, FLAG_HIDE}, - {"lock directory", P_STRING, P_GLOBAL, &loadparm.Globals.szLockDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"modules dir", P_STRING, P_GLOBAL, &loadparm.Globals.szModulesDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"pid directory", P_STRING, P_GLOBAL, &loadparm.Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"js include", P_LIST, P_GLOBAL, &loadparm.Globals.jsInclude, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"setup directory", P_STRING, P_GLOBAL, &loadparm.Globals.szSetupDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"strict locking", P_BOOL, P_LOCAL, LOCAL_VAR(bStrictLocking), NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + + {"share backend", P_STRING, P_GLOBAL, GLOBAL_VAR(szShareBackend), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"preload", P_STRING, P_GLOBAL, GLOBAL_VAR(szAutoServices), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"auto services", P_STRING, P_GLOBAL, GLOBAL_VAR(szAutoServices), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"lock dir", P_STRING, P_GLOBAL, GLOBAL_VAR(szLockDir), NULL, NULL, FLAG_HIDE}, + {"lock directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szLockDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"modules dir", P_STRING, P_GLOBAL, GLOBAL_VAR(szModulesDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"pid directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szPidDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"js include", P_LIST, P_GLOBAL, GLOBAL_VAR(jsInclude), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"setup directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szSetupDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"socket address", P_STRING, P_GLOBAL, &loadparm.Globals.szSocketAddress, NULL, NULL, FLAG_DEVELOPER}, - {"copy", P_STRING, P_LOCAL, &sDefault.szCopy, handle_copy, NULL, FLAG_HIDE}, - {"include", P_STRING, P_LOCAL, &sDefault.szInclude, handle_include, NULL, FLAG_HIDE}, + {"socket address", P_STRING, P_GLOBAL, GLOBAL_VAR(szSocketAddress), NULL, NULL, FLAG_DEVELOPER}, + {"copy", P_STRING, P_LOCAL, LOCAL_VAR(szCopy), handle_copy, NULL, FLAG_HIDE}, + {"include", P_STRING, P_LOCAL, LOCAL_VAR(szInclude), handle_include, NULL, FLAG_HIDE}, - {"available", P_BOOL, P_LOCAL, &sDefault.bAvailable, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT}, - {"volume", P_STRING, P_LOCAL, &sDefault.volume, NULL, NULL, FLAG_SHARE }, - {"fstype", P_STRING, P_LOCAL, &sDefault.fstype, NULL, NULL, FLAG_SHARE}, + {"available", P_BOOL, P_LOCAL, LOCAL_VAR(bAvailable), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT}, + {"volume", P_STRING, P_LOCAL, LOCAL_VAR(volume), NULL, NULL, FLAG_SHARE }, + {"fstype", P_STRING, P_LOCAL, LOCAL_VAR(fstype), NULL, NULL, FLAG_SHARE}, {"panic action", P_STRING, P_GLOBAL, &panic_action, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"msdfs root", P_BOOL, P_LOCAL, &sDefault.bMSDfsRoot, NULL, NULL, FLAG_SHARE}, - {"host msdfs", P_BOOL, P_GLOBAL, &loadparm.Globals.bHostMSDfs, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"winbind separator", P_STRING, P_GLOBAL, &loadparm.Globals.szWinbindSeparator, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"winbindd socket directory", P_STRING, P_GLOBAL, &loadparm.Globals.szWinbinddSocketDirectory, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"winbind sealed pipes", P_BOOL, P_GLOBAL, &loadparm.Globals.bWinbindSealedPipes, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"template shell", P_STRING, P_GLOBAL, &loadparm.Globals.szTemplateShell, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"template homedir", P_STRING, P_GLOBAL, &loadparm.Globals.szTemplateHomedir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"msdfs root", P_BOOL, P_LOCAL, LOCAL_VAR(bMSDfsRoot), NULL, NULL, FLAG_SHARE}, + {"host msdfs", P_BOOL, P_GLOBAL, GLOBAL_VAR(bHostMSDfs), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"winbind separator", P_STRING, P_GLOBAL, GLOBAL_VAR(szWinbindSeparator), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"winbindd socket directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szWinbinddSocketDirectory), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"winbind sealed pipes", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWinbindSealedPipes), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"template shell", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateShell), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"template homedir", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateHomedir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} }; -- cgit From 6357fb802a27b8160e263d32d0596f69186b81a7 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 21 Nov 2007 14:49:27 +0100 Subject: r26095: Add function for import a generic configuration file in a loadparm context. (This used to be commit d74018d05542582515a4d3cc995820667200b301) --- source4/param/loadparm.c | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c54932aa47..8e2b8b555c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -222,7 +222,7 @@ struct loadparm_service /* This is a default service used to prime a services structure */ -static struct loadparm_service sDefault = { +struct loadparm_service sDefault = { .szService = NULL, .szPath = NULL, .szCopy = NULL, @@ -1031,7 +1031,7 @@ static bool string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src) service. ***************************************************************************/ -static struct loadparm_service *add_a_service(struct loadparm_context *lp_ctx, +struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, const struct loadparm_service *pservice, const char *name) { @@ -1073,7 +1073,7 @@ static struct loadparm_service *add_a_service(struct loadparm_context *lp_ctx, num_to_alloc); if (!tsp) { - DEBUG(0,("add_a_service: failed to enlarge ServicePtrs!\n")); + DEBUG(0,("lp_add_service: failed to enlarge ServicePtrs!\n")); return NULL; } else { @@ -1086,7 +1086,7 @@ static struct loadparm_service *add_a_service(struct loadparm_context *lp_ctx, lp_ctx->ServicePtrs[i] = init_service(talloc_autofree_context()); if (lp_ctx->ServicePtrs[i] == NULL) { - DEBUG(0,("add_a_service: out of memory!\n")); + DEBUG(0,("lp_add_service: out of memory!\n")); return NULL; } copy_service(lp_ctx->ServicePtrs[i], &tservice, NULL); @@ -1107,7 +1107,7 @@ bool lp_add_home(struct loadparm_context *lp_ctx, { struct loadparm_service *service; - service = add_a_service(lp_ctx, default_service, pszHomename); + service = lp_add_service(lp_ctx, default_service, pszHomename); if (service == NULL) return false; @@ -1131,17 +1131,6 @@ bool lp_add_home(struct loadparm_context *lp_ctx, return true; } -/*************************************************************************** - Add a new service, based on an old one. -***************************************************************************/ - -struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, - const char *pszService, - struct loadparm_service *default_service) -{ - return add_a_service(lp_ctx, default_service, pszService); -} - /*************************************************************************** Add the IPC service. ***************************************************************************/ @@ -1149,7 +1138,7 @@ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, const char *fstype) { - struct loadparm_service *service = add_a_service(lp_ctx, &sDefault, name); + struct loadparm_service *service = lp_add_service(lp_ctx, &sDefault, name); if (service == NULL) return false; @@ -1185,7 +1174,7 @@ bool lp_add_printer(struct loadparm_context *lp_ctx, { const char *comment = "From Printcap"; struct loadparm_service *service; - service = add_a_service(lp_ctx, default_service, pszPrintername); + service = lp_add_service(lp_ctx, default_service, pszPrintername); if (service == NULL) return false; @@ -2024,7 +2013,7 @@ static bool do_section(const char *pszSectionName, void *userdata) /* issued by the post-processing of a previous section. */ DEBUG(2, ("Processing section \"[%s]\"\n", pszSectionName)); - if ((lp_ctx->currentService = add_a_service(lp_ctx, &sDefault, + if ((lp_ctx->currentService = lp_add_service(lp_ctx, &sDefault, pszSectionName)) == NULL) { DEBUG(0, ("Failed to add a new service\n")); -- cgit From f4a1083cf9f64b4d2b65b68942e93861409ea90f Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 2 Dec 2007 17:09:52 +0100 Subject: r26227: Make loadparm_context part of a server task, move loadparm_contexts further up the call stack. (This used to be commit 0721a07aada6a1fae6dcbd610b8783df57d7bbad) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8e2b8b555c..2d15f9c019 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2127,7 +2127,7 @@ static void dump_a_service(struct loadparm_service * pService, FILE * f) } } -bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, int snum, char *parm_name, FILE * f, +bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, int snum, const char *parm_name, FILE * f, bool isGlobal) { struct loadparm_service * pService = lp_ctx->ServicePtrs[snum]; -- cgit From ecea5ce24553989103d4a06296b24f4d29f30a36 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 3 Dec 2007 17:41:50 +0100 Subject: r26260: Store loadparm context in gensec context. (This used to be commit b9e3a4862e267be39d603fed8207a237c3d72081) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 2d15f9c019..be5464c8e6 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2468,7 +2468,7 @@ bool lp_load(const char *filename) lp_do_global_parameter(lp_ctx, "wins server", "127.0.0.1"); } - init_iconv(); + close_iconv(); return bRetval; } -- cgit From b038240ac72fa34a132eb52bda28bbb80f82c29e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 4 Dec 2007 00:12:13 +0100 Subject: r26275: return loadparm context in lp_load. (This used to be commit d01f0f4c2037b531b3fd088060717f90e60471e9) --- source4/param/loadparm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index be5464c8e6..9065a48113 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2407,7 +2407,7 @@ bool loadparm_init(struct loadparm_context *lp_ctx) _PUBLIC_ _DEPRECATED_ bool lp_load_default(void) { - return lp_load(dyn_CONFIGFILE); + return lp_load(dyn_CONFIGFILE, NULL); } /*************************************************************************** @@ -2415,13 +2415,16 @@ _PUBLIC_ _DEPRECATED_ bool lp_load_default(void) False on failure. ***************************************************************************/ -bool lp_load(const char *filename) +bool lp_load(const char *filename, struct loadparm_context **ret_lp) { char *n2; bool bRetval; struct param_opt *data; struct loadparm_context *lp_ctx = &loadparm; + if (ret_lp != NULL) + *ret_lp = NULL; + filename = talloc_strdup(talloc_autofree_context(), filename); global_loadparm = lp_ctx; @@ -2470,6 +2473,9 @@ bool lp_load(const char *filename) close_iconv(); + if (ret_lp != NULL) + *ret_lp = lp_ctx; + return bRetval; } -- cgit From 6901b3c64a65d9745efac13f071225d5d2949f4d Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 4 Dec 2007 01:51:44 +0100 Subject: r26278: Tallocify convenience table for iconv handles. (This used to be commit ad64b3baa4a5383c603d17ae75c33083af4690bb) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 9065a48113..9cd3cdbdc8 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2471,7 +2471,7 @@ bool lp_load(const char *filename, struct loadparm_context **ret_lp) lp_do_global_parameter(lp_ctx, "wins server", "127.0.0.1"); } - close_iconv(); + reload_charcnv(); if (ret_lp != NULL) *ret_lp = lp_ctx; -- cgit From 01d2acfdb4c4c0349a28a18c5c0da5b960b02791 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 7 Dec 2007 16:04:17 +0100 Subject: r26335: Specify name_resolve_order to socket code. (This used to be commit b03e5d00110be3f1fe5809dad4eb6ca5cea7463d) --- source4/param/loadparm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 9cd3cdbdc8..cafb6dd909 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -71,7 +71,7 @@ static bool bLoaded = false; static bool do_parameter(const char *, const char *, void *); static bool defaults_saved = false; -/* +/** * This structure describes global (ie., server-wide) parameters. */ struct loadparm_global @@ -180,7 +180,7 @@ struct loadparm_global }; -/* +/** * This structure describes a single service. */ struct loadparm_service -- cgit From 6dc73da601b23d64bb4f78358b1924210cbc8ec6 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 7 Dec 2007 16:04:22 +0100 Subject: r26336: use offsets inside loadparm rather than pointers (allows multiple contexts to exist at the same time). (This used to be commit 9c87c46c69169fbb071ec945943e2454206f916e) --- source4/param/loadparm.c | 126 ++++++++++++++++++++++++----------------------- 1 file changed, 64 insertions(+), 62 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index cafb6dd909..db2a884400 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -128,7 +128,10 @@ struct loadparm_global char *tls_cafile; char *tls_crlfile; char *tls_dhpfile; + char *logfile; + char *panic_action; int max_mux; + int debuglevel; int max_xmit; int pwordlevel; int srv_maxprotocol; @@ -373,8 +376,8 @@ static const struct enum_list enum_server_role[] = { * parameters that have been duplicated by pseudonyms. */ -#define GLOBAL_VAR(name) &loadparm.Globals.name -#define LOCAL_VAR(name) &sDefault.name +#define GLOBAL_VAR(name) offsetof(struct loadparm_global, name) +#define LOCAL_VAR(name) offsetof(struct loadparm_service, name) static struct parm_struct parm_table[] = { {"config file", P_STRING, P_GLOBAL, GLOBAL_VAR(szConfigFile), NULL, NULL, FLAG_HIDE}, @@ -398,7 +401,7 @@ static struct parm_struct parm_table[] = { {"bind interfaces only", P_BOOL, P_GLOBAL, GLOBAL_VAR(bBindInterfacesOnly), NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, {"ntvfs handler", P_LIST, P_LOCAL, LOCAL_VAR(ntvfs_handler), NULL, NULL, FLAG_ADVANCED}, {"ntptr providor", P_STRING, P_GLOBAL, GLOBAL_VAR(ntptr_providor), NULL, NULL, FLAG_ADVANCED}, - {"dcerpc endpoint servers", P_LIST, P_GLOBAL, GLOBAL_VAR()dcerpc_ep_servers, NULL, NULL, FLAG_ADVANCED}, + {"dcerpc endpoint servers", P_LIST, P_GLOBAL, GLOBAL_VAR(dcerpc_ep_servers), NULL, NULL, FLAG_ADVANCED}, {"server services", P_LIST, P_GLOBAL, GLOBAL_VAR(server_services), NULL, NULL, FLAG_ADVANCED}, {"security", P_ENUM, P_GLOBAL, GLOBAL_VAR(security), NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, @@ -431,9 +434,9 @@ static struct parm_struct parm_table[] = { {"hosts allow", P_LIST, P_LOCAL, LOCAL_VAR(szHostsallow), NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"hosts deny", P_LIST, P_LOCAL, LOCAL_VAR(szHostsdeny), NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"log level", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"debuglevel", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_HIDE}, - {"log file", P_STRING, P_GLOBAL, &logfile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"log level", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"debuglevel", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), NULL, NULL, FLAG_HIDE}, + {"log file", P_STRING, P_GLOBAL, GLOBAL_VAR(logfile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"smb ports", P_LIST, P_GLOBAL, GLOBAL_VAR(smb_ports), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"nbt port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(nbt_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -527,7 +530,7 @@ static struct parm_struct parm_table[] = { {"volume", P_STRING, P_LOCAL, LOCAL_VAR(volume), NULL, NULL, FLAG_SHARE }, {"fstype", P_STRING, P_LOCAL, LOCAL_VAR(fstype), NULL, NULL, FLAG_SHARE}, - {"panic action", P_STRING, P_GLOBAL, &panic_action, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"panic action", P_STRING, P_GLOBAL, GLOBAL_VAR(panic_action), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"msdfs root", P_BOOL, P_LOCAL, LOCAL_VAR(bMSDfsRoot), NULL, NULL, FLAG_SHARE}, {"host msdfs", P_BOOL, P_GLOBAL, GLOBAL_VAR(bHostMSDfs), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -537,7 +540,7 @@ static struct parm_struct parm_table[] = { {"template shell", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateShell), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, {"template homedir", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateHomedir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0} + {NULL, P_BOOL, P_NONE, 0, NULL, NULL, 0} }; @@ -1237,12 +1240,17 @@ struct parm_struct *lp_parm_struct(const char *name) /* return the parameter pointer for a parameter */ -void *lp_parm_ptr(struct loadparm_service *service, struct parm_struct *parm) +void *lp_parm_ptr(struct loadparm_context *lp_ctx, + struct loadparm_service *service, struct parm_struct *parm) { - if (service == NULL) - return parm->ptr; + if (service == NULL) { + if (parm->class == P_LOCAL) + return ((char *)&sDefault)+parm->offset; + else + return ((char *)&lp_ctx->Globals)+parm->offset; + } - return ((char *)service) + PTR_DIFF(parm->ptr, &sDefault); + return ((char *)service) + parm->offset; } /*************************************************************************** @@ -1278,15 +1286,12 @@ static void copy_service(struct loadparm_service *pserviceDest, bool not_added; for (i = 0; parm_table[i].label; i++) - if (parm_table[i].ptr && parm_table[i].class == P_LOCAL && + if (parm_table[i].offset != -1 && parm_table[i].class == P_LOCAL && (bcopyall || pcopymapDest[i])) { - void *def_ptr = parm_table[i].ptr; void *src_ptr = - ((char *)pserviceSource) + PTR_DIFF(def_ptr, - &sDefault); + ((char *)pserviceSource) + parm_table[i].offset; void *dest_ptr = - ((char *)pserviceDest) + PTR_DIFF(def_ptr, - &sDefault); + ((char *)pserviceDest) + parm_table[i].offset; switch (parm_table[i].type) { case P_BOOL: @@ -1689,10 +1694,10 @@ static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, if (parm_table[parmnum].flags & FLAG_DEFAULT) { parm_table[parmnum].flags &= ~FLAG_DEFAULT; /* we have to also unset FLAG_DEFAULT on aliases */ - for (i=parmnum-1;i>=0 && parm_table[i].ptr == parm_table[parmnum].ptr;i--) { + for (i=parmnum-1;i>=0 && parm_table[i].offset == parm_table[parmnum].offset;i--) { parm_table[i].flags &= ~FLAG_DEFAULT; } - for (i=parmnum+1;icopymap) init_copymap(service); @@ -1775,7 +1777,8 @@ bool lp_do_service_parameter(struct loadparm_context *lp_ctx, /* this handles the aliases - set the copymap for other * entries with the same data pointer */ for (i = 0; parm_table[i].label; i++) - if (parm_table[i].ptr == parm_table[parmnum].ptr) + if (parm_table[i].offset == parm_table[parmnum].offset && + parm_table[i].class == parm_table[parmnum].class) service->copymap[i] = false; return set_variable(service, parmnum, parm_ptr, pszParmName, @@ -1854,10 +1857,10 @@ bool lp_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName, parm_table[parmnum].flags |= FLAG_CMDLINE; /* we have to also set FLAG_CMDLINE on aliases */ - for (i=parmnum-1;i>=0 && parm_table[i].ptr == parm_table[parmnum].ptr;i--) { + for (i=parmnum-1;i>=0 && parm_table[i].offset == parm_table[parmnum].offset;i--) { parm_table[i].flags |= FLAG_CMDLINE; } - for (i=parmnum+1;iGlobals.param_opt != NULL) { @@ -2098,26 +2102,24 @@ static void dump_a_service(struct loadparm_service * pService, FILE * f) for (i = 0; parm_table[i].label; i++) if (parm_table[i].class == P_LOCAL && - parm_table[i].ptr && + parm_table[i].offset != -1 && (*parm_table[i].label != '-') && - (i == 0 || (parm_table[i].ptr != parm_table[i - 1].ptr))) { - int pdiff = PTR_DIFF(parm_table[i].ptr, &sDefault); - + (i == 0 || (parm_table[i].offset != parm_table[i - 1].offset))) { if (pService == &sDefault) { if (defaults_saved && is_default(i)) continue; } else { if (equal_parameter(parm_table[i].type, ((char *)pService) + - pdiff, + parm_table[i].offset, ((char *)&sDefault) + - pdiff)) + parm_table[i].offset)) continue; } fprintf(f, "\t%s = ", parm_table[i].label); print_parameter(&parm_table[i], - ((char *)pService) + pdiff, f); + ((char *)pService) + parm_table[i].offset, f); fprintf(f, "\n"); } if (pService->param_opt != NULL) { @@ -2138,15 +2140,13 @@ bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, int snum, const char * if (!parm) { return false; } - + if (isGlobal) - ptr = parm->ptr; + ptr = ((char *)&sDefault) + parm->offset; else - ptr = ((char *)pService) + - PTR_DIFF(parm->ptr, &sDefault); + ptr = ((char *)pService) + parm->offset; - print_parameter(parm, - ptr, f); + print_parameter(parm, ptr, f); fprintf(f, "\n"); return true; } @@ -2162,13 +2162,13 @@ struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, if (snum == -1) { /* do the globals */ for (; parm_table[*i].label; (*i)++) { - if (!parm_table[*i].ptr + if (parm_table[*i].offset == -1 || (*parm_table[*i].label == '-')) continue; if ((*i) > 0 - && (parm_table[*i].ptr == - parm_table[(*i) - 1].ptr)) + && (parm_table[*i].offset == + parm_table[(*i) - 1].offset)) continue; return &parm_table[(*i)++]; @@ -2178,22 +2178,18 @@ struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, for (; parm_table[*i].label; (*i)++) { if (parm_table[*i].class == P_LOCAL && - parm_table[*i].ptr && + parm_table[*i].offset != -1 && (*parm_table[*i].label != '-') && ((*i) == 0 || - (parm_table[*i].ptr != - parm_table[(*i) - 1].ptr))) + (parm_table[*i].offset != + parm_table[(*i) - 1].offset))) { - int pdiff = - PTR_DIFF(parm_table[*i].ptr, - &sDefault); - if (allparameters || !equal_parameter(parm_table[*i].type, ((char *)pService) + - pdiff, + parm_table[*i].offset, ((char *)&sDefault) + - pdiff)) + parm_table[*i].offset)) { return &parm_table[(*i)++]; } @@ -2259,10 +2255,12 @@ bool loadparm_init(struct loadparm_context *lp_ctx) for (i = 0; parm_table[i].label; i++) { if ((parm_table[i].type == P_STRING || parm_table[i].type == P_USTRING) && - parm_table[i].ptr && + parm_table[i].offset != -1 && !(parm_table[i].flags & FLAG_CMDLINE)) { string_set(talloc_autofree_context(), - (char **)parm_table[i].ptr, ""); + (char **)( + (char *)((parm_table[i].class == P_LOCAL)?&sDefault:&(lp_ctx->Globals)) + + parm_table[i].offset), ""); } } @@ -2471,6 +2469,10 @@ bool lp_load(const char *filename, struct loadparm_context **ret_lp) lp_do_global_parameter(lp_ctx, "wins server", "127.0.0.1"); } + DEBUGLEVEL = lp_ctx->Globals.debuglevel; + logfile = lp_ctx->Globals.logfile; + panic_action = lp_ctx->Globals.panic_action; + reload_charcnv(); if (ret_lp != NULL) -- cgit From a48fdda5fec99649e29760c7a9c91246438c9579 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:31:41 +0100 Subject: r26339: Make loadparm talloc-allocated. (This used to be commit 1e02cd8db1d65ff72b747833904a10b47749b1fb) --- source4/param/loadparm.c | 94 ++++++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 43 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index db2a884400..8d869e32ff 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -259,7 +259,7 @@ struct loadparm_service sDefault = { }; /* local variables */ -static struct loadparm_context { +struct loadparm_context { struct loadparm_global Globals; struct loadparm_service **ServicePtrs; int iNumServices; @@ -271,9 +271,9 @@ static struct loadparm_context { char *subfname; time_t modtime; } *file_lists; -} loadparm; +}; -struct loadparm_context *global_loadparm = &loadparm; +struct loadparm_context *global_loadparm = NULL; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) @@ -1087,7 +1087,7 @@ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, lp_ctx->iNumServices++; } - lp_ctx->ServicePtrs[i] = init_service(talloc_autofree_context()); + lp_ctx->ServicePtrs[i] = init_service(lp_ctx); if (lp_ctx->ServicePtrs[i] == NULL) { DEBUG(0,("lp_add_service: out of memory!\n")); return NULL; @@ -1246,11 +1246,12 @@ void *lp_parm_ptr(struct loadparm_context *lp_ctx, if (service == NULL) { if (parm->class == P_LOCAL) return ((char *)&sDefault)+parm->offset; - else - return ((char *)&lp_ctx->Globals)+parm->offset; + else if (parm->class == P_GLOBAL) + return ((char *)&(lp_ctx->Globals))+parm->offset; + else return NULL; + } else { + return ((char *)service) + parm->offset; } - - return ((char *)service) + parm->offset; } /*************************************************************************** @@ -1317,7 +1318,7 @@ static void copy_service(struct loadparm_service *pserviceDest, strupper(*(char **)dest_ptr); break; case P_LIST: - *(const char ***)dest_ptr = str_list_copy(talloc_autofree_context(), + *(const char ***)dest_ptr = str_list_copy(pserviceDest, *(const char ***)src_ptr); break; default: @@ -1416,7 +1417,7 @@ static void add_to_file_list(struct loadparm_context *lp_ctx, } if (!f) { - f = talloc(talloc_autofree_context(), struct file_lists); + f = talloc(lp_ctx, struct file_lists); if (!f) return; f->next = lp_ctx->file_lists; @@ -1452,7 +1453,7 @@ bool lp_file_list_changed(struct loadparm_context *lp_ctx) char *n2; time_t mod_time; - n2 = standard_sub_basic(talloc_autofree_context(), f->name); + n2 = standard_sub_basic(lp_ctx, f->name); DEBUGADD(6, ("file %s -> %s last mod_time: %s\n", f->name, n2, ctime(&f->modtime))); @@ -1478,12 +1479,11 @@ bool lp_file_list_changed(struct loadparm_context *lp_ctx) static bool handle_include(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr) { - char *fname = standard_sub_basic(talloc_autofree_context(), - pszParmValue); + char *fname = standard_sub_basic(lp_ctx, pszParmValue); add_to_file_list(lp_ctx, pszParmValue, fname); - string_set(talloc_autofree_context(), ptr, fname); + string_set(lp_ctx, ptr, fname); if (file_exist(fname)) return pm_process(fname, do_section, do_parameter, lp_ctx); @@ -1503,7 +1503,7 @@ static bool handle_copy(struct loadparm_context *lp_ctx, bool bRetval; struct loadparm_service *serviceTemp; - string_set(talloc_autofree_context(), ptr, pszParmValue); + string_set(lp_ctx, ptr, pszParmValue); bRetval = false; @@ -1569,7 +1569,7 @@ static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx, if (service == NULL) { data = lp_ctx->Globals.param_opt; - mem_ctx = talloc_autofree_context(); + mem_ctx = lp_ctx; } else { data = service->param_opt; mem_ctx = service; @@ -1732,7 +1732,7 @@ bool lp_do_global_parameter(struct loadparm_context *lp_ctx, parm_ptr = lp_parm_ptr(lp_ctx, NULL, &parm_table[parmnum]); - return set_variable(talloc_autofree_context(), parmnum, parm_ptr, + return set_variable(lp_ctx, parmnum, parm_ptr, pszParmName, pszParmValue, lp_ctx); } @@ -2240,14 +2240,38 @@ void lp_killunused(struct loadparm_context *lp_ctx, } } + +static int lp_destructor(struct loadparm_context *lp_ctx) +{ + struct param_opt *data; + + if (lp_ctx->Globals.param_opt != NULL) { + struct param_opt *next; + for (data = lp_ctx->Globals.param_opt; data; data=next) { + next = data->next; + if (data->flags & FLAG_CMDLINE) continue; + DLIST_REMOVE(lp_ctx->Globals.param_opt, data); + talloc_free(data); + } + } + + return 0; +} + /*************************************************************************** Initialise the global parameter structure. ***************************************************************************/ -bool loadparm_init(struct loadparm_context *lp_ctx) +struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) { int i; char *myname; + struct loadparm_context *lp_ctx; + lp_ctx = talloc(mem_ctx, struct loadparm_context); + if (lp_ctx == NULL) + return NULL; + + talloc_set_destructor(lp_ctx, lp_destructor); lp_ctx->bInGlobalSection = true; DEBUG(3, ("Initialising global parameters\n")); @@ -2257,7 +2281,7 @@ bool loadparm_init(struct loadparm_context *lp_ctx) parm_table[i].type == P_USTRING) && parm_table[i].offset != -1 && !(parm_table[i].flags & FLAG_CMDLINE)) { - string_set(talloc_autofree_context(), + string_set(lp_ctx, (char **)( (char *)((parm_table[i].class == P_LOCAL)?&sDefault:&(lp_ctx->Globals)) + parm_table[i].offset), ""); @@ -2400,50 +2424,34 @@ bool loadparm_init(struct loadparm_context *lp_ctx) } } - return true; -} - -_PUBLIC_ _DEPRECATED_ bool lp_load_default(void) -{ - return lp_load(dyn_CONFIGFILE, NULL); + return lp_ctx; } /*************************************************************************** Load the services array from the services file. Return True on success, False on failure. ***************************************************************************/ - -bool lp_load(const char *filename, struct loadparm_context **ret_lp) +bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context **ret_lp) { char *n2; bool bRetval; - struct param_opt *data; - struct loadparm_context *lp_ctx = &loadparm; + struct loadparm_context *lp_ctx; if (ret_lp != NULL) *ret_lp = NULL; - filename = talloc_strdup(talloc_autofree_context(), filename); + lp_ctx = loadparm_init(mem_ctx); + if (lp_ctx == NULL) + return false; global_loadparm = lp_ctx; - if (lp_ctx->Globals.param_opt != NULL) { - struct param_opt *next; - for (data = lp_ctx->Globals.param_opt; data; data=next) { - next = data->next; - if (data->flags & FLAG_CMDLINE) continue; - DLIST_REMOVE(lp_ctx->Globals.param_opt, data); - talloc_free(data); - } - } - - if (!loadparm_init(lp_ctx)) - return false; + filename = talloc_strdup(lp_ctx, filename); lp_ctx->Globals.szConfigFile = filename; lp_ctx->bInGlobalSection = true; - n2 = standard_sub_basic(talloc_autofree_context(), lp_ctx->Globals.szConfigFile); + n2 = standard_sub_basic(lp_ctx, lp_ctx->Globals.szConfigFile); DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); add_to_file_list(lp_ctx, lp_ctx->Globals.szConfigFile, n2); -- cgit From b10f731a27691e21a947bb870435611e57204c0a Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:31:49 +0100 Subject: r26340: Add special handlers for debuglevel and logfile. (This used to be commit 2be4e8a4441423d3795ec055742184dbec8a4fe0) --- source4/param/loadparm.c | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8d869e32ff..f684830fc7 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -282,6 +282,10 @@ static bool handle_include(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr); static bool handle_copy(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr); +static bool handle_debuglevel(struct loadparm_context *lp_ctx, + const char *pszParmValue, char **ptr); +static bool handle_logfile(struct loadparm_context *lp_ctx, + const char *pszParmValue, char **ptr); static const struct enum_list enum_protocol[] = { {PROTOCOL_SMB2, "SMB2"}, @@ -434,9 +438,9 @@ static struct parm_struct parm_table[] = { {"hosts allow", P_LIST, P_LOCAL, LOCAL_VAR(szHostsallow), NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"hosts deny", P_LIST, P_LOCAL, LOCAL_VAR(szHostsdeny), NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"log level", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"debuglevel", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), NULL, NULL, FLAG_HIDE}, - {"log file", P_STRING, P_GLOBAL, GLOBAL_VAR(logfile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"log level", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), handle_debuglevel, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"debuglevel", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), handle_debuglevel, NULL, FLAG_HIDE}, + {"log file", P_STRING, P_GLOBAL, GLOBAL_VAR(logfile), handle_logfile, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"smb ports", P_LIST, P_GLOBAL, GLOBAL_VAR(smb_ports), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"nbt port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(nbt_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, @@ -1072,7 +1076,7 @@ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, if (i == lp_ctx->iNumServices) { struct loadparm_service **tsp; - tsp = realloc_p(lp_ctx->ServicePtrs, struct loadparm_service *, + tsp = talloc_realloc(lp_ctx, lp_ctx->ServicePtrs, struct loadparm_service *, num_to_alloc); if (!tsp) { @@ -1527,6 +1531,21 @@ static bool handle_copy(struct loadparm_context *lp_ctx, return bRetval; } +static bool handle_debuglevel(struct loadparm_context *lp_ctx, + const char *pszParmValue, char **ptr) +{ + DEBUGLEVEL = atoi(pszParmValue); + + return true; +} + +static bool handle_logfile(struct loadparm_context *lp_ctx, + const char *pszParmValue, char **ptr) +{ + logfile = pszParmValue; + return true; +} + /*************************************************************************** Initialise a copymap. ***************************************************************************/ @@ -2281,10 +2300,8 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) parm_table[i].type == P_USTRING) && parm_table[i].offset != -1 && !(parm_table[i].flags & FLAG_CMDLINE)) { - string_set(lp_ctx, - (char **)( - (char *)((parm_table[i].class == P_LOCAL)?&sDefault:&(lp_ctx->Globals)) + - parm_table[i].offset), ""); + char **r = ((char *)(parm_table[i].class == P_LOCAL)?&sDefault:&(lp_ctx->Globals)) + parm_table[i].offset; + *r = talloc_strdup(lp_ctx, ""); } } @@ -2477,8 +2494,6 @@ bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context lp_do_global_parameter(lp_ctx, "wins server", "127.0.0.1"); } - DEBUGLEVEL = lp_ctx->Globals.debuglevel; - logfile = lp_ctx->Globals.logfile; panic_action = lp_ctx->Globals.panic_action; reload_charcnv(); -- cgit From 1cdc55f5ecfbee3c79aaf7a3523b6defe7c17528 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:31:55 +0100 Subject: r26342: Fix initialization. (This used to be commit 2c9e17cb96d535405fed949f50d0591826c1efc7) --- source4/param/loadparm.c | 53 ++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 26 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index f684830fc7..330a245e51 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -260,7 +260,7 @@ struct loadparm_service sDefault = { /* local variables */ struct loadparm_context { - struct loadparm_global Globals; + struct loadparm_global *globals; struct loadparm_service **ServicePtrs; int iNumServices; struct loadparm_service *currentService; @@ -623,19 +623,19 @@ static const char *lp_string(const char *s) */ #define FN_GLOBAL_STRING(fn_name,var_name) \ - const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->Globals.var_name ? lp_string(lp_ctx->Globals.var_name) : "";} + const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name ? lp_string(lp_ctx->globals->var_name) : "";} #define FN_GLOBAL_CONST_STRING(fn_name,var_name) \ - const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->Globals.var_name ? lp_ctx->Globals.var_name : "";} + const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name ? lp_ctx->globals->var_name : "";} #define FN_GLOBAL_LIST(fn_name,var_name) \ - const char **fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->Globals.var_name;} + const char **fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name;} #define FN_GLOBAL_BOOL(fn_name,var_name) \ - bool fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return false; return lp_ctx->Globals.var_name;} + bool fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return false; return lp_ctx->globals->var_name;} #if 0 /* unused */ #define FN_GLOBAL_CHAR(fn_name,ptr) \ char fn_name(void) {return(*(char *)(ptr));} #endif #define FN_GLOBAL_INTEGER(fn_name,var_name) \ - int fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return 0; return lp_ctx->Globals.var_name;} + int fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return 0; return lp_ctx->globals->var_name;} #define FN_LOCAL_STRING(fn_name,val) \ const char *fn_name(struct loadparm_service *service) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault.val)));} @@ -790,7 +790,7 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx, char *vfskey; struct param_opt *data; - data = (service == NULL ? lp_ctx->Globals.param_opt : service->param_opt); + data = (service == NULL ? lp_ctx->globals->param_opt : service->param_opt); asprintf(&vfskey, "%s:%s", type, option); strlower(vfskey); @@ -805,8 +805,8 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx, if (service != NULL) { /* Try to fetch the same option but from globals */ - /* but only if we are not already working with Globals */ - for (data = lp_ctx->Globals.param_opt; data; + /* but only if we are not already working with globals */ + for (data = lp_ctx->globals->param_opt; data; data = data->next) { if (strcmp(data->key, vfskey) == 0) { free(vfskey); @@ -1153,7 +1153,7 @@ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, string_set(service, &service->szPath, tmpdir()); service->comment = talloc_asprintf(service, "%s Service (%s)", - fstype, lp_ctx->Globals.szServerString); + fstype, lp_ctx->globals->szServerString); string_set(service, &service->fstype, fstype); service->iMaxConnections = -1; service->bAvailable = true; @@ -1251,7 +1251,7 @@ void *lp_parm_ptr(struct loadparm_context *lp_ctx, if (parm->class == P_LOCAL) return ((char *)&sDefault)+parm->offset; else if (parm->class == P_GLOBAL) - return ((char *)&(lp_ctx->Globals))+parm->offset; + return ((char *)lp_ctx->globals)+parm->offset; else return NULL; } else { return ((char *)service) + parm->offset; @@ -1587,8 +1587,8 @@ static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx, strlower(name); if (service == NULL) { - data = lp_ctx->Globals.param_opt; - mem_ctx = lp_ctx; + data = lp_ctx->globals->param_opt; + mem_ctx = lp_ctx->globals; } else { data = service->param_opt; mem_ctx = service; @@ -1619,7 +1619,7 @@ static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx, paramo->value = talloc_strdup(paramo, pszParmValue); paramo->flags = flags; if (service == NULL) { - DLIST_ADD(lp_ctx->Globals.param_opt, paramo); + DLIST_ADD(lp_ctx->globals->param_opt, paramo); } else { DLIST_ADD(service->param_opt, paramo); } @@ -2098,8 +2098,8 @@ static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, bool show_def print_parameter(&parm_table[i], lp_parm_ptr(lp_ctx, NULL, &parm_table[i]), f); fprintf(f, "\n"); } - if (lp_ctx->Globals.param_opt != NULL) { - for (data = lp_ctx->Globals.param_opt; data; + if (lp_ctx->globals->param_opt != NULL) { + for (data = lp_ctx->globals->param_opt; data; data = data->next) { fprintf(f, "\t%s = %s\n", data->key, data->value); } @@ -2264,12 +2264,12 @@ static int lp_destructor(struct loadparm_context *lp_ctx) { struct param_opt *data; - if (lp_ctx->Globals.param_opt != NULL) { + if (lp_ctx->globals->param_opt != NULL) { struct param_opt *next; - for (data = lp_ctx->Globals.param_opt; data; data=next) { + for (data = lp_ctx->globals->param_opt; data; data=next) { next = data->next; if (data->flags & FLAG_CMDLINE) continue; - DLIST_REMOVE(lp_ctx->Globals.param_opt, data); + DLIST_REMOVE(lp_ctx->globals->param_opt, data); talloc_free(data); } } @@ -2286,12 +2286,13 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) char *myname; struct loadparm_context *lp_ctx; - lp_ctx = talloc(mem_ctx, struct loadparm_context); + lp_ctx = talloc_zero(mem_ctx, struct loadparm_context); if (lp_ctx == NULL) return NULL; talloc_set_destructor(lp_ctx, lp_destructor); lp_ctx->bInGlobalSection = true; + lp_ctx->globals = talloc_zero(lp_ctx, struct loadparm_global); DEBUG(3, ("Initialising global parameters\n")); @@ -2300,7 +2301,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) parm_table[i].type == P_USTRING) && parm_table[i].offset != -1 && !(parm_table[i].flags & FLAG_CMDLINE)) { - char **r = ((char *)(parm_table[i].class == P_LOCAL)?&sDefault:&(lp_ctx->Globals)) + parm_table[i].offset; + char **r = ((char *)(parm_table[i].class == P_LOCAL)?&sDefault:lp_ctx->globals) + parm_table[i].offset; *r = talloc_strdup(lp_ctx, ""); } } @@ -2465,13 +2466,13 @@ bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context filename = talloc_strdup(lp_ctx, filename); - lp_ctx->Globals.szConfigFile = filename; + lp_ctx->globals->szConfigFile = filename; lp_ctx->bInGlobalSection = true; - n2 = standard_sub_basic(lp_ctx, lp_ctx->Globals.szConfigFile); + n2 = standard_sub_basic(lp_ctx, lp_ctx->globals->szConfigFile); DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); - add_to_file_list(lp_ctx, lp_ctx->Globals.szConfigFile, n2); + add_to_file_list(lp_ctx, lp_ctx->globals->szConfigFile, n2); /* We get sections first, so have to start 'behind' to make up */ lp_ctx->currentService = NULL; @@ -2490,11 +2491,11 @@ bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context bLoaded = true; - if (!lp_ctx->Globals.szWINSservers && lp_ctx->Globals.bWINSsupport) { + if (!lp_ctx->globals->szWINSservers && lp_ctx->globals->bWINSsupport) { lp_do_global_parameter(lp_ctx, "wins server", "127.0.0.1"); } - panic_action = lp_ctx->Globals.panic_action; + panic_action = lp_ctx->globals->panic_action; reload_charcnv(); -- cgit From f2cd9f66337e5915147236aa4762b8221cfdfa8b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:31:58 +0100 Subject: r26343: Remove bLoaded global variable. (This used to be commit 6c3ca6aa816158f3ec27ce6a2bd872017f86c993) --- source4/param/loadparm.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 330a245e51..56f97e4602 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -64,8 +64,6 @@ #include "param/param.h" #include "param/loadparm.h" -static bool bLoaded = false; - #define standard_sub_basic talloc_strdup static bool do_parameter(const char *, const char *, void *); @@ -2236,7 +2234,7 @@ static void lp_add_auto_services(struct loadparm_context *lp_ctx, bool lp_loaded(void) { - return bLoaded; + return (global_loadparm != NULL); } /*************************************************************************** @@ -2489,8 +2487,6 @@ bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context lp_add_hidden(lp_ctx, "IPC$", "IPC"); lp_add_hidden(lp_ctx, "ADMIN$", "DISK"); - bLoaded = true; - if (!lp_ctx->globals->szWINSservers && lp_ctx->globals->bWINSsupport) { lp_do_global_parameter(lp_ctx, "wins server", "127.0.0.1"); } -- cgit From b0eec881310dddd23b0053399263972307448da7 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:32:01 +0100 Subject: r26344: Fix memory access. (This used to be commit 966248108f97d237b41ff2d14ec1e592d61d8db3) --- source4/param/loadparm.c | 67 ++++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 34 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 56f97e4602..412c9d8031 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -259,7 +259,7 @@ struct loadparm_service sDefault = { /* local variables */ struct loadparm_context { struct loadparm_global *globals; - struct loadparm_service **ServicePtrs; + struct loadparm_service **services; int iNumServices; struct loadparm_service *currentService; bool bInGlobalSection; @@ -1067,37 +1067,35 @@ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, /* find an invalid one */ for (i = 0; i < lp_ctx->iNumServices; i++) - if (lp_ctx->ServicePtrs[i] == NULL) + if (lp_ctx->services[i] == NULL) break; /* if not, then create one */ if (i == lp_ctx->iNumServices) { struct loadparm_service **tsp; - tsp = talloc_realloc(lp_ctx, lp_ctx->ServicePtrs, struct loadparm_service *, - num_to_alloc); + tsp = talloc_realloc(lp_ctx, lp_ctx->services, struct loadparm_service *, num_to_alloc); if (!tsp) { - DEBUG(0,("lp_add_service: failed to enlarge ServicePtrs!\n")); + DEBUG(0,("lp_add_service: failed to enlarge services!\n")); return NULL; - } - else { - lp_ctx->ServicePtrs = tsp; - lp_ctx->ServicePtrs[lp_ctx->iNumServices] = NULL; + } else { + lp_ctx->services = tsp; + lp_ctx->services[lp_ctx->iNumServices] = NULL; } lp_ctx->iNumServices++; } - lp_ctx->ServicePtrs[i] = init_service(lp_ctx); - if (lp_ctx->ServicePtrs[i] == NULL) { + lp_ctx->services[i] = init_service(lp_ctx->services); + if (lp_ctx->services[i] == NULL) { DEBUG(0,("lp_add_service: out of memory!\n")); return NULL; } - copy_service(lp_ctx->ServicePtrs[i], &tservice, NULL); + copy_service(lp_ctx->services[i], &tservice, NULL); if (name != NULL) - string_set(lp_ctx->ServicePtrs[i], &lp_ctx->ServicePtrs[i]->szService, name); - return lp_ctx->ServicePtrs[i]; + string_set(lp_ctx->services[i], &lp_ctx->services[i]->szService, name); + return lp_ctx->services[i]; } /*************************************************************************** @@ -1192,7 +1190,7 @@ bool lp_add_printer(struct loadparm_context *lp_ctx, /* the printer name is set to the service name. */ string_set(service, &service->szPrintername, pszPrintername); string_set(service, &service->comment, comment); - service->bBrowseable = sDefault.bBrowseable; + service->bBrowseable = default_service->bBrowseable; /* Printers cannot be read_only. */ service->bRead_only = false; /* Printer services must be printable. */ @@ -1266,9 +1264,9 @@ static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx int iService; for (iService = lp_ctx->iNumServices - 1; iService >= 0; iService--) - if (lp_ctx->ServicePtrs[iService] != NULL && - strwicmp(lp_ctx->ServicePtrs[iService]->szService, pszServiceName) == 0) { - return lp_ctx->ServicePtrs[iService]; + if (lp_ctx->services[iService] != NULL && + strwicmp(lp_ctx->services[iService]->szService, pszServiceName) == 0) { + return lp_ctx->services[iService]; } return NULL; @@ -2079,7 +2077,8 @@ static bool is_default(int i) Display the contents of the global structure. ***************************************************************************/ -static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults) +static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, + bool show_defaults) { int i; struct param_opt *data; @@ -2146,10 +2145,10 @@ static void dump_a_service(struct loadparm_service * pService, FILE * f) } } -bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, int snum, const char *parm_name, FILE * f, - bool isGlobal) +bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, + struct loadparm_service *service, + const char *parm_name, FILE * f, bool isGlobal) { - struct loadparm_service * pService = lp_ctx->ServicePtrs[snum]; struct parm_struct *parm; void *ptr; @@ -2161,7 +2160,7 @@ bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, int snum, const char * if (isGlobal) ptr = ((char *)&sDefault) + parm->offset; else - ptr = ((char *)pService) + parm->offset; + ptr = ((char *)service) + parm->offset; print_parameter(parm, ptr, f); fprintf(f, "\n"); @@ -2191,7 +2190,7 @@ struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, return &parm_table[(*i)++]; } } else { - struct loadparm_service *pService = lp_ctx->ServicePtrs[snum]; + struct loadparm_service *pService = lp_ctx->services[snum]; for (; parm_table[*i].label; (*i)++) { if (parm_table[*i].class == P_LOCAL && @@ -2247,12 +2246,12 @@ void lp_killunused(struct loadparm_context *lp_ctx, { int i; for (i = 0; i < lp_ctx->iNumServices; i++) { - if (lp_ctx->ServicePtrs[i] == NULL) + if (lp_ctx->services[i] == NULL) continue; if (!snumused || !snumused(smb, i)) { - talloc_free(lp_ctx->ServicePtrs[i]); - lp_ctx->ServicePtrs[i] = NULL; + talloc_free(lp_ctx->services[i]); + lp_ctx->services[i] = NULL; } } } @@ -2527,7 +2526,7 @@ void lp_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults, dump_a_service(&sDefault, f); for (iService = 0; iService < maxtoprint; iService++) - lp_dump_one(f, show_defaults, lp_ctx->ServicePtrs[iService]); + lp_dump_one(f, show_defaults, lp_ctx->services[iService]); } /*************************************************************************** @@ -2546,7 +2545,7 @@ void lp_dump_one(FILE *f, bool show_defaults, struct loadparm_service *service) struct loadparm_service *lp_servicebynum(struct loadparm_context *lp_ctx, int snum) { - return lp_ctx->ServicePtrs[snum]; + return lp_ctx->services[snum]; } struct loadparm_service *lp_service(struct loadparm_context *lp_ctx, @@ -2556,17 +2555,17 @@ struct loadparm_service *lp_service(struct loadparm_context *lp_ctx, char *serviceName; for (iService = lp_ctx->iNumServices - 1; iService >= 0; iService--) { - if (lp_ctx->ServicePtrs[iService] && - lp_ctx->ServicePtrs[iService]->szService) { + if (lp_ctx->services[iService] && + lp_ctx->services[iService]->szService) { /* * The substitution here is used to support %U is * service names */ serviceName = standard_sub_basic( - lp_ctx->ServicePtrs[iService], - lp_ctx->ServicePtrs[iService]->szService); + lp_ctx->services[iService], + lp_ctx->services[iService]->szService); if (strequal(serviceName, service_name)) - return lp_ctx->ServicePtrs[iService]; + return lp_ctx->services[iService]; } } -- cgit From fe77606ecc88da1ec421658c8266babbad6689c6 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:32:05 +0100 Subject: r26345: Fix dumping an individual parameter. (This used to be commit e8065a7f8f9156708b76720de50af29eb0092d59) --- source4/param/loadparm.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 412c9d8031..c3f06512dc 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2147,7 +2147,7 @@ static void dump_a_service(struct loadparm_service * pService, FILE * f) bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, struct loadparm_service *service, - const char *parm_name, FILE * f, bool isGlobal) + const char *parm_name, FILE * f) { struct parm_struct *parm; void *ptr; @@ -2157,10 +2157,7 @@ bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, return false; } - if (isGlobal) - ptr = ((char *)&sDefault) + parm->offset; - else - ptr = ((char *)service) + parm->offset; + ptr = lp_parm_ptr(lp_ctx, service,parm); print_parameter(parm, ptr, f); fprintf(f, "\n"); -- cgit From 5f9aeca0d66c55896a0ab20cf73dda4ca4b22a39 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:32:13 +0100 Subject: r26347: More tests. (This used to be commit 5d927b5ca792c2c9da4a1c4f5c3ae880637895e3) --- source4/param/loadparm.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index c3f06512dc..32aaa13b87 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -554,20 +554,6 @@ struct parm_struct *lp_parm_table(void) return parm_table; } -static TALLOC_CTX *lp_talloc; - -/******************************************************************* a - Free up temporary memory - called from the main loop. -********************************************************************/ - -void lp_talloc_free(void) -{ - if (!lp_talloc) - return; - talloc_free(lp_talloc); - lp_talloc = NULL; -} - /******************************************************************* Convenience routine to grab string parameters into temporary memory and run standard_sub_basic on them. The buffers can be written to by @@ -975,7 +961,7 @@ double lp_parm_double(struct loadparm_context *lp_ctx, { const char *value = lp_get_parametric(lp_ctx, service, type, option); - if (value) + if (value != NULL) return lp_double(value); return default_v; @@ -990,7 +976,7 @@ bool lp_parm_bool(struct loadparm_context *lp_ctx, { const char *value = lp_get_parametric(lp_ctx, service, type, option); - if (value) + if (value != NULL) return lp_bool(value); return default_v; -- cgit From fd88c3ca2480fabb90c0d8fc701394bb59f99481 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:32:18 +0100 Subject: r26348: Avoid use of autofree context. (This used to be commit eebcf7e1b06ca48cc53bdd12efa01fcf0cff8aa3) --- source4/param/loadparm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 32aaa13b87..19f5b8b6ca 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -888,16 +888,16 @@ const char *lp_parm_string(struct loadparm_context *lp_ctx, /* Parametric option has following syntax: 'Type: option = value' */ /* Returned value is allocated in 'lp_talloc' context */ -const char **lp_parm_string_list(struct loadparm_context *lp_ctx, +const char **lp_parm_string_list(TALLOC_CTX *mem_ctx, + struct loadparm_context *lp_ctx, struct loadparm_service *service, const char *type, const char *option, const char *separator) { const char *value = lp_get_parametric(lp_ctx, service, type, option); - if (value) - return str_list_make(talloc_autofree_context(), value, - separator); + if (value != NULL) + return str_list_make(mem_ctx, value, separator); return NULL; } -- cgit From 5991108c81afa820f811d8520c51d42e9ca0ec49 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:32:23 +0100 Subject: r26349: More tests. (This used to be commit c440b130a9d57c1928fb5aef34fa4c00c7e46cff) --- source4/param/loadparm.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 19f5b8b6ca..8cdc82c961 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -1187,10 +1187,10 @@ bool lp_add_printer(struct loadparm_context *lp_ctx, return true; } -/*************************************************************************** - Map a parameter's string representation to something we can use. - Returns False if the parameter string is not recognised, else TRUE. -***************************************************************************/ +/** + * Map a parameter's string representation to something we can use. + * Returns False if the parameter string is not recognised, else TRUE. + */ static int map_parameter(const char *pszParmName) { @@ -1213,7 +1213,7 @@ static int map_parameter(const char *pszParmName) } -/* +/** return the parameter structure for a parameter */ struct parm_struct *lp_parm_struct(const char *name) @@ -1223,7 +1223,7 @@ struct parm_struct *lp_parm_struct(const char *name) return &parm_table[parmnum]; } -/* +/** return the parameter pointer for a parameter */ void *lp_parm_ptr(struct loadparm_context *lp_ctx, @@ -1348,11 +1348,10 @@ static void copy_service(struct loadparm_service *pserviceDest, } } -/*************************************************************************** -Check a service for consistency. Return False if the service is in any way -incomplete or faulty, else True. -***************************************************************************/ - +/** + * Check a service for consistency. Return False if the service is in any way + * incomplete or faulty, else True. + */ static bool service_ok(struct loadparm_service *service) { bool bRetval; @@ -1429,7 +1428,6 @@ static void add_to_file_list(struct loadparm_context *lp_ctx, /******************************************************************* Check if a config file has changed date. ********************************************************************/ - bool lp_file_list_changed(struct loadparm_context *lp_ctx) { struct file_lists *f; -- cgit From 5c6eacdb04cd18d96dc6313c2a6f934925967e79 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:32:27 +0100 Subject: r26350: More tests. (This used to be commit 87799f55d5d85bf9a15a9637143faa32183b181b) --- source4/param/loadparm.c | 74 +++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 45 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8cdc82c961..8155dce444 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2198,24 +2198,15 @@ struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, } -/*************************************************************************** - Auto-load some home services. -***************************************************************************/ - +/** + * Auto-load some home services. + */ static void lp_add_auto_services(struct loadparm_context *lp_ctx, const char *str) { return; } -/*************************************************************************** - Have we loaded a services file yet? -***************************************************************************/ - -bool lp_loaded(void) -{ - return (global_loadparm != NULL); -} /*************************************************************************** Unload unused services. @@ -2255,9 +2246,9 @@ static int lp_destructor(struct loadparm_context *lp_ctx) return 0; } -/*************************************************************************** - Initialise the global parameter structure. -***************************************************************************/ +/** + * Initialise the global parameter structure. + */ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) { int i; @@ -2423,10 +2414,11 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) return lp_ctx; } -/*************************************************************************** - Load the services array from the services file. Return True on success, - False on failure. -***************************************************************************/ +/** + * Load the services array from the services file. + * + * Return True on success, False on failure. + */ bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context **ret_lp) { char *n2; @@ -2481,18 +2473,18 @@ bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context return bRetval; } -/*************************************************************************** - Return the max number of services. -***************************************************************************/ +/** + * Return the max number of services. + */ int lp_numservices(struct loadparm_context *lp_ctx) { return lp_ctx->iNumServices; } -/*************************************************************************** -Display the contents of the services array in human-readable form. -***************************************************************************/ +/** + * Display the contents of the services array in human-readable form. + */ void lp_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults, int maxtoprint) @@ -2510,10 +2502,9 @@ void lp_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults, lp_dump_one(f, show_defaults, lp_ctx->services[iService]); } -/*************************************************************************** -Display the contents of one service in human-readable form. -***************************************************************************/ - +/** + * Display the contents of one service in human-readable form. + */ void lp_dump_one(FILE *f, bool show_defaults, struct loadparm_service *service) { if (service != NULL) { @@ -2555,9 +2546,9 @@ struct loadparm_service *lp_service(struct loadparm_context *lp_ctx, } -/******************************************************************* - A useful volume label function. -********************************************************************/ +/** + * A useful volume label function. + */ const char *volume_label(struct loadparm_service *service) { const char *ret = lp_volume(service); @@ -2567,15 +2558,9 @@ const char *volume_label(struct loadparm_service *service) } -/*********************************************************** - If we are PDC then prefer us as DMB -************************************************************/ - -bool lp_domain_logons(struct loadparm_context *lp_ctx) -{ - return (lp_server_role(lp_ctx) == ROLE_DOMAIN_CONTROLLER); -} - +/** + * If we are PDC then prefer us as DMB + */ const char *lp_printername(struct loadparm_service *service) { const char *ret = _lp_printername(service); @@ -2586,10 +2571,9 @@ const char *lp_printername(struct loadparm_service *service) } -/******************************************************************* - Return the max print jobs per queue. -********************************************************************/ - +/** + * Return the max print jobs per queue. + */ int lp_maxprintjobs(struct loadparm_service *service) { int maxjobs = (service != NULL) ? service->iMaxPrintJobs : sDefault.iMaxPrintJobs; -- cgit From 75ac6cd318ae58aacc77785ba93af50bfe354b63 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:32:33 +0100 Subject: r26351: Fix handling of flags when there are multiple loadparm contexts around. (This used to be commit c6da76b6142015588854b7a04becbc56679fa51d) --- source4/param/loadparm.c | 521 +++++++++++++++++++++++------------------------ 1 file changed, 253 insertions(+), 268 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8155dce444..b045269192 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -256,21 +256,6 @@ struct loadparm_service sDefault = { .bCIFileSystem = false, }; -/* local variables */ -struct loadparm_context { - struct loadparm_global *globals; - struct loadparm_service **services; - int iNumServices; - struct loadparm_service *currentService; - bool bInGlobalSection; - struct file_lists { - struct file_lists *next; - char *name; - char *subfname; - time_t modtime; - } *file_lists; -}; - struct loadparm_context *global_loadparm = NULL; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) @@ -367,184 +352,190 @@ static const struct enum_list enum_server_role[] = { }; -/* Note: We do not initialise the defaults union - it is not allowed in ANSI C - * - * Note: We have a flag called FLAG_DEVELOPER but is not used at this time, it - * is implied in current control logic. This may change at some later time. A - * flag value of 0 means - show as development option only. - * - * The FLAG_HIDE is explicit. Parameters set this way do NOT appear in any edit - * screen in SWAT. This is used to exclude parameters as well as to squash all - * parameters that have been duplicated by pseudonyms. - */ - #define GLOBAL_VAR(name) offsetof(struct loadparm_global, name) #define LOCAL_VAR(name) offsetof(struct loadparm_service, name) static struct parm_struct parm_table[] = { - {"config file", P_STRING, P_GLOBAL, GLOBAL_VAR(szConfigFile), NULL, NULL, FLAG_HIDE}, - - {"server role", P_ENUM, P_GLOBAL, GLOBAL_VAR(server_role), NULL, enum_server_role, FLAG_BASIC}, - - {"dos charset", P_STRING, P_GLOBAL, GLOBAL_VAR(dos_charset), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"unix charset", P_STRING, P_GLOBAL, GLOBAL_VAR(unix_charset), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ncalrpc dir", P_STRING, P_GLOBAL, GLOBAL_VAR(ncalrpc_dir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"display charset", P_STRING, P_GLOBAL, GLOBAL_VAR(display_charset), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"comment", P_STRING, P_LOCAL, LOCAL_VAR(comment), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"path", P_STRING, P_LOCAL, LOCAL_VAR(szPath), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"directory", P_STRING, P_LOCAL, LOCAL_VAR(szPath), NULL, NULL, FLAG_HIDE}, - {"workgroup", P_USTRING, P_GLOBAL, GLOBAL_VAR(szWorkgroup), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"realm", P_STRING, P_GLOBAL, GLOBAL_VAR(szRealm), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"netbios name", P_USTRING, P_GLOBAL, GLOBAL_VAR(szNetbiosName), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"netbios aliases", P_LIST, P_GLOBAL, GLOBAL_VAR(szNetbiosAliases), NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"netbios scope", P_USTRING, P_GLOBAL, GLOBAL_VAR(szNetbiosScope), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"server string", P_STRING, P_GLOBAL, GLOBAL_VAR(szServerString), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"interfaces", P_LIST, P_GLOBAL, GLOBAL_VAR(szInterfaces), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"bind interfaces only", P_BOOL, P_GLOBAL, GLOBAL_VAR(bBindInterfacesOnly), NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"ntvfs handler", P_LIST, P_LOCAL, LOCAL_VAR(ntvfs_handler), NULL, NULL, FLAG_ADVANCED}, - {"ntptr providor", P_STRING, P_GLOBAL, GLOBAL_VAR(ntptr_providor), NULL, NULL, FLAG_ADVANCED}, - {"dcerpc endpoint servers", P_LIST, P_GLOBAL, GLOBAL_VAR(dcerpc_ep_servers), NULL, NULL, FLAG_ADVANCED}, - {"server services", P_LIST, P_GLOBAL, GLOBAL_VAR(server_services), NULL, NULL, FLAG_ADVANCED}, - - {"security", P_ENUM, P_GLOBAL, GLOBAL_VAR(security), NULL, enum_security, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"encrypt passwords", P_BOOL, P_GLOBAL, GLOBAL_VAR(bEncryptPasswords), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"null passwords", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNullPasswords), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"obey pam restrictions", P_BOOL, P_GLOBAL, GLOBAL_VAR(bObeyPamRestrictions), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"password server", P_LIST, P_GLOBAL, GLOBAL_VAR(szPasswordServers), NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"sam database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSAM_URL), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"secrets database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSECRETS_URL), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"spoolss database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSPOOLSS_URL), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"wins config database", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINS_CONFIG_URL), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"wins database", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINS_URL), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"private dir", P_STRING, P_GLOBAL, GLOBAL_VAR(szPrivateDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"passwd chat", P_STRING, P_GLOBAL, GLOBAL_VAR(szPasswdChat), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"password level", P_INTEGER, P_GLOBAL, GLOBAL_VAR(pwordlevel), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"lanman auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bLanmanAuth), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"ntlm auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNTLMAuth), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client NTLMv2 auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientNTLMv2Auth), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client lanman auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientLanManAuth), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client plaintext auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientPlaintextAuth), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"client use spnego principal", P_BOOL, P_GLOBAL, GLOBAL_VAR(client_use_spnego_principal), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"config file", P_STRING, P_GLOBAL, GLOBAL_VAR(szConfigFile), NULL, NULL}, + + {"server role", P_ENUM, P_GLOBAL, GLOBAL_VAR(server_role), NULL, enum_server_role}, + + {"dos charset", P_STRING, P_GLOBAL, GLOBAL_VAR(dos_charset), NULL, NULL}, + {"unix charset", P_STRING, P_GLOBAL, GLOBAL_VAR(unix_charset), NULL, NULL}, + {"ncalrpc dir", P_STRING, P_GLOBAL, GLOBAL_VAR(ncalrpc_dir), NULL, NULL}, + {"display charset", P_STRING, P_GLOBAL, GLOBAL_VAR(display_charset), NULL, NULL}, + {"comment", P_STRING, P_LOCAL, LOCAL_VAR(comment), NULL, NULL}, + {"path", P_STRING, P_LOCAL, LOCAL_VAR(szPath), NULL, NULL}, + {"directory", P_STRING, P_LOCAL, LOCAL_VAR(szPath), NULL, NULL}, + {"workgroup", P_USTRING, P_GLOBAL, GLOBAL_VAR(szWorkgroup), NULL, NULL}, + {"realm", P_STRING, P_GLOBAL, GLOBAL_VAR(szRealm), NULL, NULL}, + {"netbios name", P_USTRING, P_GLOBAL, GLOBAL_VAR(szNetbiosName), NULL, NULL}, + {"netbios aliases", P_LIST, P_GLOBAL, GLOBAL_VAR(szNetbiosAliases), NULL, NULL}, + {"netbios scope", P_USTRING, P_GLOBAL, GLOBAL_VAR(szNetbiosScope), NULL, NULL}, + {"server string", P_STRING, P_GLOBAL, GLOBAL_VAR(szServerString), NULL, NULL}, + {"interfaces", P_LIST, P_GLOBAL, GLOBAL_VAR(szInterfaces), NULL, NULL}, + {"bind interfaces only", P_BOOL, P_GLOBAL, GLOBAL_VAR(bBindInterfacesOnly), NULL, NULL}, + {"ntvfs handler", P_LIST, P_LOCAL, LOCAL_VAR(ntvfs_handler), NULL, NULL}, + {"ntptr providor", P_STRING, P_GLOBAL, GLOBAL_VAR(ntptr_providor), NULL, NULL}, + {"dcerpc endpoint servers", P_LIST, P_GLOBAL, GLOBAL_VAR(dcerpc_ep_servers), NULL, NULL}, + {"server services", P_LIST, P_GLOBAL, GLOBAL_VAR(server_services), NULL, NULL}, + + {"security", P_ENUM, P_GLOBAL, GLOBAL_VAR(security), NULL, enum_security}, + {"encrypt passwords", P_BOOL, P_GLOBAL, GLOBAL_VAR(bEncryptPasswords), NULL, NULL}, + {"null passwords", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNullPasswords), NULL, NULL}, + {"obey pam restrictions", P_BOOL, P_GLOBAL, GLOBAL_VAR(bObeyPamRestrictions), NULL, NULL}, + {"password server", P_LIST, P_GLOBAL, GLOBAL_VAR(szPasswordServers), NULL, NULL}, + {"sam database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSAM_URL), NULL, NULL}, + {"secrets database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSECRETS_URL), NULL, NULL}, + {"spoolss database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSPOOLSS_URL), NULL, NULL}, + {"wins config database", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINS_CONFIG_URL), NULL, NULL}, + {"wins database", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINS_URL), NULL, NULL}, + {"private dir", P_STRING, P_GLOBAL, GLOBAL_VAR(szPrivateDir), NULL, NULL}, + {"passwd chat", P_STRING, P_GLOBAL, GLOBAL_VAR(szPasswdChat), NULL, NULL}, + {"password level", P_INTEGER, P_GLOBAL, GLOBAL_VAR(pwordlevel), NULL, NULL}, + {"lanman auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bLanmanAuth), NULL, NULL}, + {"ntlm auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNTLMAuth), NULL, NULL}, + {"client NTLMv2 auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientNTLMv2Auth), NULL, NULL}, + {"client lanman auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientLanManAuth), NULL, NULL}, + {"client plaintext auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientPlaintextAuth), NULL, NULL}, + {"client use spnego principal", P_BOOL, P_GLOBAL, GLOBAL_VAR(client_use_spnego_principal), NULL, NULL}, - {"read only", P_BOOL, P_LOCAL, LOCAL_VAR(bRead_only), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE}, + {"read only", P_BOOL, P_LOCAL, LOCAL_VAR(bRead_only), NULL, NULL}, - {"create mask", P_OCTAL, P_LOCAL, LOCAL_VAR(iCreate_mask), NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, - {"force create mode", P_OCTAL, P_LOCAL, LOCAL_VAR(iCreate_force_mode), NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, - {"directory mask", P_OCTAL, P_LOCAL, LOCAL_VAR(iDir_mask), NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, - {"force directory mode", P_OCTAL, P_LOCAL, LOCAL_VAR(iDir_force_mode), NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE}, + {"create mask", P_OCTAL, P_LOCAL, LOCAL_VAR(iCreate_mask), NULL, NULL}, + {"force create mode", P_OCTAL, P_LOCAL, LOCAL_VAR(iCreate_force_mode), NULL, NULL}, + {"directory mask", P_OCTAL, P_LOCAL, LOCAL_VAR(iDir_mask), NULL, NULL}, + {"force directory mode", P_OCTAL, P_LOCAL, LOCAL_VAR(iDir_force_mode), NULL, NULL}, - {"hosts allow", P_LIST, P_LOCAL, LOCAL_VAR(szHostsallow), NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"hosts deny", P_LIST, P_LOCAL, LOCAL_VAR(szHostsdeny), NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, + {"hosts allow", P_LIST, P_LOCAL, LOCAL_VAR(szHostsallow), NULL, NULL}, + {"hosts deny", P_LIST, P_LOCAL, LOCAL_VAR(szHostsdeny), NULL, NULL}, - {"log level", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), handle_debuglevel, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"debuglevel", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), handle_debuglevel, NULL, FLAG_HIDE}, - {"log file", P_STRING, P_GLOBAL, GLOBAL_VAR(logfile), handle_logfile, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"log level", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), handle_debuglevel, NULL}, + {"debuglevel", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), handle_debuglevel, NULL}, + {"log file", P_STRING, P_GLOBAL, GLOBAL_VAR(logfile), handle_logfile, NULL}, - {"smb ports", P_LIST, P_GLOBAL, GLOBAL_VAR(smb_ports), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"nbt port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(nbt_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"dgram port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(dgram_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"cldap port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(cldap_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"krb5 port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(krb5_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"kpasswd port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(kpasswd_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"web port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(web_port), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls enabled", P_BOOL, P_GLOBAL, GLOBAL_VAR(tls_enabled), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls keyfile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_keyfile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls certfile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_certfile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls cafile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_cafile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls crlfile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_crlfile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"tls dh params file", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_dhpfile), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"swat directory", P_STRING, P_GLOBAL, GLOBAL_VAR(swat_directory), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"large readwrite", P_BOOL, P_GLOBAL, GLOBAL_VAR(bLargeReadwrite), NULL, NULL, FLAG_DEVELOPER}, - {"server max protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(srv_maxprotocol), NULL, enum_protocol, FLAG_DEVELOPER}, - {"server min protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(srv_minprotocol), NULL, enum_protocol, FLAG_DEVELOPER}, - {"client max protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(cli_maxprotocol), NULL, enum_protocol, FLAG_DEVELOPER}, - {"client min protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(cli_minprotocol), NULL, enum_protocol, FLAG_DEVELOPER}, - {"unicode", P_BOOL, P_GLOBAL, GLOBAL_VAR(bUnicode), NULL, NULL, FLAG_DEVELOPER}, - {"read raw", P_BOOL, P_GLOBAL, GLOBAL_VAR(bReadRaw), NULL, NULL, FLAG_DEVELOPER}, - {"write raw", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWriteRaw), NULL, NULL, FLAG_DEVELOPER}, - {"disable netbios", P_BOOL, P_GLOBAL, GLOBAL_VAR(bDisableNetbios), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"smb ports", P_LIST, P_GLOBAL, GLOBAL_VAR(smb_ports), NULL, NULL}, + {"nbt port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(nbt_port), NULL, NULL}, + {"dgram port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(dgram_port), NULL, NULL}, + {"cldap port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(cldap_port), NULL, NULL}, + {"krb5 port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(krb5_port), NULL, NULL}, + {"kpasswd port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(kpasswd_port), NULL, NULL}, + {"web port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(web_port), NULL, NULL}, + {"tls enabled", P_BOOL, P_GLOBAL, GLOBAL_VAR(tls_enabled), NULL, NULL}, + {"tls keyfile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_keyfile), NULL, NULL}, + {"tls certfile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_certfile), NULL, NULL}, + {"tls cafile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_cafile), NULL, NULL}, + {"tls crlfile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_crlfile), NULL, NULL}, + {"tls dh params file", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_dhpfile), NULL, NULL}, + {"swat directory", P_STRING, P_GLOBAL, GLOBAL_VAR(swat_directory), NULL, NULL}, + {"large readwrite", P_BOOL, P_GLOBAL, GLOBAL_VAR(bLargeReadwrite), NULL, NULL}, + {"server max protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(srv_maxprotocol), NULL, enum_protocol}, + {"server min protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(srv_minprotocol), NULL, enum_protocol}, + {"client max protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(cli_maxprotocol), NULL, enum_protocol}, + {"client min protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(cli_minprotocol), NULL, enum_protocol}, + {"unicode", P_BOOL, P_GLOBAL, GLOBAL_VAR(bUnicode), NULL, NULL}, + {"read raw", P_BOOL, P_GLOBAL, GLOBAL_VAR(bReadRaw), NULL, NULL}, + {"write raw", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWriteRaw), NULL, NULL}, + {"disable netbios", P_BOOL, P_GLOBAL, GLOBAL_VAR(bDisableNetbios), NULL, NULL}, - {"nt status support", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNTStatusSupport), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - - {"announce version", P_STRING, P_GLOBAL, GLOBAL_VAR(szAnnounceVersion), NULL, NULL, FLAG_DEVELOPER}, - {"announce as", P_ENUM, P_GLOBAL, GLOBAL_VAR(announce_as), NULL, enum_announce_as, FLAG_DEVELOPER}, - {"max mux", P_INTEGER, P_GLOBAL, GLOBAL_VAR(max_mux), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"max xmit", P_BYTES, P_GLOBAL, GLOBAL_VAR(max_xmit), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - - {"name resolve order", P_LIST, P_GLOBAL, GLOBAL_VAR(szNameResolveOrder), NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"max wins ttl", P_INTEGER, P_GLOBAL, GLOBAL_VAR(max_wins_ttl), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"min wins ttl", P_INTEGER, P_GLOBAL, GLOBAL_VAR(min_wins_ttl), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"time server", P_BOOL, P_GLOBAL, GLOBAL_VAR(bTimeServer), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"unix extensions", P_BOOL, P_GLOBAL, GLOBAL_VAR(bUnixExtensions), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"use spnego", P_BOOL, P_GLOBAL, GLOBAL_VAR(bUseSpnego), NULL, NULL, FLAG_DEVELOPER}, - {"server signing", P_ENUM, P_GLOBAL, GLOBAL_VAR(server_signing), NULL, enum_smb_signing_vals, FLAG_ADVANCED}, - {"client signing", P_ENUM, P_GLOBAL, GLOBAL_VAR(client_signing), NULL, enum_smb_signing_vals, FLAG_ADVANCED}, - {"rpc big endian", P_BOOL, P_GLOBAL, GLOBAL_VAR(bRpcBigEndian), NULL, NULL, FLAG_DEVELOPER}, - - {"max connections", P_INTEGER, P_LOCAL, LOCAL_VAR(iMaxConnections), NULL, NULL, FLAG_SHARE}, - {"paranoid server security", P_BOOL, P_GLOBAL, GLOBAL_VAR(paranoid_server_security), NULL, NULL, FLAG_DEVELOPER}, - {"socket options", P_STRING, P_GLOBAL, GLOBAL_VAR(socket_options), NULL, NULL, FLAG_DEVELOPER}, - - {"strict sync", P_BOOL, P_LOCAL, LOCAL_VAR(bStrictSync), NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, - {"case insensitive filesystem", P_BOOL, P_LOCAL, LOCAL_VAR(bCIFileSystem), NULL, NULL, FLAG_ADVANCED | FLAG_SHARE}, - - {"max print jobs", P_INTEGER, P_LOCAL, LOCAL_VAR(iMaxPrintJobs), NULL, NULL, FLAG_PRINT}, - {"printable", P_BOOL, P_LOCAL, LOCAL_VAR(bPrint_ok), NULL, NULL, FLAG_PRINT}, - {"print ok", P_BOOL, P_LOCAL, LOCAL_VAR(bPrint_ok), NULL, NULL, FLAG_HIDE}, + {"nt status support", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNTStatusSupport), NULL, NULL}, + + {"announce version", P_STRING, P_GLOBAL, GLOBAL_VAR(szAnnounceVersion), NULL, NULL}, + {"announce as", P_ENUM, P_GLOBAL, GLOBAL_VAR(announce_as), NULL, enum_announce_as}, + {"max mux", P_INTEGER, P_GLOBAL, GLOBAL_VAR(max_mux), NULL, NULL}, + {"max xmit", P_BYTES, P_GLOBAL, GLOBAL_VAR(max_xmit), NULL, NULL}, + + {"name resolve order", P_LIST, P_GLOBAL, GLOBAL_VAR(szNameResolveOrder), NULL, NULL}, + {"max wins ttl", P_INTEGER, P_GLOBAL, GLOBAL_VAR(max_wins_ttl), NULL, NULL}, + {"min wins ttl", P_INTEGER, P_GLOBAL, GLOBAL_VAR(min_wins_ttl), NULL, NULL}, + {"time server", P_BOOL, P_GLOBAL, GLOBAL_VAR(bTimeServer), NULL, NULL}, + {"unix extensions", P_BOOL, P_GLOBAL, GLOBAL_VAR(bUnixExtensions), NULL, NULL}, + {"use spnego", P_BOOL, P_GLOBAL, GLOBAL_VAR(bUseSpnego), NULL, NULL}, + {"server signing", P_ENUM, P_GLOBAL, GLOBAL_VAR(server_signing), NULL, enum_smb_signing_vals}, + {"client signing", P_ENUM, P_GLOBAL, GLOBAL_VAR(client_signing), NULL, enum_smb_signing_vals}, + {"rpc big endian", P_BOOL, P_GLOBAL, GLOBAL_VAR(bRpcBigEndian), NULL, NULL}, + + {"max connections", P_INTEGER, P_LOCAL, LOCAL_VAR(iMaxConnections), NULL, NULL}, + {"paranoid server security", P_BOOL, P_GLOBAL, GLOBAL_VAR(paranoid_server_security), NULL, NULL}, + {"socket options", P_STRING, P_GLOBAL, GLOBAL_VAR(socket_options), NULL, NULL}, + + {"strict sync", P_BOOL, P_LOCAL, LOCAL_VAR(bStrictSync), NULL, NULL}, + {"case insensitive filesystem", P_BOOL, P_LOCAL, LOCAL_VAR(bCIFileSystem), NULL, NULL}, + + {"max print jobs", P_INTEGER, P_LOCAL, LOCAL_VAR(iMaxPrintJobs), NULL, NULL}, + {"printable", P_BOOL, P_LOCAL, LOCAL_VAR(bPrint_ok), NULL, NULL}, + {"print ok", P_BOOL, P_LOCAL, LOCAL_VAR(bPrint_ok), NULL, NULL}, - {"printer name", P_STRING, P_LOCAL, LOCAL_VAR(szPrintername), NULL, NULL, FLAG_PRINT}, - {"printer", P_STRING, P_LOCAL, LOCAL_VAR(szPrintername), NULL, NULL, FLAG_HIDE}, + {"printer name", P_STRING, P_LOCAL, LOCAL_VAR(szPrintername), NULL, NULL}, + {"printer", P_STRING, P_LOCAL, LOCAL_VAR(szPrintername), NULL, NULL}, - {"map system", P_BOOL, P_LOCAL, LOCAL_VAR(bMap_system), NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"map hidden", P_BOOL, P_LOCAL, LOCAL_VAR(bMap_hidden), NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - {"map archive", P_BOOL, P_LOCAL, LOCAL_VAR(bMap_archive), NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, + {"map system", P_BOOL, P_LOCAL, LOCAL_VAR(bMap_system), NULL, NULL}, + {"map hidden", P_BOOL, P_LOCAL, LOCAL_VAR(bMap_hidden), NULL, NULL}, + {"map archive", P_BOOL, P_LOCAL, LOCAL_VAR(bMap_archive), NULL, NULL}, - {"preferred master", P_ENUM, P_GLOBAL, GLOBAL_VAR(bPreferredMaster), NULL, enum_bool_auto, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"prefered master", P_ENUM, P_GLOBAL, GLOBAL_VAR(bPreferredMaster), NULL, enum_bool_auto, FLAG_HIDE}, - {"local master", P_BOOL, P_GLOBAL, GLOBAL_VAR(bLocalMaster), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_DEVELOPER}, - {"browseable", P_BOOL, P_LOCAL, LOCAL_VAR(bBrowseable), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, - {"browsable", P_BOOL, P_LOCAL, LOCAL_VAR(bBrowseable), NULL, NULL, FLAG_HIDE}, + {"preferred master", P_ENUM, P_GLOBAL, GLOBAL_VAR(bPreferredMaster), NULL, enum_bool_auto}, + {"prefered master", P_ENUM, P_GLOBAL, GLOBAL_VAR(bPreferredMaster), NULL, enum_bool_auto}, + {"local master", P_BOOL, P_GLOBAL, GLOBAL_VAR(bLocalMaster), NULL, NULL}, + {"browseable", P_BOOL, P_LOCAL, LOCAL_VAR(bBrowseable), NULL, NULL}, + {"browsable", P_BOOL, P_LOCAL, LOCAL_VAR(bBrowseable), NULL, NULL}, - {"wins server", P_LIST, P_GLOBAL, GLOBAL_VAR(szWINSservers), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"wins support", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWINSsupport), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"dns proxy", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWINSdnsProxy), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER}, - {"wins hook", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINSHook), NULL, NULL, FLAG_ADVANCED}, + {"wins server", P_LIST, P_GLOBAL, GLOBAL_VAR(szWINSservers), NULL, NULL}, + {"wins support", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWINSsupport), NULL, NULL}, + {"dns proxy", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWINSdnsProxy), NULL, NULL}, + {"wins hook", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINSHook), NULL, NULL}, - {"csc policy", P_ENUM, P_LOCAL, LOCAL_VAR(iCSCPolicy), NULL, enum_csc_policy, FLAG_SHARE | FLAG_GLOBAL}, + {"csc policy", P_ENUM, P_LOCAL, LOCAL_VAR(iCSCPolicy), NULL, enum_csc_policy}, - {"strict locking", P_BOOL, P_LOCAL, LOCAL_VAR(bStrictLocking), NULL, NULL, FLAG_SHARE | FLAG_GLOBAL}, - - {"share backend", P_STRING, P_GLOBAL, GLOBAL_VAR(szShareBackend), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"preload", P_STRING, P_GLOBAL, GLOBAL_VAR(szAutoServices), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"auto services", P_STRING, P_GLOBAL, GLOBAL_VAR(szAutoServices), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"lock dir", P_STRING, P_GLOBAL, GLOBAL_VAR(szLockDir), NULL, NULL, FLAG_HIDE}, - {"lock directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szLockDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"modules dir", P_STRING, P_GLOBAL, GLOBAL_VAR(szModulesDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"pid directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szPidDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"js include", P_LIST, P_GLOBAL, GLOBAL_VAR(jsInclude), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"setup directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szSetupDir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"strict locking", P_BOOL, P_LOCAL, LOCAL_VAR(bStrictLocking), NULL, NULL}, + + {"share backend", P_STRING, P_GLOBAL, GLOBAL_VAR(szShareBackend), NULL, NULL}, + {"preload", P_STRING, P_GLOBAL, GLOBAL_VAR(szAutoServices), NULL, NULL}, + {"auto services", P_STRING, P_GLOBAL, GLOBAL_VAR(szAutoServices), NULL, NULL}, + {"lock dir", P_STRING, P_GLOBAL, GLOBAL_VAR(szLockDir), NULL, NULL}, + {"lock directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szLockDir), NULL, NULL}, + {"modules dir", P_STRING, P_GLOBAL, GLOBAL_VAR(szModulesDir), NULL, NULL}, + {"pid directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szPidDir), NULL, NULL}, + {"js include", P_LIST, P_GLOBAL, GLOBAL_VAR(jsInclude), NULL, NULL}, + {"setup directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szSetupDir), NULL, NULL}, - {"socket address", P_STRING, P_GLOBAL, GLOBAL_VAR(szSocketAddress), NULL, NULL, FLAG_DEVELOPER}, - {"copy", P_STRING, P_LOCAL, LOCAL_VAR(szCopy), handle_copy, NULL, FLAG_HIDE}, - {"include", P_STRING, P_LOCAL, LOCAL_VAR(szInclude), handle_include, NULL, FLAG_HIDE}, + {"socket address", P_STRING, P_GLOBAL, GLOBAL_VAR(szSocketAddress), NULL, NULL}, + {"copy", P_STRING, P_LOCAL, LOCAL_VAR(szCopy), handle_copy, NULL}, + {"include", P_STRING, P_LOCAL, LOCAL_VAR(szInclude), handle_include, NULL}, - {"available", P_BOOL, P_LOCAL, LOCAL_VAR(bAvailable), NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT}, - {"volume", P_STRING, P_LOCAL, LOCAL_VAR(volume), NULL, NULL, FLAG_SHARE }, - {"fstype", P_STRING, P_LOCAL, LOCAL_VAR(fstype), NULL, NULL, FLAG_SHARE}, + {"available", P_BOOL, P_LOCAL, LOCAL_VAR(bAvailable), NULL, NULL}, + {"volume", P_STRING, P_LOCAL, LOCAL_VAR(volume), NULL, NULL }, + {"fstype", P_STRING, P_LOCAL, LOCAL_VAR(fstype), NULL, NULL}, - {"panic action", P_STRING, P_GLOBAL, GLOBAL_VAR(panic_action), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"panic action", P_STRING, P_GLOBAL, GLOBAL_VAR(panic_action), NULL, NULL}, - {"msdfs root", P_BOOL, P_LOCAL, LOCAL_VAR(bMSDfsRoot), NULL, NULL, FLAG_SHARE}, - {"host msdfs", P_BOOL, P_GLOBAL, GLOBAL_VAR(bHostMSDfs), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"winbind separator", P_STRING, P_GLOBAL, GLOBAL_VAR(szWinbindSeparator), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"winbindd socket directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szWinbinddSocketDirectory), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"winbind sealed pipes", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWinbindSealedPipes), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"template shell", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateShell), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, - {"template homedir", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateHomedir), NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER }, + {"msdfs root", P_BOOL, P_LOCAL, LOCAL_VAR(bMSDfsRoot), NULL, NULL}, + {"host msdfs", P_BOOL, P_GLOBAL, GLOBAL_VAR(bHostMSDfs), NULL, NULL}, + {"winbind separator", P_STRING, P_GLOBAL, GLOBAL_VAR(szWinbindSeparator), NULL, NULL }, + {"winbindd socket directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szWinbinddSocketDirectory), NULL, NULL }, + {"winbind sealed pipes", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWinbindSealedPipes), NULL, NULL }, + {"template shell", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateShell), NULL, NULL }, + {"template homedir", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateHomedir), NULL, NULL }, - {NULL, P_BOOL, P_NONE, 0, NULL, NULL, 0} + {NULL, P_BOOL, P_NONE, 0, NULL, NULL} }; +/* local variables */ +struct loadparm_context { + struct loadparm_global *globals; + struct loadparm_service **services; + int iNumServices; + struct loadparm_service *currentService; + bool bInGlobalSection; + struct file_lists { + struct file_lists *next; + char *name; + char *subfname; + time_t modtime; + } *file_lists; + unsigned int flags[NUMPARAMETERS]; +}; + + /* return the parameter table @@ -554,11 +545,13 @@ struct parm_struct *lp_parm_table(void) return parm_table; } -/******************************************************************* - Convenience routine to grab string parameters into temporary memory - and run standard_sub_basic on them. The buffers can be written to by - callers without affecting the source string. -********************************************************************/ +/** + * Convenience routine to grab string parameters into temporary memory + * and run standard_sub_basic on them. + * + * The buffers can be written to by + * callers without affecting the source string. + */ static const char *lp_string(const char *s) { @@ -805,9 +798,9 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx, } -/******************************************************************* -convenience routine to return int parameters. -********************************************************************/ +/** + * convenience routine to return int parameters. + */ static int lp_int(const char *s) { @@ -819,9 +812,9 @@ static int lp_int(const char *s) return strtol(s, NULL, 0); } -/******************************************************************* -convenience routine to return unsigned long parameters. -********************************************************************/ +/** + * convenience routine to return unsigned long parameters. + */ static int lp_ulong(const char *s) { @@ -833,9 +826,9 @@ static int lp_ulong(const char *s) return strtoul(s, NULL, 0); } -/******************************************************************* -convenience routine to return unsigned long parameters. -********************************************************************/ +/** + * convenience routine to return unsigned long parameters. + */ static double lp_double(const char *s) { @@ -847,9 +840,9 @@ static double lp_double(const char *s) return strtod(s, NULL); } -/******************************************************************* -convenience routine to return boolean parameters. -********************************************************************/ +/** + * convenience routine to return boolean parameters. + */ static bool lp_bool(const char *s) { bool ret = false; @@ -983,9 +976,9 @@ bool lp_parm_bool(struct loadparm_context *lp_ctx, } -/*************************************************************************** - Initialise a service to the defaults. -***************************************************************************/ +/** + * Initialise a service to the defaults. + */ static struct loadparm_service *init_service(TALLOC_CTX *mem_ctx) { @@ -1017,10 +1010,10 @@ static bool string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src) -/*************************************************************************** - Add a new service to the services array initialising it with the given - service. -***************************************************************************/ +/** + * Add a new service to the services array initialising it with the given + * service. + */ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, const struct loadparm_service *pservice, @@ -1084,10 +1077,10 @@ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, return lp_ctx->services[i]; } -/*************************************************************************** - Add a new home service, with the specified home directory, defaults coming - from service ifrom. -***************************************************************************/ +/** + * Add a new home service, with the specified home directory, defaults coming + * from service ifrom. + */ bool lp_add_home(struct loadparm_context *lp_ctx, const char *pszHomename, @@ -1120,9 +1113,9 @@ bool lp_add_home(struct loadparm_context *lp_ctx, return true; } -/*************************************************************************** - Add the IPC service. -***************************************************************************/ +/** + * Add the IPC service. + */ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, const char *fstype) @@ -1153,9 +1146,9 @@ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, return true; } -/*************************************************************************** - Add a new printer service, with defaults coming from service iFrom. -***************************************************************************/ +/** + * Add a new printer service, with defaults coming from service iFrom. + */ bool lp_add_printer(struct loadparm_context *lp_ctx, const char *pszPrintername, @@ -1240,9 +1233,9 @@ void *lp_parm_ptr(struct loadparm_context *lp_ctx, } } -/*************************************************************************** -Find a service by name. Otherwise works like get_service. -***************************************************************************/ +/** + * Find a service by name. Otherwise works like get_service. + */ static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx, const char *pszServiceName) @@ -1258,10 +1251,10 @@ static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx return NULL; } -/*************************************************************************** - Copy a service structure to another. - If pcopymapDest is NULL then copy all fields -***************************************************************************/ +/** + * Copy a service structure to another. + * If pcopymapDest is NULL then copy all fields + */ static void copy_service(struct loadparm_service *pserviceDest, struct loadparm_service *pserviceSource, @@ -1545,9 +1538,9 @@ static void init_copymap(struct loadparm_service *pservice) pservice->copymap[i] = true; } -/*************************************************************************** - Process a parametric option -***************************************************************************/ +/** + * Process a parametric option + */ static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx, struct loadparm_service *service, const char *pszParmName, @@ -1690,14 +1683,14 @@ static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, break; } - if (parm_table[parmnum].flags & FLAG_DEFAULT) { - parm_table[parmnum].flags &= ~FLAG_DEFAULT; + if (lp_ctx->flags[parmnum] & FLAG_DEFAULT) { + lp_ctx->flags[parmnum] &= ~FLAG_DEFAULT; /* we have to also unset FLAG_DEFAULT on aliases */ for (i=parmnum-1;i>=0 && parm_table[i].offset == parm_table[parmnum].offset;i--) { - parm_table[i].flags &= ~FLAG_DEFAULT; + lp_ctx->flags[i] &= ~FLAG_DEFAULT; } for (i=parmnum+1;iflags[i] &= ~FLAG_DEFAULT; } } return true; @@ -1718,14 +1711,9 @@ bool lp_do_global_parameter(struct loadparm_context *lp_ctx, return true; } - if (parm_table[parmnum].flags & FLAG_DEPRECATED) { - DEBUG(1, ("WARNING: The \"%s\" option is deprecated\n", - pszParmName)); - } - /* if the flag has been set on the command line, then don't allow override, but don't report an error */ - if (parm_table[parmnum].flags & FLAG_CMDLINE) { + if (lp_ctx->flags[parmnum] & FLAG_CMDLINE) { return true; } @@ -1751,14 +1739,9 @@ bool lp_do_service_parameter(struct loadparm_context *lp_ctx, return true; } - if (parm_table[parmnum].flags & FLAG_DEPRECATED) { - DEBUG(1, ("WARNING: The \"%s\" option is deprecated\n", - pszParmName)); - } - /* if the flag has been set on the command line, then don't allow override, but don't report an error */ - if (parm_table[parmnum].flags & FLAG_CMDLINE) { + if (lp_ctx->flags[parmnum] & FLAG_CMDLINE) { return true; } @@ -1784,9 +1767,9 @@ bool lp_do_service_parameter(struct loadparm_context *lp_ctx, pszParmValue, lp_ctx); } -/*************************************************************************** - Process a parameter. -***************************************************************************/ +/** + * Process a parameter. + */ static bool do_parameter(const char *pszParmName, const char *pszParmValue, void *userdata) @@ -1847,20 +1830,20 @@ bool lp_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName, } /* reset the CMDLINE flag in case this has been called before */ - parm_table[parmnum].flags &= ~FLAG_CMDLINE; + lp_ctx->flags[parmnum] &= ~FLAG_CMDLINE; if (!lp_do_global_parameter(lp_ctx, pszParmName, pszParmValue)) { return false; } - parm_table[parmnum].flags |= FLAG_CMDLINE; + lp_ctx->flags[parmnum] |= FLAG_CMDLINE; /* we have to also set FLAG_CMDLINE on aliases */ for (i=parmnum-1;i>=0 && parm_table[i].offset == parm_table[parmnum].offset;i--) { - parm_table[i].flags |= FLAG_CMDLINE; + lp_ctx->flags[i] |= FLAG_CMDLINE; } for (i=parmnum+1;iflags[i] |= FLAG_CMDLINE; } return true; @@ -1895,9 +1878,9 @@ bool lp_set_option(struct loadparm_context *lp_ctx, const char *option) #define BOOLSTR(b) ((b) ? "Yes" : "No") -/*************************************************************************** - Print a parameter of the specified type. -***************************************************************************/ +/** + * Print a parameter of the specified type. + */ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) { @@ -1946,9 +1929,9 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) } } -/*************************************************************************** - Check if two parameters are equal. -***************************************************************************/ +/** + * Check if two parameters are equal. + */ static bool equal_parameter(parm_type type, void *ptr1, void *ptr2) { @@ -1980,11 +1963,13 @@ static bool equal_parameter(parm_type type, void *ptr1, void *ptr2) return false; } -/*************************************************************************** - Process a new section (service). At this stage all sections are services. - Later we'll have special sections that permit server parameters to be set. - Returns True on success, False on failure. -***************************************************************************/ +/** + * Process a new section (service). + * + * At this stage all sections are services. + * Later we'll have special sections that permit server parameters to be set. + * Returns True on success, False on failure. + */ static bool do_section(const char *pszSectionName, void *userdata) { @@ -2027,9 +2012,9 @@ static bool do_section(const char *pszSectionName, void *userdata) } -/*************************************************************************** - Determine if a partcular base parameter is currentl set to the default value. -***************************************************************************/ +/** + * Determine if a partcular base parameter is currentl set to the default value. + */ static bool is_default(int i) { @@ -2057,9 +2042,9 @@ static bool is_default(int i) return false; } -/*************************************************************************** -Display the contents of the global structure. -***************************************************************************/ +/** + *Display the contents of the global structure. + */ static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults) @@ -2073,7 +2058,7 @@ static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, if (parm_table[i].class == P_GLOBAL && parm_table[i].offset != -1 && (i == 0 || (parm_table[i].offset != parm_table[i - 1].offset))) { - if (!show_defaults && (parm_table[i].flags & FLAG_DEFAULT)) + if (!show_defaults && (lp_ctx->flags[i] & FLAG_DEFAULT)) continue; fprintf(f, "\t%s = ", parm_table[i].label); print_parameter(&parm_table[i], lp_parm_ptr(lp_ctx, NULL, &parm_table[i]), f); @@ -2088,9 +2073,9 @@ static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, } -/*************************************************************************** - Display the contents of a single services record. -***************************************************************************/ +/** + * Display the contents of a single services record. + */ static void dump_a_service(struct loadparm_service * pService, FILE * f) { @@ -2148,10 +2133,10 @@ bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, return true; } -/*************************************************************************** - Return info about the next service in a service. snum==-1 gives the globals. - Return NULL when out of parameters. -***************************************************************************/ +/** + * Return info about the next service in a service. snum==-1 gives the globals. + * Return NULL when out of parameters. + */ struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, int *i, int allparameters) @@ -2208,9 +2193,9 @@ static void lp_add_auto_services(struct loadparm_context *lp_ctx, } -/*************************************************************************** - Unload unused services. -***************************************************************************/ +/** + * Unload unused services. + */ void lp_killunused(struct loadparm_context *lp_ctx, struct smbsrv_connection *smb, @@ -2269,7 +2254,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) if ((parm_table[i].type == P_STRING || parm_table[i].type == P_USTRING) && parm_table[i].offset != -1 && - !(parm_table[i].flags & FLAG_CMDLINE)) { + !(lp_ctx->flags[i] & FLAG_CMDLINE)) { char **r = ((char *)(parm_table[i].class == P_LOCAL)?&sDefault:lp_ctx->globals) + parm_table[i].offset; *r = talloc_strdup(lp_ctx, ""); } @@ -2406,8 +2391,8 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) dyn_SETUPDIR); for (i = 0; parm_table[i].label; i++) { - if (!(parm_table[i].flags & FLAG_CMDLINE)) { - parm_table[i].flags |= FLAG_DEFAULT; + if (!(lp_ctx->flags[i] & FLAG_CMDLINE)) { + lp_ctx->flags[i] |= FLAG_DEFAULT; } } -- cgit From dd7e5ed88c48f4ee39e53be07c8839791e914e45 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Dec 2007 23:32:37 +0100 Subject: r26352: Don't make lp_load create a new context. (This used to be commit d0d5c1a823a6601292c061dba2b6f4bde2b9e3dd) --- source4/param/loadparm.c | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index b045269192..564dede3a5 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -88,7 +88,6 @@ struct loadparm_global char *szServerString; char *szAutoServices; char *szPasswdChat; - const char *szConfigFile; char *szShareBackend; char *szSAM_URL; char *szSECRETS_URL; @@ -356,8 +355,6 @@ static const struct enum_list enum_server_role[] = { #define LOCAL_VAR(name) offsetof(struct loadparm_service, name) static struct parm_struct parm_table[] = { - {"config file", P_STRING, P_GLOBAL, GLOBAL_VAR(szConfigFile), NULL, NULL}, - {"server role", P_ENUM, P_GLOBAL, GLOBAL_VAR(server_role), NULL, enum_server_role}, {"dos charset", P_STRING, P_GLOBAL, GLOBAL_VAR(dos_charset), NULL, NULL}, @@ -521,6 +518,7 @@ static struct parm_struct parm_table[] = { /* local variables */ struct loadparm_context { + const char *szConfigFile; struct loadparm_global *globals; struct loadparm_service **services; int iNumServices; @@ -682,7 +680,6 @@ _PUBLIC_ FN_GLOBAL_BOOL(lp_disable_netbios, bDisableNetbios) _PUBLIC_ FN_GLOBAL_BOOL(lp_wins_support, bWINSsupport) _PUBLIC_ FN_GLOBAL_BOOL(lp_wins_dns_proxy, bWINSdnsProxy) _PUBLIC_ FN_GLOBAL_STRING(lp_wins_hook, szWINSHook) -_PUBLIC_ FN_GLOBAL_STRING(lp_configfile, szConfigFile) _PUBLIC_ FN_GLOBAL_BOOL(lp_local_master, bLocalMaster) _PUBLIC_ FN_GLOBAL_BOOL(lp_readraw, bReadRaw) _PUBLIC_ FN_GLOBAL_BOOL(lp_large_readwrite, bLargeReadwrite) @@ -2399,35 +2396,30 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) return lp_ctx; } +const char *lp_configfile(struct loadparm_context *lp_ctx) +{ + return lp_ctx->szConfigFile; +} + /** * Load the services array from the services file. * * Return True on success, False on failure. */ -bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context **ret_lp) +bool lp_load(struct loadparm_context *lp_ctx, const char *filename) { char *n2; bool bRetval; - struct loadparm_context *lp_ctx; - - if (ret_lp != NULL) - *ret_lp = NULL; - - lp_ctx = loadparm_init(mem_ctx); - if (lp_ctx == NULL) - return false; - - global_loadparm = lp_ctx; filename = talloc_strdup(lp_ctx, filename); - lp_ctx->globals->szConfigFile = filename; + lp_ctx->szConfigFile = filename; lp_ctx->bInGlobalSection = true; - n2 = standard_sub_basic(lp_ctx, lp_ctx->globals->szConfigFile); + n2 = standard_sub_basic(lp_ctx, lp_ctx->szConfigFile); DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); - add_to_file_list(lp_ctx, lp_ctx->globals->szConfigFile, n2); + add_to_file_list(lp_ctx, lp_ctx->szConfigFile, n2); /* We get sections first, so have to start 'behind' to make up */ lp_ctx->currentService = NULL; @@ -2452,9 +2444,6 @@ bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context reload_charcnv(); - if (ret_lp != NULL) - *ret_lp = lp_ctx; - return bRetval; } -- cgit From 6a56c111d7a08e5add115edcdc81653cc19d3a4c Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 11 Dec 2007 09:01:56 +0100 Subject: r26391: samba4 doesn't support 'lmhosts' as resolve module metze (This used to be commit cdb64b41018928122898257f65d2573109b473cc) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 564dede3a5..07b8cbbdf4 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2270,7 +2270,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) myname = get_myname(); lp_do_global_parameter(lp_ctx, "netbios name", myname); SAFE_FREE(myname); - lp_do_global_parameter(lp_ctx, "name resolve order", "lmhosts wins host bcast"); + lp_do_global_parameter(lp_ctx, "name resolve order", "wins host bcast"); lp_do_global_parameter(lp_ctx, "fstype", FSTYPE_STRING); lp_do_global_parameter(lp_ctx, "ntvfs handler", "unixuid default"); -- cgit From 21b024aa82b49a05919e89885e60913c8cb444b2 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 13 Dec 2007 09:13:35 +0100 Subject: r26423: try to fix the build on solaris metze (This used to be commit 5b62180946a7cb9f3981ce740cfe830f6f0a00ff) --- source4/param/loadparm.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 07b8cbbdf4..8b84cefc19 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2252,7 +2252,12 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) parm_table[i].type == P_USTRING) && parm_table[i].offset != -1 && !(lp_ctx->flags[i] & FLAG_CMDLINE)) { - char **r = ((char *)(parm_table[i].class == P_LOCAL)?&sDefault:lp_ctx->globals) + parm_table[i].offset; + char **r; + if (parm_table[i].class == P_LOCAL) { + r = (char **)(&sDefault + parm_table[i].offset); + } else { + r = (char **)(lp_ctx->globals + parm_table[i].offset); + } *r = talloc_strdup(lp_ctx, ""); } } -- cgit From 45d349eb80ebd6b08a8bbcb66f657e89c3480a92 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 13 Dec 2007 10:28:18 +0100 Subject: r26425: fix crash bug, sorry I should have tested that... metze (This used to be commit 61d2f1a03b374404fd0f3e6191cda82ff0295834) --- source4/param/loadparm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 8b84cefc19..ef53a29b2b 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2254,9 +2254,9 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) !(lp_ctx->flags[i] & FLAG_CMDLINE)) { char **r; if (parm_table[i].class == P_LOCAL) { - r = (char **)(&sDefault + parm_table[i].offset); + r = (char **)(((char *)&sDefault) + parm_table[i].offset); } else { - r = (char **)(lp_ctx->globals + parm_table[i].offset); + r = (char **)(((char *)lp_ctx->globals) + parm_table[i].offset); } *r = talloc_strdup(lp_ctx, ""); } -- cgit From d891c0c74a03d797aed1c5ac0329fd9d1d78da63 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 13 Dec 2007 22:46:09 +0100 Subject: r26429: Avoid use of global_smb_iconv_convenience. (This used to be commit d37136b7abfbba75ef2e5ab855eb3382b9648b8c) --- source4/param/loadparm.c | 63 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 18 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index ef53a29b2b..af3986c885 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -531,6 +531,7 @@ struct loadparm_context { time_t modtime; } *file_lists; unsigned int flags[NUMPARAMETERS]; + struct smb_iconv_convenience *iconv_convenience; }; @@ -858,9 +859,11 @@ static bool lp_bool(const char *s) } -/* Return parametric option from a given service. Type is a part of option before ':' */ -/* Parametric option has following syntax: 'Type: option = value' */ -/* Returned value is allocated in 'lp_talloc' context */ +/** + * Return parametric option from a given service. Type is a part of option before ':' + * Parametric option has following syntax: 'Type: option = value' + * Returned value is allocated in 'lp_talloc' context + */ const char *lp_parm_string(struct loadparm_context *lp_ctx, struct loadparm_service *service, const char *type, @@ -874,9 +877,11 @@ const char *lp_parm_string(struct loadparm_context *lp_ctx, return NULL; } -/* Return parametric option from a given service. Type is a part of option before ':' */ -/* Parametric option has following syntax: 'Type: option = value' */ -/* Returned value is allocated in 'lp_talloc' context */ +/** + * Return parametric option from a given service. Type is a part of option before ':' + * Parametric option has following syntax: 'Type: option = value' + * Returned value is allocated in 'lp_talloc' context + */ const char **lp_parm_string_list(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, @@ -892,8 +897,10 @@ const char **lp_parm_string_list(TALLOC_CTX *mem_ctx, return NULL; } -/* Return parametric option from a given service. Type is a part of option before ':' */ -/* Parametric option has following syntax: 'Type: option = value' */ +/** + * Return parametric option from a given service. Type is a part of option before ':' + * Parametric option has following syntax: 'Type: option = value' + */ int lp_parm_int(struct loadparm_context *lp_ctx, struct loadparm_service *service, const char *type, @@ -907,7 +914,8 @@ int lp_parm_int(struct loadparm_context *lp_ctx, return default_v; } -/* Return parametric option from a given service. Type is a part of +/** + * Return parametric option from a given service. Type is a part of * option before ':'. * Parametric option has following syntax: 'Type: option = value'. */ @@ -929,9 +937,11 @@ int lp_parm_bytes(struct loadparm_context *lp_ctx, return default_v; } -/* Return parametric option from a given service. Type is a part of option before ':' */ -/* Parametric option has following syntax: 'Type: option = value' */ - +/** + * Return parametric option from a given service. + * Type is a part of option before ':' + * Parametric option has following syntax: 'Type: option = value' + */ unsigned long lp_parm_ulong(struct loadparm_context *lp_ctx, struct loadparm_service *service, const char *type, const char *option, unsigned long default_v) @@ -957,8 +967,10 @@ double lp_parm_double(struct loadparm_context *lp_ctx, return default_v; } -/* Return parametric option from a given service. Type is a part of option before ':' */ -/* Parametric option has following syntax: 'Type: option = value' */ +/** + * Return parametric option from a given service. Type is a part of option before ':' + * Parametric option has following syntax: 'Type: option = value' + */ bool lp_parm_bool(struct loadparm_context *lp_ctx, struct loadparm_service *service, const char *type, @@ -986,9 +998,9 @@ static struct loadparm_service *init_service(TALLOC_CTX *mem_ctx) } /** - Set a string value, deallocating any existing space, and allocing the space - for the string -**/ + * Set a string value, deallocating any existing space, and allocing the space + * for the string + */ static bool string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src) { talloc_free(*dest); @@ -2447,7 +2459,7 @@ bool lp_load(struct loadparm_context *lp_ctx, const char *filename) panic_action = lp_ctx->globals->panic_action; - reload_charcnv(); + reload_charcnv(lp_ctx); return bRetval; } @@ -2561,3 +2573,18 @@ int lp_maxprintjobs(struct loadparm_service *service) return maxjobs; } + +struct smb_iconv_convenience *lp_iconv_convenience(struct loadparm_context *lp_ctx) +{ + if (lp_ctx == NULL) { + return smb_iconv_convenience_init(talloc_autofree_context(), + "CP850", "UTF8", "UTF8", true); + } + return lp_ctx->iconv_convenience; +} + +_PUBLIC_ void reload_charcnv(struct loadparm_context *lp_ctx) +{ + talloc_free(lp_ctx->iconv_convenience); + lp_ctx->iconv_convenience = smb_iconv_convenience_init_lp(lp_ctx, lp_ctx); +} -- cgit From 83f9ee5860e581fda07932e0fda1326fa3bd4d4c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 13 Dec 2007 22:46:30 +0100 Subject: r26433: Don't crash when a NULL lp_ctx is specified to a lp_parm_* function. (This used to be commit 7f28b53b579182500c57c4ac0c3d7591f5ddb214) --- source4/param/loadparm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index af3986c885..2b1937de05 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -764,6 +764,9 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx, { char *vfskey; struct param_opt *data; + + if (lp_ctx == NULL) + return NULL; data = (service == NULL ? lp_ctx->globals->param_opt : service->param_opt); -- cgit From 2bf0cdd01cf399bf28125f9e2a0d419f4e94996c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 13 Dec 2007 22:46:33 +0100 Subject: r26434: Remove display charset from iconv convenience context. (This used to be commit a76625994abf9906d54ae11f9c171f89063cf508) --- source4/param/loadparm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 2b1937de05..982c186ae9 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2464,6 +2464,12 @@ bool lp_load(struct loadparm_context *lp_ctx, const char *filename) reload_charcnv(lp_ctx); + /* FIXME: Check locale in environment for this: */ + if (strcmp(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx)) != 0) + d_set_iconv(smb_iconv_open(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx), true)); + else + d_set_iconv((smb_iconv_t)-1); + return bRetval; } @@ -2581,7 +2587,7 @@ struct smb_iconv_convenience *lp_iconv_convenience(struct loadparm_context *lp_c { if (lp_ctx == NULL) { return smb_iconv_convenience_init(talloc_autofree_context(), - "CP850", "UTF8", "UTF8", true); + "CP850", "UTF8", true); } return lp_ctx->iconv_convenience; } -- cgit From 1167c9d9c6c12d142204cfa3cad94f594f7fba76 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 13 Dec 2007 22:46:41 +0100 Subject: r26436: Remove default of 0 for integer parameters when a lp_ctx of NULL is specified (This used to be commit f3395db91a4dd3a89be55684f12313159d1acdd4) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 982c186ae9..064f67ba82 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -611,7 +611,7 @@ static const char *lp_string(const char *s) char fn_name(void) {return(*(char *)(ptr));} #endif #define FN_GLOBAL_INTEGER(fn_name,var_name) \ - int fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return 0; return lp_ctx->globals->var_name;} + int fn_name(struct loadparm_context *lp_ctx) {return lp_ctx->globals->var_name;} #define FN_LOCAL_STRING(fn_name,val) \ const char *fn_name(struct loadparm_service *service) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault.val)));} -- cgit From 1bc38f9fb39eec46b31fa4ef36699b8f52f52350 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 15 Dec 2007 22:23:45 +0100 Subject: r26464: Tighten dependencies. (This used to be commit 2b7cfa5d9ab94e1ff2d60719cd3749810463ab15) --- source4/param/loadparm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 064f67ba82..d732a09f2f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2586,8 +2586,11 @@ int lp_maxprintjobs(struct loadparm_service *service) struct smb_iconv_convenience *lp_iconv_convenience(struct loadparm_context *lp_ctx) { if (lp_ctx == NULL) { - return smb_iconv_convenience_init(talloc_autofree_context(), + static struct smb_iconv_convenience *fallback_ic = NULL; + if (fallback_ic == NULL) + fallback_ic = smb_iconv_convenience_init(talloc_autofree_context(), "CP850", "UTF8", true); + return fallback_ic; } return lp_ctx->iconv_convenience; } -- cgit From 01b96e47cd77c345ac27c4c882e353852e49f22b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 17 Dec 2007 08:32:00 +0100 Subject: r26498: Fix memory leak in iconv code. (This used to be commit 8795697db56e4ca6715950d68f5ec370604fcc76) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index d732a09f2f..6c23a1d520 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2466,7 +2466,7 @@ bool lp_load(struct loadparm_context *lp_ctx, const char *filename) /* FIXME: Check locale in environment for this: */ if (strcmp(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx)) != 0) - d_set_iconv(smb_iconv_open(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx), true)); + d_set_iconv(smb_iconv_open(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx))); else d_set_iconv((smb_iconv_t)-1); -- cgit From 32f439bfa458f7936b507cb5a1e3c74bcb8c68bf Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 17 Dec 2007 11:12:36 +0100 Subject: r26503: Change order of arguments in param interface so it's easier to make the section name optional. Fix several smaller bits and pieces in the Python code. (This used to be commit 1b89311e5fa4fcde060df50e580dc221205cc8ca) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 6c23a1d520..51d4beb0ae 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2525,7 +2525,7 @@ struct loadparm_service *lp_service(struct loadparm_context *lp_ctx, { int iService; char *serviceName; - + for (iService = lp_ctx->iNumServices - 1; iService >= 0; iService--) { if (lp_ctx->services[iService] && lp_ctx->services[iService]->szService) { -- cgit From ac65321a46e93dbcfb95a4ec6361e7451e12d64c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 29 Dec 2007 18:14:12 -0600 Subject: r26627: param: Provide a call for loading the system smb.conf. (This used to be commit 2596b479abc8e0d1c064e1d191f2d1c894252f3d) --- source4/param/loadparm.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 51d4beb0ae..66bb44dc3c 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2421,6 +2421,11 @@ const char *lp_configfile(struct loadparm_context *lp_ctx) return lp_ctx->szConfigFile; } +bool lp_load_default(struct loadparm_context *lp_ctx) +{ + return lp_load(lp_ctx, dyn_CONFIGFILE); +} + /** * Load the services array from the services file. * -- cgit From dcc282590b34537fc1ead61c3300172528273b44 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 3 Jan 2008 17:22:12 -0600 Subject: r26654: libcli/smb_composite: Rather than specifying each of the gazillion options for SMB individually, just specify the smbcli_options struct. (This used to be commit 8a97886e24a4b969aa91409c06f423b71a45f6eb) --- source4/param/loadparm.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 66bb44dc3c..2b7b9dd7da 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -63,6 +63,7 @@ #include "lib/util/dlinklist.h" #include "param/param.h" #include "param/loadparm.h" +#include "libcli/raw/libcliraw.h" #define standard_sub_basic talloc_strdup @@ -2605,3 +2606,18 @@ _PUBLIC_ void reload_charcnv(struct loadparm_context *lp_ctx) talloc_free(lp_ctx->iconv_convenience); lp_ctx->iconv_convenience = smb_iconv_convenience_init_lp(lp_ctx, lp_ctx); } + +void lp_smbcli_options(struct loadparm_context *lp_ctx, + struct smbcli_options *options) +{ + options->max_xmit = lp_max_xmit(lp_ctx); + options->max_mux = lp_maxmux(lp_ctx); + options->use_spnego = lp_nt_status_support(lp_ctx) && lp_use_spnego(lp_ctx); + options->signing = lp_client_signing(lp_ctx); + options->request_timeout = SMB_REQUEST_TIMEOUT; + options->ntstatus_support = lp_nt_status_support(lp_ctx); + options->max_protocol = lp_cli_maxprotocol(lp_ctx); + options->unicode = lp_unicode(lp_ctx); + options->use_oplocks = false; + options->use_level2_oplocks = false; +} -- cgit From b3c5fbec47739ee2bb26f900d1f564a36dc3ad82 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 4 Feb 2008 17:59:16 +1100 Subject: Remaining changes to implement the prefork process model To use, run 'smbd -M prefork' By default, only the smb service is preforked. 4 children are created, and all listen for new connections. The Linux Kernel 'wake one' behaviour should ensure that only one is given the oportunity to accept. We need to look into the ideal number of worker children, as well as load balancing behaviours. To change, set: prefork children : smb = 6 valid service names (smb in this example) match those in 'server services'. Andrew Bartlett and David Disseldorp (This used to be commit 35313c0aa3fbfdd943edfb7bafd7645b1a0c54e9) --- source4/param/loadparm.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 2b7b9dd7da..9ec5a59d15 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2408,6 +2408,8 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter_var(lp_ctx, "setup directory", "%s", dyn_SETUPDIR); + lp_do_global_parameter(lp_ctx, "prefork children:smb", "4"); + for (i = 0; parm_table[i].label; i++) { if (!(lp_ctx->flags[i] & FLAG_CMDLINE)) { lp_ctx->flags[i] |= FLAG_DEFAULT; -- cgit From c10e0dee343ba9c4d036f36f40a383db115b7e02 Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Sun, 10 Feb 2008 13:01:20 +0100 Subject: loadparm: Clean up trailing whitespace No code change. Couldn't resist. (This used to be commit abc816b3884838441ab379c9e31e16937caa4734) --- source4/param/loadparm.c | 326 +++++++++++++++++++++++------------------------ 1 file changed, 163 insertions(+), 163 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 9ec5a59d15..e850d82193 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -11,17 +11,17 @@ Copyright (C) Jim McDonough (jmcd@us.ibm.com) 2003. Copyright (C) James Myers 2003 Copyright (C) Jelmer Vernooij 2007 - + 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 3 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, see . */ @@ -40,7 +40,7 @@ * 3) add it to the list of available functions (eg: using FN_GLOBAL_STRING()) * 4) If it's a global then initialise it in init_globals. If a local * (ie. service) parameter then initialise it in the sDefault structure - * + * * * Notes: * The configuration file is processed sequentially for speed. It is NOT @@ -150,7 +150,7 @@ struct loadparm_global char *socket_options; int bWINSsupport; int bWINSdnsProxy; - char *szWINSHook; + char *szWINSHook; int bLocalMaster; int bPreferredMaster; int bEncryptPasswords; @@ -182,7 +182,7 @@ struct loadparm_global /** - * This structure describes a single service. + * This structure describes a single service. */ struct loadparm_service { @@ -228,28 +228,28 @@ struct loadparm_service sDefault = { .szPath = NULL, .szCopy = NULL, .szInclude = NULL, - .szPrintername = NULL, - .szHostsallow = NULL, - .szHostsdeny = NULL, - .comment = NULL, - .volume = NULL, - .fstype = NULL, - .ntvfs_handler = NULL, - .iMaxPrintJobs = 1000, - .iMaxConnections = 0, - .iCSCPolicy = 0, - .bAvailable = true, - .bBrowseable = true, - .bRead_only = true, - .bPrint_ok = false, - .bMap_system = false, - .bMap_hidden = false, - .bMap_archive = true, - .bStrictLocking = true, - .iCreate_mask = 0744, + .szPrintername = NULL, + .szHostsallow = NULL, + .szHostsdeny = NULL, + .comment = NULL, + .volume = NULL, + .fstype = NULL, + .ntvfs_handler = NULL, + .iMaxPrintJobs = 1000, + .iMaxConnections = 0, + .iCSCPolicy = 0, + .bAvailable = true, + .bBrowseable = true, + .bRead_only = true, + .bPrint_ok = false, + .bMap_system = false, + .bMap_hidden = false, + .bMap_archive = true, + .bStrictLocking = true, + .iCreate_mask = 0744, .iCreate_force_mode = 0000, - .iDir_mask = 0755, - .iDir_force_mode = 0000, + .iDir_mask = 0755, + .iDir_force_mode = 0000, .copymap = NULL, .bMSDfsRoot = false, .bStrictSync = false, @@ -261,9 +261,9 @@ struct loadparm_context *global_loadparm = NULL; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) /* prototypes for the special type handlers */ -static bool handle_include(struct loadparm_context *lp_ctx, +static bool handle_include(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr); -static bool handle_copy(struct loadparm_context *lp_ctx, +static bool handle_copy(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr); static bool handle_debuglevel(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr); @@ -308,9 +308,9 @@ static const struct enum_list enum_bool_auto[] = { }; /* Client-side offline caching policy types */ -enum csc_policy { - CSC_POLICY_MANUAL=0, - CSC_POLICY_DOCUMENTS=1, +enum csc_policy { + CSC_POLICY_MANUAL=0, + CSC_POLICY_DOCUMENTS=1, CSC_POLICY_PROGRAMS=2, CSC_POLICY_DISABLE=3 }; @@ -397,12 +397,12 @@ static struct parm_struct parm_table[] = { {"client lanman auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientLanManAuth), NULL, NULL}, {"client plaintext auth", P_BOOL, P_GLOBAL, GLOBAL_VAR(bClientPlaintextAuth), NULL, NULL}, {"client use spnego principal", P_BOOL, P_GLOBAL, GLOBAL_VAR(client_use_spnego_principal), NULL, NULL}, - + {"read only", P_BOOL, P_LOCAL, LOCAL_VAR(bRead_only), NULL, NULL}, - {"create mask", P_OCTAL, P_LOCAL, LOCAL_VAR(iCreate_mask), NULL, NULL}, + {"create mask", P_OCTAL, P_LOCAL, LOCAL_VAR(iCreate_mask), NULL, NULL}, {"force create mode", P_OCTAL, P_LOCAL, LOCAL_VAR(iCreate_force_mode), NULL, NULL}, - {"directory mask", P_OCTAL, P_LOCAL, LOCAL_VAR(iDir_mask), NULL, NULL}, + {"directory mask", P_OCTAL, P_LOCAL, LOCAL_VAR(iDir_mask), NULL, NULL}, {"force directory mode", P_OCTAL, P_LOCAL, LOCAL_VAR(iDir_force_mode), NULL, NULL}, {"hosts allow", P_LIST, P_LOCAL, LOCAL_VAR(szHostsallow), NULL, NULL}, @@ -411,7 +411,7 @@ static struct parm_struct parm_table[] = { {"log level", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), handle_debuglevel, NULL}, {"debuglevel", P_INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), handle_debuglevel, NULL}, {"log file", P_STRING, P_GLOBAL, GLOBAL_VAR(logfile), handle_logfile, NULL}, - + {"smb ports", P_LIST, P_GLOBAL, GLOBAL_VAR(smb_ports), NULL, NULL}, {"nbt port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(nbt_port), NULL, NULL}, {"dgram port", P_INTEGER, P_GLOBAL, GLOBAL_VAR(dgram_port), NULL, NULL}, @@ -435,7 +435,7 @@ static struct parm_struct parm_table[] = { {"read raw", P_BOOL, P_GLOBAL, GLOBAL_VAR(bReadRaw), NULL, NULL}, {"write raw", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWriteRaw), NULL, NULL}, {"disable netbios", P_BOOL, P_GLOBAL, GLOBAL_VAR(bDisableNetbios), NULL, NULL}, - + {"nt status support", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNTStatusSupport), NULL, NULL}, {"announce version", P_STRING, P_GLOBAL, GLOBAL_VAR(szAnnounceVersion), NULL, NULL}, @@ -457,13 +457,13 @@ static struct parm_struct parm_table[] = { {"paranoid server security", P_BOOL, P_GLOBAL, GLOBAL_VAR(paranoid_server_security), NULL, NULL}, {"socket options", P_STRING, P_GLOBAL, GLOBAL_VAR(socket_options), NULL, NULL}, - {"strict sync", P_BOOL, P_LOCAL, LOCAL_VAR(bStrictSync), NULL, NULL}, + {"strict sync", P_BOOL, P_LOCAL, LOCAL_VAR(bStrictSync), NULL, NULL}, {"case insensitive filesystem", P_BOOL, P_LOCAL, LOCAL_VAR(bCIFileSystem), NULL, NULL}, {"max print jobs", P_INTEGER, P_LOCAL, LOCAL_VAR(iMaxPrintJobs), NULL, NULL}, {"printable", P_BOOL, P_LOCAL, LOCAL_VAR(bPrint_ok), NULL, NULL}, {"print ok", P_BOOL, P_LOCAL, LOCAL_VAR(bPrint_ok), NULL, NULL}, - + {"printer name", P_STRING, P_LOCAL, LOCAL_VAR(szPrintername), NULL, NULL}, {"printer", P_STRING, P_LOCAL, LOCAL_VAR(szPrintername), NULL, NULL}, @@ -483,7 +483,7 @@ static struct parm_struct parm_table[] = { {"wins hook", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINSHook), NULL, NULL}, {"csc policy", P_ENUM, P_LOCAL, LOCAL_VAR(iCSCPolicy), NULL, enum_csc_policy}, - + {"strict locking", P_BOOL, P_LOCAL, LOCAL_VAR(bStrictLocking), NULL, NULL}, {"share backend", P_STRING, P_GLOBAL, GLOBAL_VAR(szShareBackend), NULL, NULL}, @@ -495,11 +495,11 @@ static struct parm_struct parm_table[] = { {"pid directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szPidDir), NULL, NULL}, {"js include", P_LIST, P_GLOBAL, GLOBAL_VAR(jsInclude), NULL, NULL}, {"setup directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szSetupDir), NULL, NULL}, - + {"socket address", P_STRING, P_GLOBAL, GLOBAL_VAR(szSocketAddress), NULL, NULL}, {"copy", P_STRING, P_LOCAL, LOCAL_VAR(szCopy), handle_copy, NULL}, {"include", P_STRING, P_LOCAL, LOCAL_VAR(szInclude), handle_include, NULL}, - + {"available", P_BOOL, P_LOCAL, LOCAL_VAR(bAvailable), NULL, NULL}, {"volume", P_STRING, P_LOCAL, LOCAL_VAR(volume), NULL, NULL }, {"fstype", P_STRING, P_LOCAL, LOCAL_VAR(fstype), NULL, NULL}, @@ -547,7 +547,7 @@ struct parm_struct *lp_parm_table(void) /** * Convenience routine to grab string parameters into temporary memory - * and run standard_sub_basic on them. + * and run standard_sub_basic on them. * * The buffers can be written to by * callers without affecting the source string. @@ -595,8 +595,8 @@ static const char *lp_string(const char *s) } /* - In this section all the functions that are used to access the - parameters from the rest of the program are defined + In this section all the functions that are used to access the + parameters from the rest of the program are defined */ #define FN_GLOBAL_STRING(fn_name,var_name) \ @@ -750,7 +750,7 @@ static int map_parameter(const char *pszParmName); static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx, const char *pszServiceName); static void copy_service(struct loadparm_service *pserviceDest, - struct loadparm_service *pserviceSource, + struct loadparm_service *pserviceSource, int *pcopymapDest); static bool service_ok(struct loadparm_service *service); static bool do_section(const char *pszSectionName, void *); @@ -759,8 +759,8 @@ static void init_copymap(struct loadparm_service *pservice); /* This is a helper function for parametrical options support. */ /* It returns a pointer to parametrical option value if it exists or NULL otherwise */ /* Actual parametrical functions are quite simple */ -const char *lp_get_parametric(struct loadparm_context *lp_ctx, - struct loadparm_service *service, +const char *lp_get_parametric(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option) { char *vfskey; @@ -768,9 +768,9 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx, if (lp_ctx == NULL) return NULL; - + data = (service == NULL ? lp_ctx->globals->param_opt : service->param_opt); - + asprintf(&vfskey, "%s:%s", type, option); strlower(vfskey); @@ -785,7 +785,7 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx, if (service != NULL) { /* Try to fetch the same option but from globals */ /* but only if we are not already working with globals */ - for (data = lp_ctx->globals->param_opt; data; + for (data = lp_ctx->globals->param_opt; data; data = data->next) { if (strcmp(data->key, vfskey) == 0) { free(vfskey); @@ -795,7 +795,7 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx, } free(vfskey); - + return NULL; } @@ -811,7 +811,7 @@ static int lp_int(const char *s) return -1; } - return strtol(s, NULL, 0); + return strtol(s, NULL, 0); } /** @@ -853,7 +853,7 @@ static bool lp_bool(const char *s) DEBUG(0,("lp_bool(%s): is called with NULL!\n",s)); return false; } - + if (!set_boolean(s, &ret)) { DEBUG(0,("lp_bool(%s): value is not boolean!\n",s)); return false; @@ -866,11 +866,11 @@ static bool lp_bool(const char *s) /** * Return parametric option from a given service. Type is a part of option before ':' * Parametric option has following syntax: 'Type: option = value' - * Returned value is allocated in 'lp_talloc' context + * Returned value is allocated in 'lp_talloc' context */ -const char *lp_parm_string(struct loadparm_context *lp_ctx, - struct loadparm_service *service, const char *type, +const char *lp_parm_string(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option) { const char *value = lp_get_parametric(lp_ctx, service, type, option); @@ -888,13 +888,13 @@ const char *lp_parm_string(struct loadparm_context *lp_ctx, */ const char **lp_parm_string_list(TALLOC_CTX *mem_ctx, - struct loadparm_context *lp_ctx, - struct loadparm_service *service, - const char *type, + struct loadparm_context *lp_ctx, + struct loadparm_service *service, + const char *type, const char *option, const char *separator) { const char *value = lp_get_parametric(lp_ctx, service, type, option); - + if (value != NULL) return str_list_make(mem_ctx, value, separator); @@ -906,12 +906,12 @@ const char **lp_parm_string_list(TALLOC_CTX *mem_ctx, * Parametric option has following syntax: 'Type: option = value' */ -int lp_parm_int(struct loadparm_context *lp_ctx, - struct loadparm_service *service, const char *type, +int lp_parm_int(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, int default_v) { const char *value = lp_get_parametric(lp_ctx, service, type, option); - + if (value) return lp_int(value); @@ -924,8 +924,8 @@ int lp_parm_int(struct loadparm_context *lp_ctx, * Parametric option has following syntax: 'Type: option = value'. */ -int lp_parm_bytes(struct loadparm_context *lp_ctx, - struct loadparm_service *service, const char *type, +int lp_parm_bytes(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, int default_v) { uint64_t bval; @@ -942,16 +942,16 @@ int lp_parm_bytes(struct loadparm_context *lp_ctx, } /** - * Return parametric option from a given service. + * Return parametric option from a given service. * Type is a part of option before ':' * Parametric option has following syntax: 'Type: option = value' */ -unsigned long lp_parm_ulong(struct loadparm_context *lp_ctx, - struct loadparm_service *service, const char *type, +unsigned long lp_parm_ulong(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, unsigned long default_v) { const char *value = lp_get_parametric(lp_ctx, service, type, option); - + if (value) return lp_ulong(value); @@ -959,12 +959,12 @@ unsigned long lp_parm_ulong(struct loadparm_context *lp_ctx, } -double lp_parm_double(struct loadparm_context *lp_ctx, - struct loadparm_service *service, const char *type, +double lp_parm_double(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, double default_v) { const char *value = lp_get_parametric(lp_ctx, service, type, option); - + if (value != NULL) return lp_double(value); @@ -976,12 +976,12 @@ double lp_parm_double(struct loadparm_context *lp_ctx, * Parametric option has following syntax: 'Type: option = value' */ -bool lp_parm_bool(struct loadparm_context *lp_ctx, - struct loadparm_service *service, const char *type, +bool lp_parm_bool(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *type, const char *option, bool default_v) { const char *value = lp_get_parametric(lp_ctx, service, type, option); - + if (value != NULL) return lp_bool(value); @@ -995,7 +995,7 @@ bool lp_parm_bool(struct loadparm_context *lp_ctx, static struct loadparm_service *init_service(TALLOC_CTX *mem_ctx) { - struct loadparm_service *pservice = + struct loadparm_service *pservice = talloc_zero(mem_ctx, struct loadparm_service); copy_service(pservice, &sDefault, NULL); return pservice; @@ -1009,7 +1009,7 @@ static bool string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src) { talloc_free(*dest); - if (src == NULL) + if (src == NULL) src = ""; *dest = talloc_strdup(mem_ctx, src); @@ -1024,12 +1024,12 @@ static bool string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src) /** - * Add a new service to the services array initialising it with the given - * service. + * Add a new service to the services array initialising it with the given + * service. */ -struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, - const struct loadparm_service *pservice, +struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, + const struct loadparm_service *pservice, const char *name) { int i; @@ -1041,7 +1041,7 @@ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, /* it might already exist */ if (name) { - struct loadparm_service *service = getservicebyname(lp_ctx, + struct loadparm_service *service = getservicebyname(lp_ctx, name); if (service != NULL) { /* Clean all parametric options for service */ @@ -1065,9 +1065,9 @@ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, /* if not, then create one */ if (i == lp_ctx->iNumServices) { struct loadparm_service **tsp; - + tsp = talloc_realloc(lp_ctx, lp_ctx->services, struct loadparm_service *, num_to_alloc); - + if (!tsp) { DEBUG(0,("lp_add_service: failed to enlarge services!\n")); return NULL; @@ -1077,7 +1077,7 @@ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, } lp_ctx->iNumServices++; - } + } lp_ctx->services[i] = init_service(lp_ctx->services); if (lp_ctx->services[i] == NULL) { @@ -1091,12 +1091,12 @@ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, } /** - * Add a new home service, with the specified home directory, defaults coming + * Add a new home service, with the specified home directory, defaults coming * from service ifrom. */ -bool lp_add_home(struct loadparm_context *lp_ctx, - const char *pszHomename, +bool lp_add_home(struct loadparm_context *lp_ctx, + const char *pszHomename, struct loadparm_service *default_service, const char *user, const char *pszHomedir) { @@ -1120,9 +1120,9 @@ bool lp_add_home(struct loadparm_context *lp_ctx, service->bAvailable = default_service->bAvailable; service->bBrowseable = default_service->bBrowseable; - DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", + DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", pszHomename, user, service->szPath)); - + return true; } @@ -1130,7 +1130,7 @@ bool lp_add_home(struct loadparm_context *lp_ctx, * Add the IPC service. */ -static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, +static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, const char *fstype) { struct loadparm_service *service = lp_add_service(lp_ctx, &sDefault, name); @@ -1140,7 +1140,7 @@ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, string_set(service, &service->szPath, tmpdir()); - service->comment = talloc_asprintf(service, "%s Service (%s)", + service->comment = talloc_asprintf(service, "%s Service (%s)", fstype, lp_ctx->globals->szServerString); string_set(service, &service->fstype, fstype); service->iMaxConnections = -1; @@ -1150,7 +1150,7 @@ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, service->bBrowseable = false; if (strcasecmp(fstype, "IPC") == 0) { - lp_do_service_parameter(lp_ctx, service, "ntvfs handler", + lp_do_service_parameter(lp_ctx, service, "ntvfs handler", "default"); } @@ -1164,7 +1164,7 @@ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, */ bool lp_add_printer(struct loadparm_context *lp_ctx, - const char *pszPrintername, + const char *pszPrintername, struct loadparm_service *default_service) { const char *comment = "From Printcap"; @@ -1194,7 +1194,7 @@ bool lp_add_printer(struct loadparm_context *lp_ctx, } /** - * Map a parameter's string representation to something we can use. + * Map a parameter's string representation to something we can use. * Returns False if the parameter string is not recognised, else TRUE. */ @@ -1269,8 +1269,8 @@ static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx * If pcopymapDest is NULL then copy all fields */ -static void copy_service(struct loadparm_service *pserviceDest, - struct loadparm_service *pserviceSource, +static void copy_service(struct loadparm_service *pserviceDest, + struct loadparm_service *pserviceSource, int *pcopymapDest) { int i; @@ -1298,13 +1298,13 @@ static void copy_service(struct loadparm_service *pserviceDest, break; case P_STRING: - string_set(pserviceDest, + string_set(pserviceDest, (char **)dest_ptr, *(char **)src_ptr); break; case P_USTRING: - string_set(pserviceDest, + string_set(pserviceDest, (char **)dest_ptr, *(char **)src_ptr); strupper(*(char **)dest_ptr); @@ -1325,7 +1325,7 @@ static void copy_service(struct loadparm_service *pserviceDest, (void *)pserviceSource->copymap, sizeof(int) * NUMPARAMETERS); } - + data = pserviceSource->param_opt; while (data) { not_added = true; @@ -1335,7 +1335,7 @@ static void copy_service(struct loadparm_service *pserviceDest, /* If we already have same option, override it */ if (strcmp(pdata->key, data->key) == 0) { talloc_free(pdata->value); - pdata->value = talloc_reference(pdata, + pdata->value = talloc_reference(pdata, data->value); not_added = false; break; @@ -1392,11 +1392,11 @@ static bool service_ok(struct loadparm_service *service) /******************************************************************* - Keep a linked list of all config files so we know when one has changed + Keep a linked list of all config files so we know when one has changed it's date and needs to be reloaded. ********************************************************************/ -static void add_to_file_list(struct loadparm_context *lp_ctx, +static void add_to_file_list(struct loadparm_context *lp_ctx, const char *fname, const char *subfname) { struct file_lists *f = lp_ctx->file_lists; @@ -1466,7 +1466,7 @@ bool lp_file_list_changed(struct loadparm_context *lp_ctx) Handle the include operation. ***************************************************************************/ -static bool handle_include(struct loadparm_context *lp_ctx, +static bool handle_include(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr) { char *fname = standard_sub_basic(lp_ctx, pszParmValue); @@ -1487,7 +1487,7 @@ static bool handle_include(struct loadparm_context *lp_ctx, Handle the interpretation of the copy parameter. ***************************************************************************/ -static bool handle_copy(struct loadparm_context *lp_ctx, +static bool handle_copy(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr) { bool bRetval; @@ -1509,7 +1509,7 @@ static bool handle_copy(struct loadparm_context *lp_ctx, bRetval = true; } } else { - DEBUG(0, ("Unable to copy service - source not found: %s\n", + DEBUG(0, ("Unable to copy service - source not found: %s\n", pszParmValue)); bRetval = false; } @@ -1517,7 +1517,7 @@ static bool handle_copy(struct loadparm_context *lp_ctx, return bRetval; } -static bool handle_debuglevel(struct loadparm_context *lp_ctx, +static bool handle_debuglevel(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr) { DEBUGLEVEL = atoi(pszParmValue); @@ -1525,7 +1525,7 @@ static bool handle_debuglevel(struct loadparm_context *lp_ctx, return true; } -static bool handle_logfile(struct loadparm_context *lp_ctx, +static bool handle_logfile(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr) { logfile = pszParmValue; @@ -1554,9 +1554,9 @@ static void init_copymap(struct loadparm_service *pservice) /** * Process a parametric option */ -static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx, - struct loadparm_service *service, - const char *pszParmName, +static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx, + struct loadparm_service *service, + const char *pszParmName, const char *pszParmValue, int flags) { struct param_opt *paramo, *data; @@ -1611,18 +1611,18 @@ static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx, } free(name); - + return true; } -static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, +static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, const char *pszParmName, const char *pszParmValue, struct loadparm_context *lp_ctx) { int i; /* if it is a special case then go ahead */ if (parm_table[parmnum].special) { - parm_table[parmnum].special(lp_ctx, pszParmValue, + parm_table[parmnum].special(lp_ctx, pszParmValue, (char **)parm_ptr); return true; } @@ -1664,7 +1664,7 @@ static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, } case P_LIST: - *(const char ***)parm_ptr = str_list_make(mem_ctx, + *(const char ***)parm_ptr = str_list_make(mem_ctx, pszParmValue, NULL); break; @@ -1710,7 +1710,7 @@ static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, } -bool lp_do_global_parameter(struct loadparm_context *lp_ctx, +bool lp_do_global_parameter(struct loadparm_context *lp_ctx, const char *pszParmName, const char *pszParmValue) { int parmnum = map_parameter(pszParmName); @@ -1732,12 +1732,12 @@ bool lp_do_global_parameter(struct loadparm_context *lp_ctx, parm_ptr = lp_parm_ptr(lp_ctx, NULL, &parm_table[parmnum]); - return set_variable(lp_ctx, parmnum, parm_ptr, + return set_variable(lp_ctx, parmnum, parm_ptr, pszParmName, pszParmValue, lp_ctx); } -bool lp_do_service_parameter(struct loadparm_context *lp_ctx, - struct loadparm_service *service, +bool lp_do_service_parameter(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *pszParmName, const char *pszParmValue) { void *parm_ptr; @@ -1769,14 +1769,14 @@ bool lp_do_service_parameter(struct loadparm_context *lp_ctx, if (!service->copymap) init_copymap(service); - /* this handles the aliases - set the copymap for other + /* this handles the aliases - set the copymap for other * entries with the same data pointer */ for (i = 0; parm_table[i].label; i++) - if (parm_table[i].offset == parm_table[parmnum].offset && + if (parm_table[i].offset == parm_table[parmnum].offset && parm_table[i].class == parm_table[parmnum].class) service->copymap[i] = false; - return set_variable(service, parmnum, parm_ptr, pszParmName, + return set_variable(service, parmnum, parm_ptr, pszParmName, pszParmValue, lp_ctx); } @@ -1784,15 +1784,15 @@ bool lp_do_service_parameter(struct loadparm_context *lp_ctx, * Process a parameter. */ -static bool do_parameter(const char *pszParmName, const char *pszParmValue, +static bool do_parameter(const char *pszParmName, const char *pszParmValue, void *userdata) { struct loadparm_context *lp_ctx = (struct loadparm_context *)userdata; - if (lp_ctx->bInGlobalSection) - return lp_do_global_parameter(lp_ctx, pszParmName, + if (lp_ctx->bInGlobalSection) + return lp_do_global_parameter(lp_ctx, pszParmName, pszParmValue); - else + else return lp_do_service_parameter(lp_ctx, lp_ctx->currentService, pszParmName, pszParmValue); } @@ -1801,14 +1801,14 @@ static bool do_parameter(const char *pszParmName, const char *pszParmValue, variable argument do parameter */ bool lp_do_global_parameter_var(struct loadparm_context *lp_ctx, const char *pszParmName, const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4); -bool lp_do_global_parameter_var(struct loadparm_context *lp_ctx, - const char *pszParmName, const char *fmt, ...) +bool lp_do_global_parameter_var(struct loadparm_context *lp_ctx, + const char *pszParmName, const char *fmt, ...) { char *s; bool ret; va_list ap; - va_start(ap, fmt); + va_start(ap, fmt); s = talloc_vasprintf(NULL, fmt, ap); va_end(ap); ret = lp_do_global_parameter(lp_ctx, pszParmName, s); @@ -1822,7 +1822,7 @@ bool lp_do_global_parameter_var(struct loadparm_context *lp_ctx, parsing code. It sets the parameter then marks the parameter as unable to be modified by smb.conf processing */ -bool lp_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName, +bool lp_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName, const char *pszParmValue) { int parmnum = map_parameter(pszParmName); @@ -1833,7 +1833,7 @@ bool lp_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName, if (parmnum < 0 && strchr(pszParmName, ':')) { /* set a parametric option */ - return lp_do_parameter_parametric(lp_ctx, NULL, pszParmName, + return lp_do_parameter_parametric(lp_ctx, NULL, pszParmName, pszParmValue, FLAG_CMDLINE); } @@ -1926,7 +1926,7 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) case P_LIST: if ((char ***)ptr && *(char ***)ptr) { char **list = *(char ***)ptr; - + for (; *list; list++) fprintf(f, "%s%s", *list, ((*(list+1))?", ":"")); @@ -1959,7 +1959,7 @@ static bool equal_parameter(parm_type type, void *ptr1, void *ptr2) return (*((int *)ptr1) == *((int *)ptr2)); case P_LIST: - return str_list_equal((const char **)(*(char ***)ptr1), + return str_list_equal((const char **)(*(char ***)ptr1), (const char **)(*(char ***)ptr2)); case P_STRING: @@ -1977,11 +1977,11 @@ static bool equal_parameter(parm_type type, void *ptr1, void *ptr2) } /** - * Process a new section (service). + * Process a new section (service). * * At this stage all sections are services. * Later we'll have special sections that permit server parameters to be set. - * Returns True on success, False on failure. + * Returns True on success, False on failure. */ static bool do_section(const char *pszSectionName, void *userdata) @@ -2013,7 +2013,7 @@ static bool do_section(const char *pszSectionName, void *userdata) /* issued by the post-processing of a previous section. */ DEBUG(2, ("Processing section \"[%s]\"\n", pszSectionName)); - if ((lp_ctx->currentService = lp_add_service(lp_ctx, &sDefault, + if ((lp_ctx->currentService = lp_add_service(lp_ctx, &sDefault, pszSectionName)) == NULL) { DEBUG(0, ("Failed to add a new service\n")); @@ -2059,12 +2059,12 @@ static bool is_default(int i) *Display the contents of the global structure. */ -static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, +static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults) { int i; struct param_opt *data; - + fprintf(f, "# Global parameters\n[global]\n"); for (i = 0; parm_table[i].label; i++) @@ -2078,7 +2078,7 @@ static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, fprintf(f, "\n"); } if (lp_ctx->globals->param_opt != NULL) { - for (data = lp_ctx->globals->param_opt; data; + for (data = lp_ctx->globals->param_opt; data; data = data->next) { fprintf(f, "\t%s = %s\n", data->key, data->value); } @@ -2094,7 +2094,7 @@ static void dump_a_service(struct loadparm_service * pService, FILE * f) { int i; struct param_opt *data; - + if (pService != &sDefault) fprintf(f, "\n[%s]\n", pService->szService); @@ -2127,20 +2127,20 @@ static void dump_a_service(struct loadparm_service * pService, FILE * f) } } -bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, - struct loadparm_service *service, +bool lp_dump_a_parameter(struct loadparm_context *lp_ctx, + struct loadparm_service *service, const char *parm_name, FILE * f) { struct parm_struct *parm; void *ptr; - + parm = lp_parm_struct(parm_name); if (!parm) { return false; } ptr = lp_parm_ptr(lp_ctx, service,parm); - + print_parameter(parm, ptr, f); fprintf(f, "\n"); return true; @@ -2199,7 +2199,7 @@ struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, /** * Auto-load some home services. */ -static void lp_add_auto_services(struct loadparm_context *lp_ctx, +static void lp_add_auto_services(struct loadparm_context *lp_ctx, const char *str) { return; @@ -2210,8 +2210,8 @@ static void lp_add_auto_services(struct loadparm_context *lp_ctx, * Unload unused services. */ -void lp_killunused(struct loadparm_context *lp_ctx, - struct smbsrv_connection *smb, +void lp_killunused(struct loadparm_context *lp_ctx, + struct smbsrv_connection *smb, bool (*snumused) (struct smbsrv_connection *, int)) { int i; @@ -2279,7 +2279,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) } lp_do_global_parameter(lp_ctx, "share backend", "classic"); - + lp_do_global_parameter(lp_ctx, "server role", "standalone"); /* options that can be set on the command line must be initialised via @@ -2315,7 +2315,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) data from the sam, but for the moment leave it in a tdb to keep regedt32 from popping up an annoying dialog. */ lp_do_global_parameter(lp_ctx, "registry:HKEY_USERS", "hku.ldb"); - + /* using UTF8 by default allows us to support all chars */ lp_do_global_parameter(lp_ctx, "unix charset", "UTF8"); @@ -2333,10 +2333,10 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "ncalrpc dir", dyn_NCALRPCDIR); lp_do_global_parameter(lp_ctx, "socket address", "0.0.0.0"); - lp_do_global_parameter_var(lp_ctx, "server string", + lp_do_global_parameter_var(lp_ctx, "server string", "Samba %s", SAMBA_VERSION_STRING); - lp_do_global_parameter_var(lp_ctx, "announce version", "%d.%d", + lp_do_global_parameter_var(lp_ctx, "announce version", "%d.%d", DEFAULT_MAJOR_VERSION, DEFAULT_MINOR_VERSION); @@ -2366,7 +2366,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "LanmanAuth", "True"); lp_do_global_parameter(lp_ctx, "NTLMAuth", "True"); lp_do_global_parameter(lp_ctx, "client use spnego principal", "False"); - + lp_do_global_parameter(lp_ctx, "UnixExtensions", "False"); lp_do_global_parameter(lp_ctx, "PreferredMaster", "Auto"); @@ -2405,7 +2405,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "tls certfile", "tls/cert.pem"); lp_do_global_parameter(lp_ctx, "tls cafile", "tls/ca.pem"); lp_do_global_parameter_var(lp_ctx, "js include", "%s", dyn_JSDIR); - lp_do_global_parameter_var(lp_ctx, "setup directory", "%s", + lp_do_global_parameter_var(lp_ctx, "setup directory", "%s", dyn_SETUPDIR); lp_do_global_parameter(lp_ctx, "prefork children:smb", "4"); @@ -2430,7 +2430,7 @@ bool lp_load_default(struct loadparm_context *lp_ctx) } /** - * Load the services array from the services file. + * Load the services array from the services file. * * Return True on success, False on failure. */ @@ -2442,11 +2442,11 @@ bool lp_load(struct loadparm_context *lp_ctx, const char *filename) filename = talloc_strdup(lp_ctx, filename); lp_ctx->szConfigFile = filename; - + lp_ctx->bInGlobalSection = true; n2 = standard_sub_basic(lp_ctx, lp_ctx->szConfigFile); DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2)); - + add_to_file_list(lp_ctx, lp_ctx->szConfigFile, n2); /* We get sections first, so have to start 'behind' to make up */ @@ -2494,7 +2494,7 @@ int lp_numservices(struct loadparm_context *lp_ctx) * Display the contents of the services array in human-readable form. */ -void lp_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults, +void lp_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults, int maxtoprint) { int iService; @@ -2528,14 +2528,14 @@ struct loadparm_service *lp_servicebynum(struct loadparm_context *lp_ctx, return lp_ctx->services[snum]; } -struct loadparm_service *lp_service(struct loadparm_context *lp_ctx, +struct loadparm_service *lp_service(struct loadparm_context *lp_ctx, const char *service_name) { int iService; char *serviceName; for (iService = lp_ctx->iNumServices - 1; iService >= 0; iService--) { - if (lp_ctx->services[iService] && + if (lp_ctx->services[iService] && lp_ctx->services[iService]->szService) { /* * The substitution here is used to support %U is @@ -2555,7 +2555,7 @@ struct loadparm_service *lp_service(struct loadparm_context *lp_ctx, /** - * A useful volume label function. + * A useful volume label function. */ const char *volume_label(struct loadparm_service *service) { @@ -2609,10 +2609,10 @@ _PUBLIC_ void reload_charcnv(struct loadparm_context *lp_ctx) lp_ctx->iconv_convenience = smb_iconv_convenience_init_lp(lp_ctx, lp_ctx); } -void lp_smbcli_options(struct loadparm_context *lp_ctx, +void lp_smbcli_options(struct loadparm_context *lp_ctx, struct smbcli_options *options) { - options->max_xmit = lp_max_xmit(lp_ctx); + options->max_xmit = lp_max_xmit(lp_ctx); options->max_mux = lp_maxmux(lp_ctx); options->use_spnego = lp_nt_status_support(lp_ctx) && lp_use_spnego(lp_ctx); options->signing = lp_client_signing(lp_ctx); -- cgit From 2ca1aeb59be0267858c9cd46a04d37d982b79990 Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Sun, 17 Feb 2008 20:25:13 +0100 Subject: loadparm: Add configuration settings for idmap. Default behaviour for "idmap trusted only" is "False", meaning idmap creates ID mappings for all SIDs. If set to "True", idmap will create SID mappings for trusted users only. "idmap database" allows to set the database idmap uses, defaulting to idmap,ldb (This used to be commit ed8178b110abcde95e5b18cfb22957c53fd3febd) --- source4/param/loadparm.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index e850d82193..bad90fc74a 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -91,6 +91,7 @@ struct loadparm_global char *szPasswdChat; char *szShareBackend; char *szSAM_URL; + char *szIDMAP_URL; char *szSECRETS_URL; char *szSPOOLSS_URL; char *szWINS_CONFIG_URL; @@ -119,6 +120,7 @@ struct loadparm_global char *szTemplateShell; char *szTemplateHomedir; int bWinbindSealedPipes; + int bIdmapTrustedOnly; char *swat_directory; int tls_enabled; char *tls_keyfile; @@ -384,6 +386,7 @@ static struct parm_struct parm_table[] = { {"obey pam restrictions", P_BOOL, P_GLOBAL, GLOBAL_VAR(bObeyPamRestrictions), NULL, NULL}, {"password server", P_LIST, P_GLOBAL, GLOBAL_VAR(szPasswordServers), NULL, NULL}, {"sam database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSAM_URL), NULL, NULL}, + {"idmap database", P_STRING, P_GLOBAL, GLOBAL_VAR(szIDMAP_URL), NULL, NULL}, {"secrets database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSECRETS_URL), NULL, NULL}, {"spoolss database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSPOOLSS_URL), NULL, NULL}, {"wins config database", P_STRING, P_GLOBAL, GLOBAL_VAR(szWINS_CONFIG_URL), NULL, NULL}, @@ -513,6 +516,7 @@ static struct parm_struct parm_table[] = { {"winbind sealed pipes", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWinbindSealedPipes), NULL, NULL }, {"template shell", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateShell), NULL, NULL }, {"template homedir", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateHomedir), NULL, NULL }, + {"idmap trusted only", P_BOOL, P_GLOBAL, GLOBAL_VAR(bIdmapTrustedOnly), NULL, NULL}, {NULL, P_BOOL, P_NONE, 0, NULL, NULL} }; @@ -642,6 +646,7 @@ _PUBLIC_ FN_GLOBAL_STRING(lp_tls_crlfile, tls_crlfile) _PUBLIC_ FN_GLOBAL_STRING(lp_tls_dhpfile, tls_dhpfile) _PUBLIC_ FN_GLOBAL_STRING(lp_share_backend, szShareBackend) _PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, szSAM_URL) +_PUBLIC_ FN_GLOBAL_STRING(lp_idmap_url, szIDMAP_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_secrets_url, szSECRETS_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_spoolss_url, szSPOOLSS_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, szWINS_CONFIG_URL) @@ -651,6 +656,7 @@ _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, szWinbinddSocketDi _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_shell, szTemplateShell) _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_homedir, szTemplateHomedir) _PUBLIC_ FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, bWinbindSealedPipes) +_PUBLIC_ FN_GLOBAL_BOOL(lp_idmap_trusted_only, bIdmapTrustedOnly) _PUBLIC_ FN_GLOBAL_STRING(lp_private_dir, szPrivateDir) _PUBLIC_ FN_GLOBAL_STRING(lp_serverstring, szServerString) _PUBLIC_ FN_GLOBAL_STRING(lp_lockdir, szLockDir) @@ -2305,6 +2311,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "auth methods:standalone", "anonymous sam_ignoredomain"); lp_do_global_parameter(lp_ctx, "private dir", dyn_PRIVATE_DIR); lp_do_global_parameter(lp_ctx, "sam database", "sam.ldb"); + lp_do_global_parameter(lp_ctx, "idmap database", "idmap.ldb"); lp_do_global_parameter(lp_ctx, "secrets database", "secrets.ldb"); lp_do_global_parameter(lp_ctx, "spoolss database", "spoolss.ldb"); lp_do_global_parameter(lp_ctx, "wins config database", "wins_config.ldb"); @@ -2380,6 +2387,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "winbindd socket directory", dyn_WINBINDD_SOCKET_DIR); lp_do_global_parameter(lp_ctx, "template shell", "/bin/false"); lp_do_global_parameter(lp_ctx, "template homedir", "/home/%WORKGROUP%/%ACCOUNTNAME%"); + lp_do_global_parameter(lp_ctx, "idmap trusted only", "False"); lp_do_global_parameter(lp_ctx, "client signing", "Yes"); lp_do_global_parameter(lp_ctx, "server signing", "auto"); -- cgit From 2ba62662f8e2578153be3125eb557b9349ccfd3b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 28 Feb 2008 20:04:58 +0100 Subject: Remove sDefault as static variable. (This used to be commit 16f36ce499e93860dd535034a584ec2b93e7a172) --- source4/param/loadparm.c | 128 +++++++++++++++++++++-------------------------- 1 file changed, 57 insertions(+), 71 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index bad90fc74a..d94ab92ac9 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -224,44 +224,11 @@ struct loadparm_service }; -/* This is a default service used to prime a services structure */ -struct loadparm_service sDefault = { - .szService = NULL, - .szPath = NULL, - .szCopy = NULL, - .szInclude = NULL, - .szPrintername = NULL, - .szHostsallow = NULL, - .szHostsdeny = NULL, - .comment = NULL, - .volume = NULL, - .fstype = NULL, - .ntvfs_handler = NULL, - .iMaxPrintJobs = 1000, - .iMaxConnections = 0, - .iCSCPolicy = 0, - .bAvailable = true, - .bBrowseable = true, - .bRead_only = true, - .bPrint_ok = false, - .bMap_system = false, - .bMap_hidden = false, - .bMap_archive = true, - .bStrictLocking = true, - .iCreate_mask = 0744, - .iCreate_force_mode = 0000, - .iDir_mask = 0755, - .iDir_force_mode = 0000, - .copymap = NULL, - .bMSDfsRoot = false, - .bStrictSync = false, - .bCIFileSystem = false, -}; - struct loadparm_context *global_loadparm = NULL; #define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct)) + /* prototypes for the special type handlers */ static bool handle_include(struct loadparm_context *lp_ctx, const char *pszParmValue, char **ptr); @@ -521,11 +488,13 @@ static struct parm_struct parm_table[] = { {NULL, P_BOOL, P_NONE, 0, NULL, NULL} }; + /* local variables */ struct loadparm_context { const char *szConfigFile; struct loadparm_global *globals; struct loadparm_service **services; + struct loadparm_service *sDefault; int iNumServices; struct loadparm_service *currentService; bool bInGlobalSection; @@ -540,6 +509,10 @@ struct loadparm_context { }; +struct loadparm_service *lp_default_service(struct loadparm_context *lp_ctx) +{ + return lp_ctx->sDefault; +} /* return the parameter table @@ -619,15 +592,13 @@ static const char *lp_string(const char *s) int fn_name(struct loadparm_context *lp_ctx) {return lp_ctx->globals->var_name;} #define FN_LOCAL_STRING(fn_name,val) \ - const char *fn_name(struct loadparm_service *service) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault.val)));} -#define FN_LOCAL_CONST_STRING(fn_name,val) \ - const char *fn_name(struct loadparm_service *service) {return (const char *)(service != NULL && service->val != NULL) ? service->val : sDefault.val;} + const char *fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault->val)));} #define FN_LOCAL_LIST(fn_name,val) \ - const char **fn_name(struct loadparm_service *service) {return(const char **)(service != NULL && service->val != NULL? service->val : sDefault.val);} + const char **fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return(const char **)(service != NULL && service->val != NULL? service->val : sDefault->val);} #define FN_LOCAL_BOOL(fn_name,val) \ - bool fn_name(struct loadparm_service *service) {return((service != NULL)? service->val : sDefault.val);} + bool fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return((service != NULL)? service->val : sDefault->val);} #define FN_LOCAL_INTEGER(fn_name,val) \ - int fn_name(struct loadparm_service *service) {return((service != NULL)? service->val : sDefault.val);} + int fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return((service != NULL)? service->val : sDefault->val);} _PUBLIC_ FN_GLOBAL_INTEGER(lp_server_role, server_role) _PUBLIC_ FN_GLOBAL_LIST(lp_smb_ports, smb_ports) @@ -722,8 +693,11 @@ _PUBLIC_ FN_GLOBAL_INTEGER(lp_security, security) _PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, paranoid_server_security) _PUBLIC_ FN_GLOBAL_INTEGER(lp_announce_as, announce_as) _PUBLIC_ FN_GLOBAL_LIST(lp_js_include, jsInclude) -_PUBLIC_ FN_LOCAL_STRING(lp_servicename, szService) -_PUBLIC_ FN_LOCAL_CONST_STRING(lp_const_servicename, szService) +const char *lp_servicename(const struct loadparm_service *service) +{ + return lp_string((const char *)service->szService); +} + _PUBLIC_ FN_LOCAL_STRING(lp_pathname, szPath) static FN_LOCAL_STRING(_lp_printername, szPrintername) _PUBLIC_ FN_LOCAL_LIST(lp_hostsallow, szHostsallow) @@ -999,11 +973,11 @@ bool lp_parm_bool(struct loadparm_context *lp_ctx, * Initialise a service to the defaults. */ -static struct loadparm_service *init_service(TALLOC_CTX *mem_ctx) +static struct loadparm_service *init_service(TALLOC_CTX *mem_ctx, struct loadparm_service *sDefault) { struct loadparm_service *pservice = talloc_zero(mem_ctx, struct loadparm_service); - copy_service(pservice, &sDefault, NULL); + copy_service(pservice, sDefault, NULL); return pservice; } @@ -1085,7 +1059,7 @@ struct loadparm_service *lp_add_service(struct loadparm_context *lp_ctx, lp_ctx->iNumServices++; } - lp_ctx->services[i] = init_service(lp_ctx->services); + lp_ctx->services[i] = init_service(lp_ctx->services, lp_ctx->sDefault); if (lp_ctx->services[i] == NULL) { DEBUG(0,("lp_add_service: out of memory!\n")); return NULL; @@ -1114,10 +1088,10 @@ bool lp_add_home(struct loadparm_context *lp_ctx, return false; if (!(*(default_service->szPath)) - || strequal(default_service->szPath, sDefault.szPath)) { + || strequal(default_service->szPath, lp_ctx->sDefault->szPath)) { service->szPath = talloc_strdup(service, pszHomedir); } else { - service->szPath = string_sub_talloc(service, lp_pathname(default_service),"%H", pszHomedir); + service->szPath = string_sub_talloc(service, lp_pathname(default_service, lp_ctx->sDefault), "%H", pszHomedir); } if (!(*(service->comment))) { @@ -1139,7 +1113,7 @@ bool lp_add_home(struct loadparm_context *lp_ctx, static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name, const char *fstype) { - struct loadparm_service *service = lp_add_service(lp_ctx, &sDefault, name); + struct loadparm_service *service = lp_add_service(lp_ctx, lp_ctx->sDefault, name); if (service == NULL) return false; @@ -1243,7 +1217,7 @@ void *lp_parm_ptr(struct loadparm_context *lp_ctx, { if (service == NULL) { if (parm->class == P_LOCAL) - return ((char *)&sDefault)+parm->offset; + return ((char *)lp_ctx->sDefault)+parm->offset; else if (parm->class == P_GLOBAL) return ((char *)lp_ctx->globals)+parm->offset; else return NULL; @@ -2019,7 +1993,7 @@ static bool do_section(const char *pszSectionName, void *userdata) /* issued by the post-processing of a previous section. */ DEBUG(2, ("Processing section \"[%s]\"\n", pszSectionName)); - if ((lp_ctx->currentService = lp_add_service(lp_ctx, &sDefault, + if ((lp_ctx->currentService = lp_add_service(lp_ctx, lp_ctx->sDefault, pszSectionName)) == NULL) { DEBUG(0, ("Failed to add a new service\n")); @@ -2032,12 +2006,12 @@ static bool do_section(const char *pszSectionName, void *userdata) /** - * Determine if a partcular base parameter is currentl set to the default value. + * Determine if a particular base parameter is currently set to the default value. */ -static bool is_default(int i) +static bool is_default(struct loadparm_service *sDefault, int i) { - void *def_ptr = ((char *)&sDefault) + parm_table[i].offset; + void *def_ptr = ((char *)sDefault) + parm_table[i].offset; if (!defaults_saved) return false; switch (parm_table[i].type) { @@ -2096,12 +2070,12 @@ static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, * Display the contents of a single services record. */ -static void dump_a_service(struct loadparm_service * pService, FILE * f) +static void dump_a_service(struct loadparm_service * pService, struct loadparm_service *sDefault, FILE * f) { int i; struct param_opt *data; - if (pService != &sDefault) + if (pService != sDefault) fprintf(f, "\n[%s]\n", pService->szService); for (i = 0; parm_table[i].label; i++) @@ -2109,14 +2083,14 @@ static void dump_a_service(struct loadparm_service * pService, FILE * f) parm_table[i].offset != -1 && (*parm_table[i].label != '-') && (i == 0 || (parm_table[i].offset != parm_table[i - 1].offset))) { - if (pService == &sDefault) { - if (defaults_saved && is_default(i)) + if (pService == sDefault) { + if (defaults_saved && is_default(sDefault, i)) continue; } else { if (equal_parameter(parm_table[i].type, ((char *)pService) + parm_table[i].offset, - ((char *)&sDefault) + + ((char *)sDefault) + parm_table[i].offset)) continue; } @@ -2189,7 +2163,7 @@ struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, !equal_parameter(parm_table[*i].type, ((char *)pService) + parm_table[*i].offset, - ((char *)&sDefault) + + ((char *)lp_ctx->sDefault) + parm_table[*i].offset)) { return &parm_table[(*i)++]; @@ -2266,6 +2240,18 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) talloc_set_destructor(lp_ctx, lp_destructor); lp_ctx->bInGlobalSection = true; lp_ctx->globals = talloc_zero(lp_ctx, struct loadparm_global); + lp_ctx->sDefault = talloc_zero(lp_ctx, struct loadparm_service); + + lp_ctx->sDefault->iMaxPrintJobs = 1000; + lp_ctx->sDefault->bAvailable = true; + lp_ctx->sDefault->bBrowseable = true; + lp_ctx->sDefault->bRead_only = true; + lp_ctx->sDefault->bMap_archive = true; + lp_ctx->sDefault->bStrictLocking = true; + lp_ctx->sDefault->iCreate_mask = 0744; + lp_ctx->sDefault->iCreate_force_mode = 0000; + lp_ctx->sDefault->iDir_mask = 0755; + lp_ctx->sDefault->iDir_force_mode = 0000; DEBUG(3, ("Initialising global parameters\n")); @@ -2276,7 +2262,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) !(lp_ctx->flags[i] & FLAG_CMDLINE)) { char **r; if (parm_table[i].class == P_LOCAL) { - r = (char **)(((char *)&sDefault) + parm_table[i].offset); + r = (char **)(((char *)lp_ctx->sDefault) + parm_table[i].offset); } else { r = (char **)(((char *)lp_ctx->globals) + parm_table[i].offset); } @@ -2512,21 +2498,21 @@ void lp_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults, dump_globals(lp_ctx, f, show_defaults); - dump_a_service(&sDefault, f); + dump_a_service(lp_ctx->sDefault, lp_ctx->sDefault, f); for (iService = 0; iService < maxtoprint; iService++) - lp_dump_one(f, show_defaults, lp_ctx->services[iService]); + lp_dump_one(f, show_defaults, lp_ctx->services[iService], lp_ctx->sDefault); } /** * Display the contents of one service in human-readable form. */ -void lp_dump_one(FILE *f, bool show_defaults, struct loadparm_service *service) +void lp_dump_one(FILE *f, bool show_defaults, struct loadparm_service *service, struct loadparm_service *sDefault) { if (service != NULL) { if (service->szService[0] == '\0') return; - dump_a_service(service, f); + dump_a_service(service, sDefault, f); } } @@ -2565,9 +2551,9 @@ struct loadparm_service *lp_service(struct loadparm_context *lp_ctx, /** * A useful volume label function. */ -const char *volume_label(struct loadparm_service *service) +const char *volume_label(struct loadparm_service *service, struct loadparm_service *sDefault) { - const char *ret = lp_volume(service); + const char *ret = lp_volume(service, sDefault); if (!*ret) return lp_servicename(service); return ret; @@ -2577,11 +2563,11 @@ const char *volume_label(struct loadparm_service *service) /** * If we are PDC then prefer us as DMB */ -const char *lp_printername(struct loadparm_service *service) +const char *lp_printername(struct loadparm_service *service, struct loadparm_service *sDefault) { - const char *ret = _lp_printername(service); + const char *ret = _lp_printername(service, sDefault); if (ret == NULL || (ret != NULL && *ret == '\0')) - ret = lp_const_servicename(service); + ret = lp_servicename(service); return ret; } @@ -2590,9 +2576,9 @@ const char *lp_printername(struct loadparm_service *service) /** * Return the max print jobs per queue. */ -int lp_maxprintjobs(struct loadparm_service *service) +int lp_maxprintjobs(struct loadparm_service *service, struct loadparm_service *sDefault) { - int maxjobs = (service != NULL) ? service->iMaxPrintJobs : sDefault.iMaxPrintJobs; + int maxjobs = (service != NULL) ? service->iMaxPrintJobs : sDefault->iMaxPrintJobs; if (maxjobs <= 0 || maxjobs >= PRINT_MAX_JOBID) maxjobs = PRINT_MAX_JOBID - 1; -- cgit From 3cbe47b2aef427f7f1fe8f4aa2496fbbe31a3ade Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 6 Mar 2008 15:11:16 +0100 Subject: libcli/raw: make it possible to not send CAP_LEVEL_II_OPLOCKS But the keep the default to always send it when the server supports it too. metze (This used to be commit 33caaef2e46557525a8ffb79d6dd0db46a079529) --- source4/param/loadparm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index d94ab92ac9..65ce7595fc 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2614,6 +2614,6 @@ void lp_smbcli_options(struct loadparm_context *lp_ctx, options->ntstatus_support = lp_nt_status_support(lp_ctx); options->max_protocol = lp_cli_maxprotocol(lp_ctx); options->unicode = lp_unicode(lp_ctx); - options->use_oplocks = false; - options->use_level2_oplocks = false; + options->use_oplocks = true; + options->use_level2_oplocks = true; } -- cgit From 14c5f968e1f99ceabc5a42d9a38a00ea137b00ea Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 7 Mar 2008 10:57:52 +1100 Subject: Rework provision scripts for more testing This fixes up some issues with testdir (was not honoured) and increases test coverage. We now check all the major provision modes. In doing so, to make it possible to call from the multiple layers of 'sh', I have allowed 'dc' to alias 'domain controller' and 'member' to alias 'member server'. Fighting shell quoting in the test system was just too hard... Also fix upgrade.py Andrew Bartlett (This used to be commit 0923de12282b0e063dd73bc3e056dd5c3663c190) --- source4/param/loadparm.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 65ce7595fc..a1d29b0771 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -316,7 +316,9 @@ static const struct enum_list enum_smb_signing_vals[] = { static const struct enum_list enum_server_role[] = { {ROLE_STANDALONE, "standalone"}, {ROLE_DOMAIN_MEMBER, "member server"}, + {ROLE_DOMAIN_MEMBER, "member"}, {ROLE_DOMAIN_CONTROLLER, "domain controller"}, + {ROLE_DOMAIN_CONTROLLER, "dc"}, {-1, NULL} }; -- cgit From 4fc27c9969960dfef73ad80438d274e0f45e119e Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 27 Mar 2008 20:32:02 +1100 Subject: Make oplocks a per-share option. This even goes via the share options system (a very odd layer of indirection). Andrew Bartlett (This used to be commit f2c65f9907760b8852b70c53637388f08751ba88) --- source4/param/loadparm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index a1d29b0771..9e0a239abe 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -210,6 +210,7 @@ struct loadparm_service int bMap_hidden; int bMap_archive; int bStrictLocking; + int bOplocks; int iCreate_mask; int iCreate_force_mode; int iDir_mask; @@ -715,6 +716,7 @@ _PUBLIC_ FN_LOCAL_BOOL(lp_print_ok, bPrint_ok) _PUBLIC_ FN_LOCAL_BOOL(lp_map_hidden, bMap_hidden) _PUBLIC_ FN_LOCAL_BOOL(lp_map_archive, bMap_archive) _PUBLIC_ FN_LOCAL_BOOL(lp_strict_locking, bStrictLocking) +_PUBLIC_ FN_LOCAL_BOOL(lp_oplocks, bOplocks) _PUBLIC_ FN_LOCAL_BOOL(lp_strict_sync, bStrictSync) _PUBLIC_ FN_LOCAL_BOOL(lp_ci_filesystem, bCIFileSystem) _PUBLIC_ FN_LOCAL_BOOL(lp_map_system, bMap_system) @@ -2292,7 +2294,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "max connections", "-1"); lp_do_global_parameter(lp_ctx, "dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo"); - lp_do_global_parameter(lp_ctx, "server services", "smb rpc nbt wrepl ldap cldap web kdc drepl winbind"); + lp_do_global_parameter(lp_ctx, "server services", "smb rpc nbt wrepl ldap cldap kdc drepl winbind"); lp_do_global_parameter(lp_ctx, "ntptr providor", "simple_ldb"); lp_do_global_parameter(lp_ctx, "auth methods:domain controller", "anonymous sam_ignoredomain"); lp_do_global_parameter(lp_ctx, "auth methods:member server", "anonymous sam winbind"); @@ -2406,6 +2408,8 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "prefork children:smb", "4"); + lp_do_global_parameter(lp_ctx, "oplocks", "true"); + for (i = 0; parm_table[i].label; i++) { if (!(lp_ctx->flags[i] & FLAG_CMDLINE)) { lp_ctx->flags[i] |= FLAG_DEFAULT; -- cgit From d554590d336cd49e08b518811934d5fa61a47fd5 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 27 Mar 2008 21:00:04 +1100 Subject: Fix how we initialise the oplocks parameter. Andrew Bartlett (This used to be commit 08ec91958d5d773dfc805869685094da749470e8) --- source4/param/loadparm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 9e0a239abe..94f4033352 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2252,6 +2252,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_ctx->sDefault->bRead_only = true; lp_ctx->sDefault->bMap_archive = true; lp_ctx->sDefault->bStrictLocking = true; + lp_ctx->sDefault->bOplocks = true; lp_ctx->sDefault->iCreate_mask = 0744; lp_ctx->sDefault->iCreate_force_mode = 0000; lp_ctx->sDefault->iDir_mask = 0755; @@ -2408,8 +2409,6 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "prefork children:smb", "4"); - lp_do_global_parameter(lp_ctx, "oplocks", "true"); - for (i = 0; parm_table[i].label; i++) { if (!(lp_ctx->flags[i] & FLAG_CMDLINE)) { lp_ctx->flags[i] |= FLAG_DEFAULT; -- cgit From b422a78df24201392232df10cf6a1ca1a522807e Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 28 Mar 2008 10:18:06 +1100 Subject: Fix 'oplocks' in loadparm. I forgot one more place where I must specify the new config option. I wish this was more templated... Andrew Bartlett (This used to be commit 5a740f4daa79cf1b5fc9f24e424ae50e10932f4b) --- source4/param/loadparm.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 94f4033352..812162e170 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -458,6 +458,7 @@ static struct parm_struct parm_table[] = { {"csc policy", P_ENUM, P_LOCAL, LOCAL_VAR(iCSCPolicy), NULL, enum_csc_policy}, {"strict locking", P_BOOL, P_LOCAL, LOCAL_VAR(bStrictLocking), NULL, NULL}, + {"oplocks", P_BOOL, P_LOCAL, LOCAL_VAR(bOplocks), NULL, NULL}, {"share backend", P_STRING, P_GLOBAL, GLOBAL_VAR(szShareBackend), NULL, NULL}, {"preload", P_STRING, P_GLOBAL, GLOBAL_VAR(szAutoServices), NULL, NULL}, -- cgit From 936b973acbc756cc3b6cb0d9df85ebc28ba76ae7 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 27 May 2008 14:36:28 +0200 Subject: Use new dynconfig.h location. (This used to be commit c3f556915f09d078253e4c5539910a1cf420eeca) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 812162e170..b70e4c19f0 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -54,7 +54,7 @@ #include "includes.h" #include "version.h" -#include "dynconfig.h" +#include "dynconfig/dynconfig.h" #include "system/time.h" #include "system/locale.h" #include "system/network.h" /* needed for TCP_NODELAY */ -- cgit From baa2dffdf34c2f3aa150695c60742d616eeb3b09 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 28 May 2008 13:21:26 +1000 Subject: Bring up the ntp signing deamon This starts ntp_signd at startup, and fixes some build issues. Andrew Bartlett (This used to be commit cb0dcd5c3dfe2a46755270a4594b7289f555d814) --- source4/param/loadparm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index b70e4c19f0..ad1752a7e7 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2296,7 +2296,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "max connections", "-1"); lp_do_global_parameter(lp_ctx, "dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo"); - lp_do_global_parameter(lp_ctx, "server services", "smb rpc nbt wrepl ldap cldap kdc drepl winbind"); + lp_do_global_parameter(lp_ctx, "server services", "smb rpc nbt wrepl ldap cldap kdc drepl winbind ntp_signd"); lp_do_global_parameter(lp_ctx, "ntptr providor", "simple_ldb"); lp_do_global_parameter(lp_ctx, "auth methods:domain controller", "anonymous sam_ignoredomain"); lp_do_global_parameter(lp_ctx, "auth methods:member server", "anonymous sam winbind"); -- cgit From b9213316c77ab340fe02c9784f63a2f7d79cb492 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 29 May 2008 15:20:58 +1000 Subject: Allow the ntp_signd socket to be set from configure. This will allow distributions to hard-code this path, particularly for selinux, and matches how we handle the winbind socket dir. Andrew Bartlett (This used to be commit c8b441650400ed1b24c89991f5752dad3c87795f) --- source4/param/loadparm.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index ad1752a7e7..0a7aec1985 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -179,6 +179,7 @@ struct loadparm_global int bUnixExtensions; int bDisableNetbios; int bRpcBigEndian; + char *szNTPSignDSocketDirectory; struct param_opt *param_opt; }; @@ -489,6 +490,8 @@ static struct parm_struct parm_table[] = { {"template homedir", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateHomedir), NULL, NULL }, {"idmap trusted only", P_BOOL, P_GLOBAL, GLOBAL_VAR(bIdmapTrustedOnly), NULL, NULL}, + {"ntp signd socket directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szNTPSignDSocketDirectory), NULL, NULL }, + {NULL, P_BOOL, P_NONE, 0, NULL, NULL} }; @@ -730,6 +733,8 @@ _PUBLIC_ FN_LOCAL_INTEGER(lp_force_dir_mode, iDir_force_mode) _PUBLIC_ FN_GLOBAL_INTEGER(lp_server_signing, server_signing) _PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, client_signing) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_ntp_signd_socket_directory, szNTPSignDSocketDirectory) + /* local prototypes */ static int map_parameter(const char *pszParmName); static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx, @@ -2410,6 +2415,8 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "prefork children:smb", "4"); + lp_do_global_parameter(lp_ctx, "ntp signd socket directory", dyn_NTP_SIGND_SOCKET_DIR); + for (i = 0; parm_table[i].label; i++) { if (!(lp_ctx->flags[i] & FLAG_CMDLINE)) { lp_ctx->flags[i] |= FLAG_DEFAULT; -- cgit From 234413fbd9664dc217ed8c029be33fc7aa260d3a Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sat, 28 Jun 2008 22:02:19 +1000 Subject: Use a configure-specified directory for the winbind priv pipe This makes it easier for RPMs to specify an group for access to that directory. Andrew Bartlett (This used to be commit fa361354433fb9a5c09c84997a7c51f3052c294e) --- source4/param/loadparm.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/param/loadparm.c') diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 0a7aec1985..e63a7aa8a1 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -116,6 +116,7 @@ struct loadparm_global const char **server_services; char *ntptr_providor; char *szWinbindSeparator; + char *szWinbinddPrivilegedSocketDirectory; char *szWinbinddSocketDirectory; char *szTemplateShell; char *szTemplateHomedir; @@ -485,6 +486,7 @@ static struct parm_struct parm_table[] = { {"host msdfs", P_BOOL, P_GLOBAL, GLOBAL_VAR(bHostMSDfs), NULL, NULL}, {"winbind separator", P_STRING, P_GLOBAL, GLOBAL_VAR(szWinbindSeparator), NULL, NULL }, {"winbindd socket directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szWinbinddSocketDirectory), NULL, NULL }, + {"winbindd privileged socket directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szWinbinddPrivilegedSocketDirectory), NULL, NULL }, {"winbind sealed pipes", P_BOOL, P_GLOBAL, GLOBAL_VAR(bWinbindSealedPipes), NULL, NULL }, {"template shell", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateShell), NULL, NULL }, {"template homedir", P_STRING, P_GLOBAL, GLOBAL_VAR(szTemplateHomedir), NULL, NULL }, @@ -631,6 +633,7 @@ _PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, szWINS_CONFIG_URL) _PUBLIC_ FN_GLOBAL_STRING(lp_wins_url, szWINS_URL) _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbind_separator, szWinbindSeparator) _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, szWinbinddSocketDirectory) +_PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_privileged_socket_directory, szWinbinddPrivilegedSocketDirectory) _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_shell, szTemplateShell) _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_homedir, szTemplateHomedir) _PUBLIC_ FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, bWinbindSealedPipes) @@ -2382,6 +2385,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lp_do_global_parameter(lp_ctx, "winbind separator", "\\"); lp_do_global_parameter(lp_ctx, "winbind sealed pipes", "True"); lp_do_global_parameter(lp_ctx, "winbindd socket directory", dyn_WINBINDD_SOCKET_DIR); + lp_do_global_parameter(lp_ctx, "winbindd privileged socket directory", dyn_WINBINDD_PRIVILEGED_SOCKET_DIR); lp_do_global_parameter(lp_ctx, "template shell", "/bin/false"); lp_do_global_parameter(lp_ctx, "template homedir", "/home/%WORKGROUP%/%ACCOUNTNAME%"); lp_do_global_parameter(lp_ctx, "idmap trusted only", "False"); -- cgit