#include "includes.h"
#include "system/filesys.h"
#include "util_tdb.h"
+#include "lib/param/loadparm.h"
#include "printing.h"
#include "lib/smbconf/smbconf.h"
#include "lib/smbconf/smbconf_init.h"
-#include "lib/param/loadparm.h"
#include "ads.h"
#include "../librpc/gen_ndr/svcctl.h"
#include "dbwrap/dbwrap.h"
#include "dbwrap/dbwrap_rbt.h"
#include "../lib/util/bitmap.h"
-#include "../source4/dns_server/dns_update.h"
#ifdef HAVE_SYS_SYSCTL_H
#include <sys/sysctl.h>
static bool in_client = false; /* Not in the client by default */
static struct smbconf_csn conf_last_csn;
-#define CONFIG_BACKEND_FILE 0
-#define CONFIG_BACKEND_REGISTRY 1
-
static int config_backend = CONFIG_BACKEND_FILE;
/* some helpful bits */
#define LOADPARM_EXTRA_GLOBALS \
struct parmlist_entry *param_opt; \
char *szRealm; \
- char *szLogLevel; \
+ char *loglevel; \
int iminreceivefile; \
char *szPrintcapname; \
int CupsEncrypt; \
int iPreferredMaster; \
- int iDomainMaster; \
char *szLdapMachineSuffix; \
char *szLdapUserSuffix; \
char *szLdapIdmapSuffix; \
char *szLdapGroupSuffix; \
char *szStateDir; \
char *szCacheDir; \
- char *szSocketAddress; \
char *szUsershareTemplateShare; \
char *szIdmapUID; \
char *szIdmapGID; \
.bInheritPerms = false,
.bInheritACLS = false,
.bInheritOwner = false,
- .bMSDfsRoot = false,
- .bUseClientDriver = false,
- .bDefaultDevmode = true,
- .bForcePrintername = false,
- .bNTAclSupport = true,
- .bForceUnknownAclUser = false,
- .bUseSendfile = false,
- .bProfileAcls = false,
- .bMap_acl_inherit = false,
- .bAfs_Share = false,
- .bEASupport = false,
- .bAclCheckPermissions = true,
- .bAclMapFullControl = true,
- .bAclGroupControl = false,
- .bChangeNotify = true,
- .bKernelChangeNotify = true,
- .iallocation_roundup_size = SMB_ROUNDUP_ALLOCATION_SIZE,
- .iAioReadSize = 0,
- .iAioWriteSize = 0,
- .iMap_readonly = MAP_READONLY_YES,
-#ifdef BROKEN_DIRECTORY_HANDLING
- .iDirectoryNameCacheSize = 0,
-#else
- .iDirectoryNameCacheSize = 100,
-#endif
- .ismb_encrypt = Auto,
- .param_opt = NULL,
- .dummy = ""
-};
-
-/* local variables */
-static struct loadparm_service **ServicePtrs = NULL;
-static int iNumServices = 0;
-static int iServiceIndex = 0;
-static struct db_context *ServiceHash;
-static int *invalid_services = NULL;
-static int num_invalid_services = 0;
-static bool bInGlobalSection = true;
-static bool bGlobalOnly = false;
-
-#define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct))
-
-/* prototypes for the special type handlers */
-static bool handle_include(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
-static bool handle_copy(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
-static bool handle_idmap_backend(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
-static bool handle_idmap_uid(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
-static bool handle_idmap_gid(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
-static bool handle_debug_list(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
-static bool handle_realm(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
-static bool handle_netbios_aliases(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
-static bool handle_charset(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
-static bool handle_dos_charset(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
-static bool handle_printing(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
-static bool handle_ldap_debug_level(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
-
-static void set_allowed_client_auth(void);
-
-static void add_to_file_list(const char *fname, const char *subfname);
-static bool lp_set_cmdline_helper(const char *pszParmName, const char *pszParmValue, bool store_values);
-static void free_param_opts(struct parmlist_entry **popts);
-
-#include "lib/param/param_enums.c"
-
-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_CUPS, "cups"},
- {PRINT_IPRINT, "iprint"},
- {PRINT_LPRNT, "nt"},
- {PRINT_LPROS2, "os2"},
-#if defined(DEVELOPER) || defined(ENABLE_BUILD_FARM_HACKS)
- {PRINT_TEST, "test"},
- {PRINT_VLP, "vlp"},
-#endif /* DEVELOPER */
- {-1, NULL}
-};
-
-static const struct enum_list enum_ldap_sasl_wrapping[] = {
- {0, "plain"},
- {ADS_AUTH_SASL_SIGN, "sign"},
- {ADS_AUTH_SASL_SEAL, "seal"},
- {-1, NULL}
-};
-
-static const struct enum_list enum_ldap_ssl[] = {
- {LDAP_SSL_OFF, "no"},
- {LDAP_SSL_OFF, "off"},
- {LDAP_SSL_START_TLS, "start tls"},
- {LDAP_SSL_START_TLS, "start_tls"},
- {-1, NULL}
-};
-
-/* LDAP Dereferencing Alias types */
-#define SAMBA_LDAP_DEREF_NEVER 0
-#define SAMBA_LDAP_DEREF_SEARCHING 1
-#define SAMBA_LDAP_DEREF_FINDING 2
-#define SAMBA_LDAP_DEREF_ALWAYS 3
-
-static const struct enum_list enum_ldap_deref[] = {
- {SAMBA_LDAP_DEREF_NEVER, "never"},
- {SAMBA_LDAP_DEREF_SEARCHING, "searching"},
- {SAMBA_LDAP_DEREF_FINDING, "finding"},
- {SAMBA_LDAP_DEREF_ALWAYS, "always"},
- {-1, "auto"}
-};
-
-static const struct enum_list enum_ldap_passwd_sync[] = {
- {LDAP_PASSWD_SYNC_OFF, "no"},
- {LDAP_PASSWD_SYNC_OFF, "off"},
- {LDAP_PASSWD_SYNC_ON, "yes"},
- {LDAP_PASSWD_SYNC_ON, "on"},
- {LDAP_PASSWD_SYNC_ONLY, "only"},
- {-1, NULL}
-};
-
-static const struct enum_list enum_map_readonly[] = {
- {MAP_READONLY_NO, "no"},
- {MAP_READONLY_NO, "false"},
- {MAP_READONLY_NO, "0"},
- {MAP_READONLY_YES, "yes"},
- {MAP_READONLY_YES, "true"},
- {MAP_READONLY_YES, "1"},
- {MAP_READONLY_PERMISSIONS, "permissions"},
- {MAP_READONLY_PERMISSIONS, "perms"},
- {-1, NULL}
-};
-
-static const struct enum_list enum_case[] = {
- {CASE_LOWER, "lower"},
- {CASE_UPPER, "upper"},
- {-1, NULL}
-};
-
-
-/* ACL compatibility options. */
-static const struct enum_list enum_acl_compat_vals[] = {
- { ACL_COMPAT_AUTO, "auto" },
- { ACL_COMPAT_WINNT, "winnt" },
- { ACL_COMPAT_WIN2K, "win2k" },
- { -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"},
- {MAP_TO_GUEST_ON_BAD_UID, "Bad Uid"},
- {-1, NULL}
-};
-
-/* Config backend options */
-
-static const struct enum_list enum_config_backend[] = {
- {CONFIG_BACKEND_FILE, "file"},
- {CONFIG_BACKEND_REGISTRY, "registry"},
- {-1, NULL}
-};
-
-/* ADS kerberos ticket verification options */
-
-static const struct enum_list enum_kerberos_method[] = {
- {KERBEROS_VERIFY_SECRETS, "default"},
- {KERBEROS_VERIFY_SECRETS, "secrets only"},
- {KERBEROS_VERIFY_SYSTEM_KEYTAB, "system keytab"},
- {KERBEROS_VERIFY_DEDICATED_KEYTAB, "dedicated keytab"},
- {KERBEROS_VERIFY_SECRETS_AND_KEYTAB, "secrets and keytab"},
- {-1, NULL}
-};
-
-/* Note: We do not initialise the defaults union - it is not allowed in ANSI C
- *
- * 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.
- *
- * NOTE: To display a parameter in BASIC view set FLAG_BASIC
- * Any parameter that does NOT have FLAG_ADVANCED will not disply at all
- * Set FLAG_SHARE and FLAG_PRINT to specifically display parameters in
- * respective views.
- *
- * NOTE2: Handling of duplicated (synonym) parameters:
- * Only the first occurance of a parameter should be enabled by FLAG_BASIC
- * and/or FLAG_ADVANCED. All duplicates following the first mention should be
- * set to FLAG_HIDE. ie: Make you must place the parameter that has the preferred
- * name first, and all synonyms must follow it with the FLAG_HIDE attribute.
- */
-
-#define GLOBAL_VAR(name) offsetof(struct loadparm_global, name)
-#define LOCAL_VAR(name) offsetof(struct loadparm_service, name)
-
-static struct parm_struct parm_table[] = {
- {N_("Base Options"), P_SEP, P_SEPARATOR},
-
- {
- .label = "dos charset",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(dos_charset),
- .special = handle_dos_charset,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED
- },
- {
- .label = "unix charset",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(unix_charset),
- .special = handle_charset,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED
- },
- {
- .label = "comment",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(comment),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT
- },
- {
- .label = "path",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szPath),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
- {
- .label = "directory",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szPath),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "workgroup",
- .type = P_USTRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szWorkgroup),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "realm",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szRealm),
- .special = handle_realm,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "netbios name",
- .type = P_USTRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szNetbiosName),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "netbios aliases",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szNetbiosAliases),
- .special = handle_netbios_aliases,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "netbios scope",
- .type = P_USTRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szNetbiosScope),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "server string",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szServerString),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED,
- },
- {
- .label = "interfaces",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szInterfaces),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "bind interfaces only",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bBindInterfacesOnly),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "config backend",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ConfigBackend),
- .special = NULL,
- .enum_list = enum_config_backend,
- .flags = FLAG_HIDE|FLAG_ADVANCED|FLAG_META,
- },
- {
- .label = "server role",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(server_role),
- .special = NULL,
- .enum_list = enum_server_role,
- .flags = FLAG_BASIC | FLAG_ADVANCED,
- },
-
- {N_("Security Options"), P_SEP, P_SEPARATOR},
-
- {
- .label = "security",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(security),
- .special = NULL,
- .enum_list = enum_security,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "auth methods",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(AuthMethods),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "encrypt passwords",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bEncryptPasswords),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "client schannel",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(clientSchannel),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_BASIC | FLAG_ADVANCED,
- },
- {
- .label = "server schannel",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(serverSchannel),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_BASIC | FLAG_ADVANCED,
- },
- {
- .label = "allow trusted domains",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bAllowTrustedDomains),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "map to guest",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(map_to_guest),
- .special = NULL,
- .enum_list = enum_map_to_guest,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "null passwords",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bNullPasswords),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_DEPRECATED,
- },
- {
- .label = "obey pam restrictions",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bObeyPamRestrictions),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "password server",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szPasswordServer),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "smb passwd file",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szSMBPasswdFile),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "private dir",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szPrivateDir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "private directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szPrivateDir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "passdb backend",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(passdb_backend),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "algorithmic rid base",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(AlgorithmicRidBase),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "root directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szRootdir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "root dir",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szRootdir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "root",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szRootdir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "guest account",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szGuestaccount),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED,
- },
- {
- .label = "enable privileges",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bEnablePrivileges),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_DEPRECATED,
- },
-
- {
- .label = "pam password change",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bPamPasswordChange),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "passwd program",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szPasswdProgram),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "passwd chat",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szPasswdChat),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "passwd chat debug",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bPasswdChatDebug),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "passwd chat timeout",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iPasswdChatTimeout),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "check password script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szCheckPasswordScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "username map",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szUsernameMap),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "password level",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(pwordlevel),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_DEPRECATED,
- },
- {
- .label = "username level",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(unamelevel),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "unix password sync",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bUnixPasswdSync),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "restrict anonymous",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(restrict_anonymous),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "lanman auth",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bLanmanAuth),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ntlm auth",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bNTLMAuth),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "client NTLMv2 auth",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bClientNTLMv2Auth),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "client lanman auth",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bClientLanManAuth),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "client plaintext auth",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bClientPlaintextAuth),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "client use spnego principal",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(client_use_spnego_principal),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "username",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szUsername),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE | FLAG_DEPRECATED,
- },
- {
- .label = "user",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szUsername),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "users",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szUsername),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "invalid users",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szInvalidUsers),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "valid users",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szValidUsers),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "admin users",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szAdminUsers),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "read list",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(readlist),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "write list",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(writelist),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "force user",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(force_user),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "force group",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(force_group),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "group",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(force_group),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "read only",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bRead_only),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "write ok",
- .type = P_BOOLREV,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bRead_only),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "writeable",
- .type = P_BOOLREV,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bRead_only),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "writable",
- .type = P_BOOLREV,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bRead_only),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "acl check permissions",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bAclCheckPermissions),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE | FLAG_DEPRECATED,
- },
- {
- .label = "acl group control",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bAclGroupControl),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "acl map full control",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bAclMapFullControl),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "create mask",
- .type = P_OCTAL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iCreate_mask),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "create mode",
- .type = P_OCTAL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iCreate_mask),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "force create mode",
- .type = P_OCTAL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iCreate_force_mode),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "security mask",
- .type = P_OCTAL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iSecurity_mask),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "force security mode",
- .type = P_OCTAL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iSecurity_force_mode),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "directory mask",
- .type = P_OCTAL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iDir_mask),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "directory mode",
- .type = P_OCTAL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iDir_mask),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "force directory mode",
- .type = P_OCTAL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iDir_force_mode),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "directory security mask",
- .type = P_OCTAL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iDir_Security_mask),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "force directory security mode",
- .type = P_OCTAL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iDir_Security_force_mode),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "force unknown acl user",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bForceUnknownAclUser),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "inherit permissions",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bInheritPerms),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "inherit acls",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bInheritACLS),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "inherit owner",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bInheritOwner),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "guest only",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bGuest_only),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "only guest",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bGuest_only),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "administrative share",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bAdministrative_share),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
-
- {
- .label = "guest ok",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bGuest_ok),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
- {
- .label = "public",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bGuest_ok),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "only user",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bOnlyUser),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_DEPRECATED,
- },
- {
- .label = "hosts allow",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szHostsallow),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
- {
- .label = "allow hosts",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szHostsallow),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "hosts deny",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szHostsdeny),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
- {
- .label = "deny hosts",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szHostsdeny),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "preload modules",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szPreloadModules),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "dedicated keytab file",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szDedicatedKeytabFile),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "kerberos method",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iKerberosMethod),
- .special = NULL,
- .enum_list = enum_kerberos_method,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "map untrusted to domain",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bMapUntrustedToDomain),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
-
-
- {N_("Logging Options"), P_SEP, P_SEPARATOR},
-
- {
- .label = "log level",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLogLevel),
- .special = handle_debug_list,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "debuglevel",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLogLevel),
- .special = handle_debug_list,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "syslog",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(syslog),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "syslog only",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bSyslogOnly),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "log file",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(logfile),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "max log size",
- .type = P_BYTES,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(max_log_size),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "debug timestamp",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bTimestampLogs),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "timestamp logs",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bTimestampLogs),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "debug prefix timestamp",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bDebugPrefixTimestamp),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "debug hires timestamp",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bDebugHiresTimestamp),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "debug pid",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bDebugPid),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "debug uid",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bDebugUid),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "debug class",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bDebugClass),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "enable core files",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bEnableCoreFiles),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-
- {N_("Protocol Options"), P_SEP, P_SEPARATOR},
-
- {
- .label = "allocation roundup size",
- .type = P_BYTES,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iallocation_roundup_size),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "aio read size",
- .type = P_BYTES,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iAioReadSize),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "aio write size",
- .type = P_BYTES,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iAioWriteSize),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "aio write behind",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szAioWriteBehind),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "smb ports",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(smb_ports),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "large readwrite",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bLargeReadwrite),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "server max protocol",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(srv_maxprotocol),
- .special = NULL,
- .enum_list = enum_protocol,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "max protocol",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(srv_maxprotocol),
- .special = NULL,
- .enum_list = enum_protocol,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "protocol",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(srv_maxprotocol),
- .special = NULL,
- .enum_list = enum_protocol,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "server min protocol",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(srv_minprotocol),
- .special = NULL,
- .enum_list = enum_protocol,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "min protocol",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(srv_minprotocol),
- .special = NULL,
- .enum_list = enum_protocol,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "client max protocol",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(cli_maxprotocol),
- .special = NULL,
- .enum_list = enum_protocol,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "client min protocol",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(cli_minprotocol),
- .special = NULL,
- .enum_list = enum_protocol,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "unicode",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bUnicode),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "min receivefile size",
- .type = P_BYTES,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iminreceivefile),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "read raw",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bReadRaw),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "write raw",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWriteRaw),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "disable netbios",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bDisableNetbios),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "reset on zero vc",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bResetOnZeroVC),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "log writeable files on exit",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bLogWriteableFilesOnExit),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "acl compatibility",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iAclCompat),
- .special = NULL,
- .enum_list = enum_acl_compat_vals,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "defer sharing violations",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bDeferSharingViolations),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "ea support",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bEASupport),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "nt acl support",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bNTAclSupport),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "nt pipe support",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bNTPipeSupport),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "nt status support",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bNTStatusSupport),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "profile acls",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bProfileAcls),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
- {
- .label = "map acl inherit",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bMap_acl_inherit),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "afs share",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bAfs_Share),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "max mux",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(max_mux),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "max xmit",
- .type = P_BYTES,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(max_xmit),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "name resolve order",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szNameResolveOrder),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "max ttl",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(max_ttl),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "max wins ttl",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(max_wins_ttl),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "min wins ttl",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(min_wins_ttl),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "time server",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bTimeServer),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "unix extensions",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bUnixExtensions),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "use spnego",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bUseSpnego),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_DEPRECATED,
- },
- {
- .label = "client signing",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(client_signing),
- .special = NULL,
- .enum_list = enum_smb_signing_vals,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "server signing",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(server_signing),
- .special = NULL,
- .enum_list = enum_smb_signing_vals,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "smb encrypt",
- .type = P_ENUM,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(ismb_encrypt),
- .special = NULL,
- .enum_list = enum_smb_signing_vals,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "client use spnego",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bClientUseSpnego),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "client ldap sasl wrapping",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(client_ldap_sasl_wrapping),
- .special = NULL,
- .enum_list = enum_ldap_sasl_wrapping,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "enable asu support",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bASUSupport),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "svcctl list",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szServicesList),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "cldap port",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(cldap_port),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "dgram port",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(dgram_port),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "nbt port",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(nbt_port),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "krb5 port",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(krb5_port),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "kpasswd port",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(kpasswd_port),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "web port",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(web_port),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "rpc big endian",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bRpcBigEndian),
- .special = NULL,
- .enum_list = NULL
- },
-
- {N_("Tuning Options"), P_SEP, P_SEPARATOR},
-
- {
- .label = "block size",
- .type = P_BYTES,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iBlock_size),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "deadtime",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(deadtime),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "getwd cache",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(getwd_cache),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "keepalive",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iKeepalive),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "change notify",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bChangeNotify),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "directory name cache size",
- .type = P_INTEGER,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iDirectoryNameCacheSize),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "kernel change notify",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bKernelChangeNotify),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "lpq cache time",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(lpqcachetime),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "max smbd processes",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iMaxSmbdProcesses),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "max connections",
- .type = P_INTEGER,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iMaxConnections),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "paranoid server security",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(paranoid_server_security),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "max disk size",
- .type = P_BYTES,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(maxdisksize),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "max open files",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(max_open_files),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "min print space",
- .type = P_INTEGER,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iMinPrintSpace),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "socket options",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(socket_options),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "strict allocate",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bStrictAllocate),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "strict sync",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bStrictSync),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "sync always",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bSyncAlways),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "use mmap",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bUseMmap),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "use sendfile",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bUseSendfile),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "hostname lookups",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bHostnameLookups),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "write cache size",
- .type = P_BYTES,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iWriteCacheSize),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "name cache timeout",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(name_cache_timeout),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ctdbd socket",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ctdbdSocket),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "cluster addresses",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szClusterAddresses),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "clustering",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(clustering),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "ctdb timeout",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ctdb_timeout),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "ctdb locktime warn threshold",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ctdb_locktime_warn_threshold),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "smb2 max read",
- .type = P_BYTES,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ismb2_max_read),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "smb2 max write",
- .type = P_BYTES,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ismb2_max_write),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "smb2 max trans",
- .type = P_BYTES,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ismb2_max_trans),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "smb2 max credits",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ismb2_max_credits),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-
- {N_("Printing Options"), P_SEP, P_SEPARATOR},
-
- {
- .label = "max reported print jobs",
- .type = P_INTEGER,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iMaxReportedPrintJobs),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "max print jobs",
- .type = P_INTEGER,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iMaxPrintJobs),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "load printers",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bLoadPrinters),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "printcap cache time",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(PrintcapCacheTime),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "printcap name",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szPrintcapname),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "printcap",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szPrintcapname),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "printable",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bPrint_ok),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "print notify backchannel",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bPrintNotifyBackchannel),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "print ok",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bPrint_ok),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "printing",
- .type = P_ENUM,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iPrinting),
- .special = handle_printing,
- .enum_list = enum_printing,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "cups options",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szCupsOptions),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "cups server",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szCupsServer),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "cups encrypt",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(CupsEncrypt),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
-
- .label = "cups connection timeout",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(cups_connection_timeout),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "iprint server",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szIPrintServer),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "print command",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szPrintcommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "disable spoolss",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bDisableSpoolss),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "enable spoolss",
- .type = P_BOOLREV,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bDisableSpoolss),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "lpq command",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szLpqcommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "lprm command",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szLprmcommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "lppause command",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szLppausecommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "lpresume command",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szLpresumecommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "queuepause command",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szQueuepausecommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "queueresume command",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szQueueresumecommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
- },
- {
- .label = "addport command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAddPortCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "enumports command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szEnumPortsCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "addprinter command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAddPrinterCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "deleteprinter command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szDeletePrinterCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "show add printer wizard",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bMsAddPrinterWizard),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "os2 driver map",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szOs2DriverMap),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-
- {
- .label = "printer name",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szPrintername),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "printer",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szPrintername),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "use client driver",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bUseClientDriver),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "default devmode",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bDefaultDevmode),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "force printername",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bForcePrintername),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
- {
- .label = "printjob username",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szPrintjobUsername),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_PRINT,
- },
-
- {N_("Filename Handling"), P_SEP, P_SEPARATOR},
-
- {
- .label = "mangling method",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szManglingMethod),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "mangle prefix",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(mangle_prefix),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-
- {
- .label = "default case",
- .type = P_ENUM,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iDefaultCase),
- .special = NULL,
- .enum_list = enum_case,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "case sensitive",
- .type = P_ENUM,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iCaseSensitive),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "casesignames",
- .type = P_ENUM,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iCaseSensitive),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL | FLAG_HIDE,
- },
- {
- .label = "preserve case",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bCasePreserve),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "short preserve case",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bShortCasePreserve),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "mangling char",
- .type = P_CHAR,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(magic_char),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "hide dot files",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bHideDotFiles),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "hide special files",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bHideSpecialFiles),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "hide unreadable",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bHideUnReadable),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "hide unwriteable files",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bHideUnWriteableFiles),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "delete veto files",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bDeleteVetoFiles),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "veto files",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szVetoFiles),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "hide files",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szHideFiles),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "veto oplock files",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szVetoOplockFiles),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "map archive",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bMap_archive),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "map hidden",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bMap_hidden),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "map system",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bMap_system),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "map readonly",
- .type = P_ENUM,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iMap_readonly),
- .special = NULL,
- .enum_list = enum_map_readonly,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "mangled names",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bMangledNames),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "max stat cache size",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iMaxStatCacheSize),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "stat cache",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bStatCache),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "store dos attributes",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bStoreDosAttributes),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "dmapi support",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bDmapiSupport),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
-
-
- {N_("Domain Options"), P_SEP, P_SEPARATOR},
-
- {
- .label = "machine password timeout",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(machine_password_timeout),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_WIZARD,
- },
-
- {N_("Logon Options"), P_SEP, P_SEPARATOR},
-
- {
- .label = "add user script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAddUserScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "rename user script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szRenameUserScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "delete user script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szDelUserScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "add group script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAddGroupScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "delete group script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szDelGroupScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "add user to group script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAddUserToGroupScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "delete user from group script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szDelUserFromGroupScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "set primary group script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szSetPrimaryGroupScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "add machine script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAddMachineScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "shutdown script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szShutdownScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "abort shutdown script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAbortShutdownScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "username map script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szUsernameMapScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "username map cache time",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iUsernameMapCacheTime),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "logon script",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLogonScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "logon path",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLogonPath),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "logon drive",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLogonDrive),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "logon home",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLogonHome),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "domain logons",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bDomainLogons),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-
- {
- .label = "init logon delayed hosts",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szInitLogonDelayedHosts),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-
- {
- .label = "init logon delay",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(InitLogonDelay),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
-
- },
-
- {N_("Browse Options"), P_SEP, P_SEPARATOR},
-
- {
- .label = "os level",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(os_level),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED,
- },
- {
- .label = "lm announce",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(lm_announce),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "lm interval",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(lm_interval),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "preferred master",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iPreferredMaster),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_BASIC | FLAG_ADVANCED,
- },
- {
- .label = "prefered master",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iPreferredMaster),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_HIDE,
- },
- {
- .label = "local master",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bLocalMaster),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED,
- },
- {
- .label = "domain master",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iDomainMaster),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_BASIC | FLAG_ADVANCED,
- },
- {
- .label = "browse list",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bBrowseList),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "browseable",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bBrowseable),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
- {
- .label = "browsable",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bBrowseable),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "access based share enum",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bAccessBasedShareEnum),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE
- },
- {
- .label = "enhanced browsing",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(enhanced_browsing),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-
- {N_("WINS Options"), P_SEP, P_SEPARATOR},
-
- {
- .label = "dns proxy",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWINSdnsProxy),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "wins proxy",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWINSproxy),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "wins server",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szWINSservers),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "wins support",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWINSsupport),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
- },
- {
- .label = "wins hook",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szWINSHook),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-
- {N_("Locking Options"), P_SEP, P_SEPARATOR},
+ .bMSDfsRoot = false,
+ .bUseClientDriver = false,
+ .bDefaultDevmode = true,
+ .bForcePrintername = false,
+ .bNTAclSupport = true,
+ .bForceUnknownAclUser = false,
+ .bUseSendfile = false,
+ .bProfileAcls = false,
+ .bMap_acl_inherit = false,
+ .bAfs_Share = false,
+ .bEASupport = false,
+ .bAclCheckPermissions = true,
+ .bAclMapFullControl = true,
+ .bAclGroupControl = false,
+ .bChangeNotify = true,
+ .bKernelChangeNotify = true,
+ .iallocation_roundup_size = SMB_ROUNDUP_ALLOCATION_SIZE,
+ .iAioReadSize = 0,
+ .iAioWriteSize = 0,
+ .iMap_readonly = MAP_READONLY_YES,
+#ifdef BROKEN_DIRECTORY_HANDLING
+ .iDirectoryNameCacheSize = 0,
+#else
+ .iDirectoryNameCacheSize = 100,
+#endif
+ .ismb_encrypt = SMB_SIGNING_DEFAULT,
+ .param_opt = NULL,
+ .dummy = ""
+};
- {
- .label = "blocking locks",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bBlockingLocks),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "csc policy",
- .type = P_ENUM,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iCSCPolicy),
- .special = NULL,
- .enum_list = enum_csc_policy,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "fake oplocks",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bFakeOplocks),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "kernel oplocks",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bKernelOplocks),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "locking",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bLocking),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "lock spin time",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iLockSpinTime),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "oplocks",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bOpLocks),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "level2 oplocks",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bLevel2OpLocks),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "oplock break wait time",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(oplock_break_wait_time),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "oplock contention limit",
- .type = P_INTEGER,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iOplockContentionLimit),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "posix locking",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bPosixLocking),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "strict locking",
- .type = P_ENUM,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iStrictLocking),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
+/* local variables */
+static struct loadparm_service **ServicePtrs = NULL;
+static int iNumServices = 0;
+static int iServiceIndex = 0;
+static struct db_context *ServiceHash;
+static int *invalid_services = NULL;
+static int num_invalid_services = 0;
+static bool bInGlobalSection = true;
+static bool bGlobalOnly = false;
- {N_("Ldap Options"), P_SEP, P_SEPARATOR},
+#define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct))
- {
- .label = "ldap admin dn",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLdapAdminDn),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap delete dn",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_delete_dn),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap group suffix",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLdapGroupSuffix),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap idmap suffix",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLdapIdmapSuffix),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap machine suffix",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLdapMachineSuffix),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap passwd sync",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_passwd_sync),
- .special = NULL,
- .enum_list = enum_ldap_passwd_sync,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap password sync",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_passwd_sync),
- .special = NULL,
- .enum_list = enum_ldap_passwd_sync,
- .flags = FLAG_HIDE,
- },
- {
- .label = "ldap replication sleep",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_replication_sleep),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap suffix",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLdapSuffix),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap ssl",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_ssl),
- .special = NULL,
- .enum_list = enum_ldap_ssl,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap ssl ads",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_ssl_ads),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap deref",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_deref),
- .special = NULL,
- .enum_list = enum_ldap_deref,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap follow referral",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_follow_referral),
- .special = NULL,
- .enum_list = enum_bool_auto,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap timeout",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_timeout),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap connection timeout",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_connection_timeout),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap page size",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_page_size),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap user suffix",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLdapUserSuffix),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap debug level",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_debug_level),
- .special = handle_ldap_debug_level,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ldap debug threshold",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ldap_debug_threshold),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
+/* prototypes for the special type handlers */
+static bool handle_include(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
+static bool handle_copy(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
+static bool handle_idmap_backend(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
+static bool handle_idmap_uid(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
+static bool handle_idmap_gid(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
+static bool handle_debug_list(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
+static bool handle_realm(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
+static bool handle_netbios_aliases(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
+static bool handle_charset(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
+static bool handle_dos_charset(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr );
+static bool handle_printing(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
+static bool handle_ldap_debug_level(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr);
- {N_("EventLog Options"), P_SEP, P_SEPARATOR},
+/* these are parameter handlers which are not needed in the
+ * source3 code
+ */
- {
- .label = "eventlog list",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szEventLogs),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
- },
+#define handle_logfile NULL
- {N_("Miscellaneous Options"), P_SEP, P_SEPARATOR},
+static void set_allowed_client_auth(void);
- {
- .label = "add share command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAddShareCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "change share command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szChangeShareCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "delete share command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szDeleteShareCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "config file",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szConfigFile),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE|FLAG_META,
- },
- {
- .label = "preload",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAutoServices),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "auto services",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAutoServices),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "lock directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLockDir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "lock dir",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLockDir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "state directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szStateDir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "cache directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szCacheDir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "pid directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szPidDir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ntp signd socket directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szNTPSignDSocketDirectory),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-
-#ifdef WITH_UTMP
- {
- .label = "utmp directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szUtmpDir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "wtmp directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szWtmpDir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "utmp",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bUtmp),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-#endif
- {
- .label = "default service",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szDefaultService),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "default",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szDefaultService),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "message command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szMsgCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "dfree cache time",
- .type = P_INTEGER,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(iDfreeCacheTime),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "dfree command",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szDfree),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "get quota command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szGetQuota),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "set quota command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szSetQuota),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "remote announce",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szRemoteAnnounce),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "remote browse sync",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szRemoteBrowseSync),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "socket address",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szSocketAddress),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "nmbd bind explicit broadcast",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bNmbdBindExplicitBroadcast),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "homedir map",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szNISHomeMapName),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "afs username map",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szAfsUsernameMap),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "afs token lifetime",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iAfsTokenLifetime),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "log nt token command",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szLogNtTokenCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "NIS homedir",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bNISHomeMap),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "-valid",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(valid),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "copy",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szCopy),
- .special = handle_copy,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "include",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szInclude),
- .special = handle_include,
- .enum_list = NULL,
- .flags = FLAG_HIDE|FLAG_META,
- },
- {
- .label = "preexec",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szPreExec),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
- {
- .label = "exec",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szPreExec),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "preexec close",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bPreexecClose),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "postexec",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szPostExec),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
- {
- .label = "root preexec",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szRootPreExec),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
- {
- .label = "root preexec close",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bRootpreexecClose),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "root postexec",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szRootPostExec),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
- {
- .label = "available",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bAvailable),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
- },
- {
- .label = "registry shares",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bRegistryShares),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "usershare allow guests",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bUsershareAllowGuests),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "usershare max shares",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iUsershareMaxShares),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "usershare owner only",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bUsershareOwnerOnly),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "usershare path",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szUsersharePath),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "usershare prefix allow list",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szUsersharePrefixAllowList),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "usershare prefix deny list",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szUsersharePrefixDenyList),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "usershare template share",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szUsershareTemplateShare),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "volume",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(volume),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "fstype",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(fstype),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "set directory",
- .type = P_BOOLREV,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bNo_set_dir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "allow insecure wide links",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bAllowInsecureWidelinks),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "wide links",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bWidelinks),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "follow symlinks",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bSymlinks),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "dont descend",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szDontdescend),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "magic script",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szMagicScript),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "magic output",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szMagicOutput),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "delete readonly",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bDeleteReadonly),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "dos filemode",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bDosFilemode),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "dos filetimes",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bDosFiletimes),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "dos filetime resolution",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bDosFiletimeResolution),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
- },
- {
- .label = "fake directory create times",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bFakeDirCreateTimes),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "async smb echo handler",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bAsyncSMBEchoHandler),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
- {
- .label = "panic action",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szPanicAction),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "perfcount module",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szSMBPerfcountModule),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
+static void add_to_file_list(const char *fname, const char *subfname);
+static bool lp_set_cmdline_helper(const char *pszParmName, const char *pszParmValue, bool store_values);
+static void free_param_opts(struct parmlist_entry **popts);
- {N_("VFS module options"), P_SEP, P_SEPARATOR},
+#include "lib/param/param_table.c"
- {
- .label = "vfs objects",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szVfsObjects),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "vfs object",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szVfsObjects),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
+/* this is used to prevent lots of mallocs of size 1 */
+static const char null_string[] = "";
+/**
+ Set a string value, allocing the space for the string
+**/
- {N_("MSDFS options"), P_SEP, P_SEPARATOR},
+static bool string_init(char **dest,const char *src)
+{
+ size_t l;
- {
- .label = "msdfs root",
- .type = P_BOOL,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(bMSDfsRoot),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "msdfs proxy",
- .type = P_STRING,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(szMSDfsProxy),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_SHARE,
- },
- {
- .label = "host msdfs",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bHostMSDfs),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
+ if (!src)
+ src = "";
- {N_("Winbind options"), P_SEP, P_SEPARATOR},
+ l = strlen(src);
- {
- .label = "passdb expand explicit",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bPassdbExpandExplicit),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "idmap backend",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szIdmapBackend),
- .special = handle_idmap_backend,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_DEPRECATED,
- },
- {
- .label = "idmap cache time",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iIdmapCacheTime),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "idmap negative cache time",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(iIdmapNegativeCacheTime),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "idmap uid",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szIdmapUID),
- .special = handle_idmap_uid,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_DEPRECATED,
- },
- {
- .label = "winbind uid",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szIdmapUID),
- .special = handle_idmap_uid,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "idmap gid",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szIdmapGID),
- .special = handle_idmap_gid,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_DEPRECATED,
- },
- {
- .label = "winbind gid",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szIdmapGID),
- .special = handle_idmap_gid,
- .enum_list = NULL,
- .flags = FLAG_HIDE,
- },
- {
- .label = "template homedir",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szTemplateHomedir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "template shell",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szTemplateShell),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind separator",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szWinbindSeparator),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind cache time",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(winbind_cache_time),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind reconnect delay",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(winbind_reconnect_delay),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind max clients",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(winbind_max_clients),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind enum users",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWinbindEnumUsers),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind enum groups",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWinbindEnumGroups),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind use default domain",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWinbindUseDefaultDomain),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind trusted domains only",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWinbindTrustedDomainsOnly),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind nested groups",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWinbindNestedGroups),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind expand groups",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(winbind_expand_groups),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind nss info",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szWinbindNssInfo),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind refresh tickets",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWinbindRefreshTickets),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind offline logon",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWinbindOfflineLogon),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind normalize names",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWinbindNormalizeNames),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind rpc only",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWinbindRpcOnly),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "create krb5 conf",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bCreateKrb5Conf),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "ncalrpc dir",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(ncalrpc_dir),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind max domain connections",
- .type = P_INTEGER,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(winbindMaxDomainConnections),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbindd socket directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szWinbinddSocketDirectory),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbindd privileged socket directory",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szWinbinddPrivilegedSocketDirectory),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "winbind sealed pipes",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bWinbindSealedPipes),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
-
- {N_("DNS options"), P_SEP, P_SEPARATOR},
- {
- .label = "allow dns updates",
- .type = P_ENUM,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(allow_dns_updates),
- .special = NULL,
- .enum_list = enum_dns_update_settings,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "dns forwarder",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(dns_forwarder),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "dns recursive queries",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(dns_recursive_queries),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "dns update command",
- .type = P_CMDLIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szDNSUpdateCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "nsupdate command",
- .type = P_CMDLIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szNSUpdateCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "rndc command",
- .type = P_CMDLIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szRNDCCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "multicast dns register",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(bMulticastDnsRegister),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED | FLAG_GLOBAL,
- },
+ if (l == 0) {
+ *dest = discard_const_p(char, null_string);
+ } else {
+ (*dest) = SMB_STRDUP(src);
+ if ((*dest) == NULL) {
+ DEBUG(0,("Out of memory in string_init\n"));
+ return false;
+ }
+ }
+ return(true);
+}
- {N_("AD DC options"), P_SEP, P_SEPARATOR},
+/**
+ Free a string value.
+**/
- {
- .label = "samba kcc command",
- .type = P_CMDLIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szSambaKCCCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "server services",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(server_services),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "dcerpc endpoint servers",
- .type = P_LIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(dcerpc_ep_servers),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "spn update command",
- .type = P_CMDLIST,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szSPNUpdateCommand),
- .special = NULL,
- .enum_list = NULL,
- .flags = FLAG_ADVANCED,
- },
- {
- .label = "share backend",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(szShareBackend),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "ntvfs handler",
- .type = P_LIST,
- .p_class = P_LOCAL,
- .offset = LOCAL_VAR(ntvfs_handler),
- .special = NULL,
- .enum_list = NULL
- },
+static void string_free(char **s)
+{
+ if (!s || !(*s))
+ return;
+ if (*s == null_string)
+ *s = NULL;
+ SAFE_FREE(*s);
+}
- {N_("TLS options"), P_SEP, P_SEPARATOR},
+/**
+ Set a string value, deallocating any existing space, and allocing the space
+ for the string
+**/
- {
- .label = "tls enabled",
- .type = P_BOOL,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(tls_enabled),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "tls keyfile",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(tls_keyfile),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "tls certfile",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(tls_certfile),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "tls cafile",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(tls_cafile),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "tls crlfile",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(tls_crlfile),
- .special = NULL,
- .enum_list = NULL
- },
- {
- .label = "tls dh params file",
- .type = P_STRING,
- .p_class = P_GLOBAL,
- .offset = GLOBAL_VAR(tls_dhpfile),
- .special = NULL,
- .enum_list = NULL
- },
-
- {NULL, P_BOOL, P_NONE, 0, NULL, NULL, 0}
-};
+static bool string_set(char **dest,const char *src)
+{
+ string_free(dest);
+ return(string_init(dest,src));
+}
/***************************************************************************
Initialise the sDefault parameter structure for the printer values.
case PRINT_CUPS:
case PRINT_IPRINT:
-#ifdef HAVE_CUPS
/* set the lpq command to contain the destination printer
name only. This is used by cups_queue_get() */
string_set(&pService->szLpqcommand, "%p");
string_set(&pService->szLpresumecommand, "");
string_set(&pService->szQueuepausecommand, "");
string_set(&pService->szQueueresumecommand, "");
-#else
- string_set(&pService->szLpqcommand, "lpq -P'%p'");
- string_set(&pService->szLprmcommand, "lprm -P'%p' %j");
- string_set(&pService->szPrintcommand, "lpr -P'%p' %s; rm %s");
- string_set(&pService->szLppausecommand, "lp -i '%p-%j' -H hold");
- string_set(&pService->szLpresumecommand, "lp -i '%p-%j' -H resume");
- string_set(&pService->szQueuepausecommand, "disable '%p'");
- string_set(&pService->szQueueresumecommand, "enable '%p'");
-#endif /* HAVE_CUPS */
break;
case PRINT_SYSV:
string_set(&pService->szPrintcommand, "lp -r -P%p %s");
break;
-#if defined(DEVELOPER) || defined(ENABLE_BUILD_FARM_HACKS)
+#if defined(DEVELOPER) || defined(ENABLE_SELFTEST)
case PRINT_TEST:
case PRINT_VLP: {
{
free_param_opts(&Globals.param_opt);
free_parameters_by_snum(GLOBAL_SECTION_SNUM);
+ TALLOC_FREE(Globals.ctx);
}
static int map_parameter(const char *pszParmName);
* table once the defaults are set */
ZERO_STRUCT(Globals);
+ Globals.ctx = talloc_new(NULL);
+
for (i = 0; parm_table[i].label; i++) {
if ((parm_table[i].type == P_STRING ||
parm_table[i].type == P_USTRING))
string_set(&Globals.szStateDir, get_dyn_STATEDIR());
string_set(&Globals.szCacheDir, get_dyn_CACHEDIR());
string_set(&Globals.szPidDir, get_dyn_PIDDIR());
- string_set(&Globals.szSocketAddress, "0.0.0.0");
+ string_set(&Globals.nbt_client_socket_address, "0.0.0.0");
/*
* By default support explicit binding to broadcast
* addresses.
Globals.srv_maxprotocol = PROTOCOL_SMB2_10;
Globals.srv_minprotocol = PROTOCOL_LANMAN1;
Globals.security = SEC_USER;
- Globals.paranoid_server_security = true;
Globals.bEncryptPasswords = true;
Globals.clientSchannel = Auto;
Globals.serverSchannel = Auto;
Globals.syslog = 1;
Globals.bSyslogOnly = false;
Globals.bTimestampLogs = true;
- string_set(&Globals.szLogLevel, "0");
+ string_set(&Globals.loglevel, "0");
Globals.bDebugPrefixTimestamp = false;
Globals.bDebugHiresTimestamp = true;
Globals.bDebugPid = false;
Globals.bMsAddPrinterWizard = true;
Globals.os_level = 20;
Globals.bLocalMaster = true;
- Globals.iDomainMaster = Auto; /* depending on bDomainLogons */
+ Globals.domain_master = Auto; /* depending on bDomainLogons */
Globals.bDomainLogons = false;
Globals.bBrowseList = true;
Globals.bWINSsupport = false;
#define FN_GLOBAL_STRING(fn_name,ptr) \
char *lp_ ## fn_name(TALLOC_CTX *ctx) {return(lp_string((ctx), *(char **)(&Globals.ptr) ? *(char **)(&Globals.ptr) : ""));}
#define FN_GLOBAL_CONST_STRING(fn_name,ptr) \
- const char *lp_ ## fn_name(void) {return(*(const char **)(&Globals.ptr) ? *(const char **)(&Globals.ptr) : "");}
+ const char *lp_ ## fn_name(void) {return(*(const char * const *)(&Globals.ptr) ? *(const char * const *)(&Globals.ptr) : "");}
#define FN_GLOBAL_LIST(fn_name,ptr) \
const char **lp_ ## fn_name(void) {return(*(const char ***)(&Globals.ptr));}
#define FN_GLOBAL_BOOL(fn_name,ptr) \
char lp_ ## fn_name(const struct share_params *p) {return(LP_SNUM_OK(p->service)? ServicePtrs[(p->service)]->val : sDefault.val);}
-static FN_GLOBAL_BOOL(domain_logons, bDomainLogons)
static FN_GLOBAL_BOOL(_readraw, bReadRaw)
static FN_GLOBAL_BOOL(_writeraw, bWriteRaw)
/* These functions remain in source3/param for now */
-FN_GLOBAL_INTEGER(security, security)
-FN_GLOBAL_INTEGER(usershare_max_shares, iUsershareMaxShares)
FN_GLOBAL_STRING(configfile, szConfigFile)
#include "lib/param/param_functions.c"
{
struct parmlist_entry *opt, *next_opt;
- if (popts == NULL) {
- return;
- }
-
if (*popts != NULL) {
DEBUG(5, ("Freeing parametrics:\n"));
}
}
free_service(ServicePtrs[idx]);
+ talloc_free_children(ServicePtrs[idx]);
}
/***************************************************************************
return (-1);
}
ServicePtrs = tsp;
- ServicePtrs[iNumServices] = SMB_MALLOC_P(struct loadparm_service);
+ ServicePtrs[iNumServices] = talloc(NULL, struct loadparm_service);
if (!ServicePtrs[iNumServices]) {
DEBUG(0,("add_a_service: out of memory!\n"));
return (-1);
result = talloc_strdup(ctx, src);
SMB_ASSERT(result != NULL);
- strlower_m(result);
+ if (!strlower_m(result)) {
+ TALLOC_FREE(result);
+ return NULL;
+ }
return result;
}
struct parmlist_entry *new_opt, *opt;
bool not_added;
- if (opt_list == NULL) {
- return;
- }
-
opt = *opt_list;
not_added = true;
static bool handle_realm(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr)
{
bool ret = true;
- char *realm = strupper_talloc(talloc_tos(), pszParmValue);
+ TALLOC_CTX *frame = talloc_stackframe();
+ char *realm = strupper_talloc(frame, pszParmValue);
char *dnsdomain = strlower_talloc(realm, pszParmValue);
ret &= string_set(&Globals.szRealm, pszParmValue);
ret &= string_set(&Globals.szRealm_upper, realm);
ret &= string_set(&Globals.szRealm_lower, dnsdomain);
- TALLOC_FREE(realm);
+ TALLOC_FREE(frame);
return ret;
}
fault_configure(smb_panic_s3);
+ if (lp_server_role() == ROLE_ACTIVE_DIRECTORY_DC) {
+ const char **vfs_objects = lp_vfs_objects(-1);
+ if (!vfs_objects || !vfs_objects[0]) {
+ if (lp_parm_const_string(-1, "xattr_tdb", "file", NULL)) {
+ lp_do_parameter(-1, "vfs objects", "dfs_samba4 acl_xattr xattr_tdb");
+ } else if (lp_parm_const_string(-1, "posix", "eadb", NULL)) {
+ lp_do_parameter(-1, "vfs objects", "dfs_samba4 acl_xattr posix_eadb");
+ } else {
+ lp_do_parameter(-1, "vfs objects", "dfs_samba4 acl_xattr");
+ }
+ }
+ lp_do_parameter(-1, "passdb backend", "samba_dsdb");
+ }
+
bAllowIncludeRegistry = true;
return (bRetval);
bool lp_domain_master(void)
{
- if (Globals.iDomainMaster == Auto)
+ if (Globals.domain_master == Auto)
return (lp_server_role() == ROLE_DOMAIN_PDC);
- return (bool)Globals.iDomainMaster;
+ return (bool)Globals.domain_master;
}
/***********************************************************
static bool lp_domain_master_true_or_auto(void)
{
- if (Globals.iDomainMaster) /* auto or yes */
+ if (Globals.domain_master) /* auto or yes */
return true;
return false;
return Globals.szPrintcapname;
if (sDefault.iPrinting == PRINT_CUPS) {
-#ifdef HAVE_CUPS
return "cups";
-#else
- return "lpstat";
-#endif
}
if (sDefault.iPrinting == PRINT_BSD)
return MIN(Globals.iminreceivefile, BUFFER_SIZE);
}
-/*******************************************************************
- If socket address is an empty character string, it is necessary to
- define it as "0.0.0.0".
-********************************************************************/
-
-const char *lp_socket_address(void)
-{
- char *sock_addr = Globals.szSocketAddress;
-
- if (sock_addr[0] == '\0'){
- string_set(&Globals.szSocketAddress, "0.0.0.0");
- }
- return Globals.szSocketAddress;
-}
-
/*******************************************************************
Safe wide links checks.
This helper function always verify the validity of wide links,
int lp_server_role(void)
{
return lp_find_server_role(lp__server_role(),
- lp_security(),
- lp_domain_logons(),
+ lp__security(),
+ lp__domain_logons(),
lp_domain_master_true_or_auto());
}
+
+int lp_security(void)
+{
+ return lp_find_security(lp__server_role(),
+ lp__security());
+}