lib/param: Fix default of printjob username to match s3
[sfrench/samba-autobuild/.git] / lib / param / loadparm.c
index cbfaecfa95f89d014bb6770df9738125de54c27d..a1963838183f084fbee463c5995039ab8aec0d8c 100644 (file)
@@ -74,7 +74,7 @@ static bool defaults_saved = false;
 
 #define LOADPARM_EXTRA_GLOBALS \
        struct parmlist_entry *param_opt;                               \
-       char *szRealm;                                                  \
+       char *realm_original;                                           \
        char *szConfigFile;                                             \
        int iminreceivefile;                                            \
        char *szPrintcapname;                                           \
@@ -95,8 +95,7 @@ static bool defaults_saved = false;
        char *tls_cafile;                                               \
        char *tls_crlfile;                                              \
        char *tls_dhpfile;                                              \
-       char *loglevel;                                                 \
-       char *panic_action;                                             
+       char *loglevel;
 
 #include "lib/param/param_global.h"
 
@@ -328,7 +327,6 @@ FN_GLOBAL_CONST_STRING(cachedir, szCacheDir)
 FN_GLOBAL_CONST_STRING(statedir, szStateDir)
 
 /* local prototypes */
-static int map_parameter(const char *pszParmName);
 static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx,
                                        const char *pszServiceName);
 static void copy_service(struct loadparm_service *pserviceDest,
@@ -785,7 +783,7 @@ bool lpcfg_add_printer(struct loadparm_context *lp_ctx,
        /* entry (if/when the 'available' keyword is implemented!).    */
 
        /* the printer name is set to the service name. */
-       lpcfg_string_set(service, &service->szPrintername, pszPrintername);
+       lpcfg_string_set(service, &service->_printername, pszPrintername);
        lpcfg_string_set(service, &service->comment, comment);
        service->browseable = default_service->browseable;
        /* Printers cannot be read_only. */
@@ -803,13 +801,10 @@ bool lpcfg_add_printer(struct loadparm_context *lp_ctx,
  * Returns False if the parameter string is not recognised, else TRUE.
  */
 
-static int map_parameter(const char *pszParmName)
+int lpcfg_map_parameter(const char *pszParmName)
 {
        int iIndex;
 
-       if (*pszParmName == '-')
-               return -1;
-
        for (iIndex = 0; parm_table[iIndex].label; iIndex++)
                if (strwicmp(parm_table[iIndex].label, pszParmName) == 0)
                        return iIndex;
@@ -835,7 +830,7 @@ struct parm_struct *lpcfg_parm_struct(struct loadparm_context *lp_ctx, const cha
                return lp_ctx->s3_fns->get_parm_struct(name);
        }
 
-       parmnum = map_parameter(name);
+       parmnum = lpcfg_map_parameter(name);
        if (parmnum == -1) return NULL;
        return &parm_table[parmnum];
 }
@@ -876,7 +871,7 @@ bool lpcfg_parm_is_cmdline(struct loadparm_context *lp_ctx, const char *name)
                return false;
        }
 
-       parmnum = map_parameter(name);
+       parmnum = lpcfg_map_parameter(name);
        if (parmnum == -1) return false;
 
        return lp_ctx->flags[parmnum] & FLAG_CMDLINE;
@@ -928,6 +923,7 @@ static void copy_service(struct loadparm_service *pserviceDest,
 
                        switch (parm_table[i].type) {
                                case P_BOOL:
+                               case P_BOOLREV:
                                        *(bool *)dest_ptr = *(bool *)src_ptr;
                                        break;
 
@@ -938,6 +934,10 @@ static void copy_service(struct loadparm_service *pserviceDest,
                                        *(int *)dest_ptr = *(int *)src_ptr;
                                        break;
 
+                               case P_CHAR:
+                                       *(char *)dest_ptr = *(char *)src_ptr;
+                                       break;
+
                                case P_STRING:
                                        lpcfg_string_set(pserviceDest,
                                                   (char **)dest_ptr,
@@ -1110,11 +1110,11 @@ static bool handle_realm(struct loadparm_context *lp_ctx, int unused,
 {
        lpcfg_string_set(lp_ctx, ptr, pszParmValue);
 
-       talloc_free(lp_ctx->globals->szRealm_upper);
-       talloc_free(lp_ctx->globals->szRealm_lower);
+       talloc_free(lp_ctx->globals->realm);
+       talloc_free(lp_ctx->globals->dnsdomain);
 
-       lp_ctx->globals->szRealm_upper = strupper_talloc(lp_ctx, pszParmValue);
-       lp_ctx->globals->szRealm_lower = strlower_talloc(lp_ctx, pszParmValue);
+       lp_ctx->globals->realm = strupper_talloc(lp_ctx, pszParmValue);
+       lp_ctx->globals->dnsdomain = strlower_talloc(lp_ctx, pszParmValue);
 
        return true;
 }
@@ -1430,7 +1430,7 @@ mark_non_default:
 bool lpcfg_do_global_parameter(struct loadparm_context *lp_ctx,
                               const char *pszParmName, const char *pszParmValue)
 {
-       int parmnum = map_parameter(pszParmName);
+       int parmnum = lpcfg_map_parameter(pszParmName);
        void *parm_ptr;
 
        if (parmnum < 0) {
@@ -1459,7 +1459,7 @@ bool lpcfg_do_service_parameter(struct loadparm_context *lp_ctx,
 {
        void *parm_ptr;
        int i;
-       int parmnum = map_parameter(pszParmName);
+       int parmnum = lpcfg_map_parameter(pszParmName);
 
        if (parmnum < 0) {
                if (strchr(pszParmName, ':')) {
@@ -1549,7 +1549,7 @@ bool lpcfg_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName,
                return lp_ctx->s3_fns->set_cmdline(pszParmName, pszParmValue);
        }
 
-       parmnum = map_parameter(pszParmName);
+       parmnum = lpcfg_map_parameter(pszParmName);
 
        while (isspace((unsigned char)*pszParmValue)) pszParmValue++;
 
@@ -1575,10 +1575,17 @@ bool lpcfg_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName,
        lp_ctx->flags[parmnum] |= FLAG_CMDLINE;
 
        /* we have to also set FLAG_CMDLINE on aliases */
-       for (i=parmnum-1;i>=0 && parm_table[i].offset == parm_table[parmnum].offset;i--) {
+       for (i=parmnum-1;
+            i>=0 && parm_table[i].p_class == parm_table[parmnum].p_class &&
+            parm_table[i].offset == parm_table[parmnum].offset;
+            i--) {
                lp_ctx->flags[i] |= FLAG_CMDLINE;
        }
-       for (i=parmnum+1;i<NUMPARAMETERS && parm_table[i].offset == parm_table[parmnum].offset;i++) {
+       for (i=parmnum+1;
+            i<NUMPARAMETERS &&
+            parm_table[i].p_class == parm_table[parmnum].p_class &&
+            parm_table[i].offset == parm_table[parmnum].offset;
+            i++) {
                lp_ctx->flags[i] |= FLAG_CMDLINE;
        }
 
@@ -1618,7 +1625,7 @@ bool lpcfg_set_option(struct loadparm_context *lp_ctx, const char *option)
  * Print a parameter of the specified type.
  */
 
-static void print_parameter(struct parm_struct *p, void *ptr, FILE * f)
+void lpcfg_print_parameter(struct parm_struct *p, void *ptr, FILE * f)
 {
        /* For the seperation of lists values that we print below */
        const char *list_sep = ", ";
@@ -1657,7 +1664,7 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f)
                        if (val == -1) {
                                fprintf(f, "-1");
                        } else {
-                               fprintf(f, "0%o", val);
+                               fprintf(f, "0%03o", val);
                        }
                        break;
                }
@@ -1698,7 +1705,7 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f)
  * Check if two parameters are equal.
  */
 
-static bool equal_parameter(parm_type type, void *ptr1, void *ptr2)
+ bool lpcfg_equal_parameter(parm_type type, void *ptr1, void *ptr2)
 {
        switch (type) {
                case P_BOOL:
@@ -1790,8 +1797,6 @@ static bool do_section(const char *pszSectionName, void *userdata)
 static bool is_default(struct loadparm_service *sDefault, int i)
 {
        void *def_ptr = ((char *)sDefault) + parm_table[i].offset;
-       if (!defaults_saved)
-               return false;
        switch (parm_table[i].type) {
                case P_CMDLIST:
                case P_LIST:
@@ -1836,7 +1841,7 @@ static void dump_globals(struct loadparm_context *lp_ctx, FILE *f,
                        if (!show_defaults && (lp_ctx->flags[i] & FLAG_DEFAULT))
                                continue;
                        fprintf(f, "\t%s = ", parm_table[i].label);
-                       print_parameter(&parm_table[i], lpcfg_parm_ptr(lp_ctx, NULL, &parm_table[i]), f);
+                       lpcfg_print_parameter(&parm_table[i], lpcfg_parm_ptr(lp_ctx, NULL, &parm_table[i]), f);
                        fprintf(f, "\n");
        }
        if (lp_ctx->globals->param_opt != NULL) {
@@ -1879,16 +1884,16 @@ static void dump_a_service(struct loadparm_service * pService, struct loadparm_s
                                        }
                                }
                        } else {
-                               if (equal_parameter(parm_table[i].type,
-                                                   ((char *)pService) +
-                                                   parm_table[i].offset,
-                                                   ((char *)sDefault) +
-                                                   parm_table[i].offset))
+                               if (lpcfg_equal_parameter(parm_table[i].type,
+                                                         ((char *)pService) +
+                                                         parm_table[i].offset,
+                                                         ((char *)sDefault) +
+                                                         parm_table[i].offset))
                                        continue;
                        }
 
                        fprintf(f, "\t%s = ", parm_table[i].label);
-                       print_parameter(&parm_table[i],
+                       lpcfg_print_parameter(&parm_table[i],
                                        ((char *)pService) + parm_table[i].offset, f);
                        fprintf(f, "\n");
                }
@@ -1912,65 +1917,17 @@ bool lpcfg_dump_a_parameter(struct loadparm_context *lp_ctx,
                return false;
        }
 
+       if (service != NULL && parm->p_class == P_GLOBAL) {
+               return false;
+       }
+
        ptr = lpcfg_parm_ptr(lp_ctx, service,parm);
 
-       print_parameter(parm, ptr, f);
+       lpcfg_print_parameter(parm, ptr, f);
        fprintf(f, "\n");
        return true;
 }
 
-/**
- * Return info about the next parameter in a service.
- * snum==-1 gives the globals.
- * Return NULL when out of parameters.
- */
-
-
-struct parm_struct *lpcfg_next_parameter(struct loadparm_context *lp_ctx, int snum, int *i,
-                                        int allparameters)
-{
-       if (snum == -1) {
-               /* do the globals */
-               for (; parm_table[*i].label; (*i)++) {
-                       if ((*parm_table[*i].label == '-'))
-                               continue;
-
-                       if ((*i) > 0
-                           && (parm_table[*i].offset ==
-                               parm_table[(*i) - 1].offset)
-                           && (parm_table[*i].p_class ==
-                               parm_table[(*i) - 1].p_class))
-                               continue;
-
-                       return &parm_table[(*i)++];
-               }
-       } else {
-               struct loadparm_service *pService = lp_ctx->services[snum];
-
-               for (; parm_table[*i].label; (*i)++) {
-                       if (parm_table[*i].p_class == P_LOCAL &&
-                           (*parm_table[*i].label != '-') &&
-                           ((*i) == 0 ||
-                            (parm_table[*i].offset !=
-                             parm_table[(*i) - 1].offset)))
-                       {
-                               if (allparameters ||
-                                   !equal_parameter(parm_table[*i].type,
-                                                    ((char *)pService) +
-                                                    parm_table[*i].offset,
-                                                    ((char *)lp_ctx->sDefault) +
-                                                    parm_table[*i].offset))
-                               {
-                                       return &parm_table[(*i)++];
-                               }
-                       }
-               }
-       }
-
-       return NULL;
-}
-
-
 /**
  * Auto-load some home services.
  */
@@ -2053,12 +2010,12 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
        lp_ctx->sDefault->browseable = true;
        lp_ctx->sDefault->readonly = true;
        lp_ctx->sDefault->map_archive = true;
-       lp_ctx->sDefault->iStrictLocking = true;
+       lp_ctx->sDefault->strict_locking = true;
        lp_ctx->sDefault->oplocks = true;
        lp_ctx->sDefault->create_mask = 0744;
-       lp_ctx->sDefault->iCreate_force_mode = 0000;
-       lp_ctx->sDefault->iDir_mask = 0755;
-       lp_ctx->sDefault->iDir_force_mode = 0000;
+       lp_ctx->sDefault->force_create_mode = 0000;
+       lp_ctx->sDefault->dir_mask = 0755;
+       lp_ctx->sDefault->force_dir_mode = 0000;
 
        DEBUG(3, ("Initialising global parameters\n"));
 
@@ -2106,12 +2063,12 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
        myname = get_myname(lp_ctx);
        lpcfg_do_global_parameter(lp_ctx, "netbios name", myname);
        talloc_free(myname);
-       lpcfg_do_global_parameter(lp_ctx, "name resolve order", "wins host bcast");
+       lpcfg_do_global_parameter(lp_ctx, "name resolve order", "lmhosts wins host bcast");
 
        lpcfg_do_global_parameter(lp_ctx, "fstype", "NTFS");
 
        lpcfg_do_global_parameter(lp_ctx, "ntvfs handler", "unixuid default");
-       lpcfg_do_global_parameter(lp_ctx, "max connections", "-1");
+       lpcfg_do_global_parameter(lp_ctx, "max connections", "0");
 
        lpcfg_do_global_parameter(lp_ctx, "dcerpc endpoint servers", "epmapper wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi dssetup unixinfo browser eventlog6 backupkey dnsserver");
        lpcfg_do_global_parameter(lp_ctx, "server services", "s3fs rpc nbt wrepl ldap cldap kdc drepl winbind ntp_signd kcc dnsupdate dns");
@@ -2127,7 +2084,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
        lpcfg_do_global_parameter(lp_ctx, "registry:HKEY_USERS", "hku.ldb");
 
        /* using UTF8 by default allows us to support all chars */
-       lpcfg_do_global_parameter(lp_ctx, "unix charset", "UTF8");
+       lpcfg_do_global_parameter(lp_ctx, "unix charset", "UTF-8");
 
        /* Use codepage 850 as a default for the dos character set */
        lpcfg_do_global_parameter(lp_ctx, "dos charset", "CP850");
@@ -2143,18 +2100,18 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
        lpcfg_do_global_parameter(lp_ctx, "cache directory", dyn_CACHEDIR);
        lpcfg_do_global_parameter(lp_ctx, "ncalrpc dir", dyn_NCALRPCDIR);
 
-       lpcfg_do_global_parameter(lp_ctx, "nbt client socket address", "");
+       lpcfg_do_global_parameter(lp_ctx, "nbt client socket address", "0.0.0.0");
        lpcfg_do_global_parameter_var(lp_ctx, "server string",
                                   "Samba %s", SAMBA_VERSION_STRING);
 
        lpcfg_do_global_parameter(lp_ctx, "password server", "*");
 
        lpcfg_do_global_parameter(lp_ctx, "max mux", "50");
-       lpcfg_do_global_parameter(lp_ctx, "max xmit", "12288");
+       lpcfg_do_global_parameter(lp_ctx, "max xmit", "16644");
        lpcfg_do_global_parameter(lp_ctx, "host msdfs", "true");
 
        lpcfg_do_global_parameter(lp_ctx, "LargeReadwrite", "True");
-       lpcfg_do_global_parameter(lp_ctx, "server min protocol", "CORE");
+       lpcfg_do_global_parameter(lp_ctx, "server min protocol", "LANMAN1");
        lpcfg_do_global_parameter(lp_ctx, "server max protocol", "NT1");
        lpcfg_do_global_parameter(lp_ctx, "client min protocol", "CORE");
        lpcfg_do_global_parameter(lp_ctx, "client max protocol", "NT1");
@@ -2227,6 +2184,202 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
         lpcfg_do_global_parameter(lp_ctx, "allow dns updates", "secure only");
         lpcfg_do_global_parameter(lp_ctx, "dns forwarder", "");
 
+       lpcfg_do_global_parameter(lp_ctx, "algorithmic rid base", "1000");
+
+       lpcfg_do_global_parameter(lp_ctx, "enhanced browsing", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "winbind nss info", "template");
+
+       lpcfg_do_global_parameter(lp_ctx, "server schannel", "Auto");
+
+       lpcfg_do_global_parameter(lp_ctx, "short preserve case", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "max open files", "16384");
+
+       lpcfg_do_global_parameter(lp_ctx, "cups connection timeout", "30");
+
+       lpcfg_do_global_parameter(lp_ctx, "locking", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "block size", "1024");
+
+       lpcfg_do_global_parameter(lp_ctx, "client use spnego", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "change notify", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "name cache timeout", "660");
+
+       lpcfg_do_global_parameter(lp_ctx, "defer sharing violations", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "ldap replication sleep", "1000");
+
+       lpcfg_do_global_parameter(lp_ctx, "idmap backend", "tdb");
+
+       lpcfg_do_global_parameter(lp_ctx, "enable privileges", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "smb2 max write", "1048576");
+
+       lpcfg_do_global_parameter(lp_ctx, "passdb backend", "tdbsam");
+
+       lpcfg_do_global_parameter(lp_ctx, "getwd cache", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "winbind nested groups", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "mangled names", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "smb2 max credits", "8192");
+
+       lpcfg_do_global_parameter(lp_ctx, "ldap ssl", "start tls");
+
+       lpcfg_do_global_parameter(lp_ctx, "ldap deref", "auto");
+
+       lpcfg_do_global_parameter(lp_ctx, "lm interval", "60");
+
+       lpcfg_do_global_parameter(lp_ctx, "mangling method", "hash2");
+
+       lpcfg_do_global_parameter(lp_ctx, "hide dot files", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "browse list", "True");
+
+       lpcfg_do_global_parameter(lp_ctx, "passwd chat timeout", "2");
+
+       lpcfg_do_global_parameter(lp_ctx, "guest account", GUEST_ACCOUNT);
+
+       lpcfg_do_global_parameter(lp_ctx, "client schannel", "auto");
+
+       lpcfg_do_global_parameter(lp_ctx, "smb encrypt", "default");
+
+       lpcfg_do_global_parameter(lp_ctx, "max log size", "5000");
+
+       lpcfg_do_global_parameter(lp_ctx, "idmap negative cache time", "120");
+
+       lpcfg_do_global_parameter(lp_ctx, "ldap follow referral", "auto");
+
+       lpcfg_do_global_parameter(lp_ctx, "multicast dns register", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "winbind reconnect delay", "30");
+
+       lpcfg_do_global_parameter(lp_ctx, "nt acl support", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "acl check permissions", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "keepalive", "300");
+
+       lpcfg_do_global_parameter(lp_ctx, "winbind cache time", "300");
+
+       lpcfg_do_global_parameter(lp_ctx, "level2 oplocks", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "show add printer wizard", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "allocation roundup size", "1048576");
+
+       lpcfg_do_global_parameter(lp_ctx, "ldap page size", "1024");
+
+       lpcfg_do_global_parameter(lp_ctx, "kernel share modes", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "strict locking", "Auto");
+
+       lpcfg_do_global_parameter(lp_ctx, "map readonly", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "allow trusted domains", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "default devmode", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "os level", "20");
+
+       lpcfg_do_global_parameter(lp_ctx, "dos filetimes", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "mangling char", "~");
+
+       lpcfg_do_global_parameter(lp_ctx, "printcap cache time", "750");
+
+       lpcfg_do_global_parameter(lp_ctx, "create krb5 conf", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "winbind max clients", "200");
+
+       lpcfg_do_global_parameter(lp_ctx, "acl map full control", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "nt pipe support", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "ldap debug threshold", "10");
+
+       lpcfg_do_global_parameter(lp_ctx, "follow symlinks", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "machine password timeout", "604800");
+
+       lpcfg_do_global_parameter(lp_ctx, "ldap connection timeout", "2");
+
+       lpcfg_do_global_parameter(lp_ctx, "winbind expand groups", "1");
+
+       lpcfg_do_global_parameter(lp_ctx, "stat cache", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "lpq cache time", "30");
+
+       lpcfg_do_global_parameter(lp_ctx, "smb2 max trans", "1048576");
+
+       lpcfg_do_global_parameter(lp_ctx, "smb2 max read", "1048576");
+
+       lpcfg_do_global_parameter(lp_ctx, "durable handles", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "max stat cache size", "256");
+
+       lpcfg_do_global_parameter(lp_ctx, "ldap passwd sync", "no");
+
+       lpcfg_do_global_parameter(lp_ctx, "kernel change notify", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "max ttl", "259200");
+
+       lpcfg_do_global_parameter(lp_ctx, "blocking locks", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "oplock contention limit", "2");
+
+       lpcfg_do_global_parameter(lp_ctx, "load printers", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "idmap cache time", "604800");
+
+       lpcfg_do_global_parameter(lp_ctx, "preserve case", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "lm announce", "auto");
+
+       lpcfg_do_global_parameter(lp_ctx, "afs token lifetime", "604800");
+
+       lpcfg_do_global_parameter(lp_ctx, "enable core files", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "winbind max domain connections", "1");
+
+       lpcfg_do_global_parameter(lp_ctx, "case sensitive", "auto");
+
+       lpcfg_do_global_parameter(lp_ctx, "ldap timeout", "15");
+
+       lpcfg_do_global_parameter(lp_ctx, "mangle prefix", "1");
+
+       lpcfg_do_global_parameter(lp_ctx, "posix locking", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "lock spin time", "200");
+
+       lpcfg_do_global_parameter(lp_ctx, "directory name cache size", "100");
+
+       lpcfg_do_global_parameter(lp_ctx, "nmbd bind explicit broadcast", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "init logon delay", "100");
+
+       lpcfg_do_global_parameter(lp_ctx, "usershare owner only", "yes");
+
+       lpcfg_do_global_parameter(lp_ctx, "-valid", "yes");
+
+       lpcfg_do_global_parameter_var(lp_ctx, "usershare path", "%s/usershares", get_dyn_STATEDIR());
+
+#ifdef DEVELOPER
+       lpcfg_do_global_parameter_var(lp_ctx, "panic action", "/bin/sleep 999999999");
+#endif
+
+       lpcfg_do_global_parameter(lp_ctx, "smb passwd file", get_dyn_SMB_PASSWD_FILE());
+
+       lpcfg_do_global_parameter(lp_ctx, "logon home", "\\\\%N\\%U");
+
+       lpcfg_do_global_parameter(lp_ctx, "logon path", "\\\\%N\\%U\\profile");
+
+       lpcfg_do_global_parameter(lp_ctx, "printjob username", "%U");
+
        for (i = 0; parm_table[i].label; i++) {
                if (!(lp_ctx->flags[i] & FLAG_CMDLINE)) {
                        lp_ctx->flags[i] |= FLAG_DEFAULT;
@@ -2297,7 +2450,7 @@ static bool lpcfg_update(struct loadparm_context *lp_ctx)
        struct debug_settings settings;
        lpcfg_add_auto_services(lp_ctx, lpcfg_auto_services(lp_ctx));
 
-       if (!lp_ctx->globals->szWINSservers && lp_ctx->globals->bWINSsupport) {
+       if (!lp_ctx->globals->wins_server_list && lp_ctx->globals->we_are_a_wins_server) {
                lpcfg_do_global_parameter(lp_ctx, "wins server", "127.0.0.1");
        }
 
@@ -2305,7 +2458,7 @@ static bool lpcfg_update(struct loadparm_context *lp_ctx)
                return true;
        }
 
-       panic_action = lp_ctx->globals->szPanicAction;
+       panic_action = lp_ctx->globals->panic_action;
 
        reload_charcnv(lp_ctx);
 
@@ -2313,13 +2466,13 @@ static bool lpcfg_update(struct loadparm_context *lp_ctx)
        /* Add any more debug-related smb.conf parameters created in
         * future here */
        settings.syslog = lp_ctx->globals->syslog;
-       settings.syslog_only = lp_ctx->globals->bSyslogOnly;
-       settings.timestamp_logs = lp_ctx->globals->bTimestampLogs;
-       settings.debug_prefix_timestamp = lp_ctx->globals->bDebugPrefixTimestamp;
-       settings.debug_hires_timestamp = lp_ctx->globals->bDebugHiresTimestamp;
-       settings.debug_pid = lp_ctx->globals->bDebugPid;
-       settings.debug_uid = lp_ctx->globals->bDebugUid;
-       settings.debug_class = lp_ctx->globals->bDebugClass;
+       settings.syslog_only = lp_ctx->globals->syslog_only;
+       settings.timestamp_logs = lp_ctx->globals->timestamp_logs;
+       settings.debug_prefix_timestamp = lp_ctx->globals->debug_prefix_timestamp;
+       settings.debug_hires_timestamp = lp_ctx->globals->debug_hires_timestamp;
+       settings.debug_pid = lp_ctx->globals->debug_pid;
+       settings.debug_uid = lp_ctx->globals->debug_uid;
+       settings.debug_class = lp_ctx->globals->debug_class;
        debug_set_settings(&settings);
 
        /* FIXME: This is a bit of a hack, but we can't use a global, since 
@@ -2512,13 +2665,13 @@ const char *lpcfg_volume_label(struct loadparm_service *service, struct loadparm
 }
 
 /**
- * If we are PDC then prefer us as DMB
+ * Return the correct printer name.
  */
 const char *lpcfg_printername(struct loadparm_service *service, struct loadparm_service *sDefault)
 {
        const char *ret;
-       ret = lp_string((const char *)((service != NULL && service->szPrintername != NULL) ?
-                                      service->szPrintername : sDefault->szPrintername));
+       ret = lp_string((const char *)((service != NULL && service->_printername != NULL) ?
+                                      service->_printername : sDefault->_printername));
        if (ret == NULL || (ret != NULL && *ret == '\0'))
                ret = lpcfg_servicename(service);