lib/param: Remove unused lpcfg_next_parameter (once used by SWAT)
[kai/samba-autobuild/.git] / lib / param / loadparm.c
index 8e9b9c3ea6bec0a3c093ea609cb19b4861991625..ae5f01cd38bac6fe1033d41752451d2c59845512 100644 (file)
@@ -327,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,
@@ -802,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;
@@ -834,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];
 }
@@ -875,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;
@@ -927,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;
 
@@ -937,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,
@@ -1429,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) {
@@ -1458,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, ':')) {
@@ -1548,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++;
 
@@ -1574,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;
        }
 
@@ -1617,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 = ", ";
@@ -1656,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;
                }
@@ -1697,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:
@@ -1835,7 +1843,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) {
@@ -1878,16 +1886,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");
                }
@@ -1917,63 +1925,11 @@ bool lpcfg_dump_a_parameter(struct loadparm_context *lp_ctx,
 
        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.
  */
@@ -2146,7 +2102,7 @@ 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);
 
@@ -2157,7 +2113,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
        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");
@@ -2236,6 +2192,180 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
 
        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");
+
        for (i = 0; parm_table[i].label; i++) {
                if (!(lp_ctx->flags[i] & FLAG_CMDLINE)) {
                        lp_ctx->flags[i] |= FLAG_DEFAULT;