param_table: Remove misleading allow dns updates options.
[obnox/samba/samba-obnox.git] / lib / param / param_table.c
1 /*
2    Unix SMB/CIFS implementation.
3    Parameter loading functions
4    Copyright (C) Karl Auer 1993-1998
5
6    Largely re-written by Andrew Tridgell, September 1994
7
8    Copyright (C) Simo Sorce 2001
9    Copyright (C) Alexander Bokovoy 2002
10    Copyright (C) Stefan (metze) Metzmacher 2002
11    Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2003
12    Copyright (C) Michael Adam 2008
13    Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007
14    Copyright (C) Andrew Bartlett 2011
15
16    This program is free software; you can redistribute it and/or modify
17    it under the terms of the GNU General Public License as published by
18    the Free Software Foundation; either version 3 of the License, or
19    (at your option) any later version.
20
21    This program is distributed in the hope that it will be useful,
22    but WITHOUT ANY WARRANTY; without even the implied warranty of
23    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24    GNU General Public License for more details.
25
26    You should have received a copy of the GNU General Public License
27    along with this program.  If not, see <http://www.gnu.org/licenses/>.
28 */
29
30 static const struct enum_list enum_protocol[] = {
31         {PROTOCOL_SMB2_10, "SMB2"}, /* for now keep PROTOCOL_SMB2_10 */
32         {PROTOCOL_SMB3_00, "SMB3"}, /* for now keep PROTOCOL_SMB3_00 */
33         {PROTOCOL_SMB3_00, "SMB3_00"},
34         {PROTOCOL_SMB2_24, "SMB2_24"},
35         {PROTOCOL_SMB2_22, "SMB2_22"},
36         {PROTOCOL_SMB2_10, "SMB2_10"},
37         {PROTOCOL_SMB2_02, "SMB2_02"},
38         {PROTOCOL_NT1, "NT1"},
39         {PROTOCOL_LANMAN2, "LANMAN2"},
40         {PROTOCOL_LANMAN1, "LANMAN1"},
41         {PROTOCOL_CORE, "CORE"},
42         {PROTOCOL_COREPLUS, "COREPLUS"},
43         {PROTOCOL_COREPLUS, "CORE+"},
44         {-1, NULL}
45 };
46
47 static const struct enum_list enum_security[] = {
48         {SEC_AUTO, "AUTO"},
49         {SEC_USER, "USER"},
50         {SEC_DOMAIN, "DOMAIN"},
51         {SEC_ADS, "ADS"},
52         {-1, NULL}
53 };
54
55 static const struct enum_list enum_bool_auto[] = {
56         {false, "No"},
57         {false, "False"},
58         {false, "0"},
59         {true, "Yes"},
60         {true, "True"},
61         {true, "1"},
62         {Auto, "Auto"},
63         {-1, NULL}
64 };
65
66 static const struct enum_list enum_csc_policy[] = {
67         {CSC_POLICY_MANUAL, "manual"},
68         {CSC_POLICY_DOCUMENTS, "documents"},
69         {CSC_POLICY_PROGRAMS, "programs"},
70         {CSC_POLICY_DISABLE, "disable"},
71         {-1, NULL}
72 };
73
74 /* Server role options */
75 static const struct enum_list enum_server_role[] = {
76         {ROLE_AUTO, "auto"},
77         {ROLE_STANDALONE, "standalone server"},
78         {ROLE_STANDALONE, "standalone"},
79         {ROLE_DOMAIN_MEMBER, "member server"},
80         {ROLE_DOMAIN_MEMBER, "member"},
81         {ROLE_DOMAIN_PDC, "classic primary domain controller"},
82         {ROLE_DOMAIN_BDC, "classic backup domain controller"},
83         {ROLE_ACTIVE_DIRECTORY_DC, "active directory domain controller"},
84         {ROLE_ACTIVE_DIRECTORY_DC, "domain controller"},
85         {ROLE_ACTIVE_DIRECTORY_DC, "dc"},
86         {-1, NULL}
87 };
88
89 /* SMB signing types. */
90 static const struct enum_list enum_smb_signing_vals[] = {
91         {SMB_SIGNING_DEFAULT, "default"},
92         {SMB_SIGNING_OFF, "No"},
93         {SMB_SIGNING_OFF, "False"},
94         {SMB_SIGNING_OFF, "0"},
95         {SMB_SIGNING_OFF, "Off"},
96         {SMB_SIGNING_OFF, "disabled"},
97         {SMB_SIGNING_IF_REQUIRED, "if_required"},
98         {SMB_SIGNING_IF_REQUIRED, "Yes"},
99         {SMB_SIGNING_IF_REQUIRED, "True"},
100         {SMB_SIGNING_IF_REQUIRED, "1"},
101         {SMB_SIGNING_IF_REQUIRED, "On"},
102         {SMB_SIGNING_IF_REQUIRED, "enabled"},
103         {SMB_SIGNING_IF_REQUIRED, "auto"},
104         {SMB_SIGNING_REQUIRED, "required"},
105         {SMB_SIGNING_REQUIRED, "mandatory"},
106         {SMB_SIGNING_REQUIRED, "force"},
107         {SMB_SIGNING_REQUIRED, "forced"},
108         {SMB_SIGNING_REQUIRED, "enforced"},
109         {-1, NULL}
110 };
111
112 /* DNS update options. */
113 static const struct enum_list enum_dns_update_settings[] = {
114         {DNS_UPDATE_OFF, "disabled"},
115         {DNS_UPDATE_OFF, "No"},
116         {DNS_UPDATE_OFF, "False"},
117         {DNS_UPDATE_OFF, "0"},
118         {DNS_UPDATE_OFF, "Off"},
119         {DNS_UPDATE_ON, "nonsecure and secure"},
120         {DNS_UPDATE_ON, "nonsecure"},
121         {DNS_UPDATE_SIGNED, "secure only"},
122         {DNS_UPDATE_SIGNED, "secure"},
123         {DNS_UPDATE_SIGNED, "signed"},
124         {-1, NULL}
125 };
126
127 /*
128    Do you want session setups at user level security with a invalid
129    password to be rejected or allowed in as guest? WinNT rejects them
130    but it can be a pain as it means "net view" needs to use a password
131
132    You have 3 choices in the setting of map_to_guest:
133
134    "Never" means session setups with an invalid password
135    are rejected. This is the default.
136
137    "Bad User" means session setups with an invalid password
138    are rejected, unless the username does not exist, in which case it
139    is treated as a guest login
140
141    "Bad Password" means session setups with an invalid password
142    are treated as a guest login
143
144    Note that map_to_guest only has an effect in user or server
145    level security.
146 */
147
148 static const struct enum_list enum_map_to_guest[] = {
149         {NEVER_MAP_TO_GUEST, "Never"},
150         {MAP_TO_GUEST_ON_BAD_USER, "Bad User"},
151         {MAP_TO_GUEST_ON_BAD_PASSWORD, "Bad Password"},
152         {MAP_TO_GUEST_ON_BAD_UID, "Bad Uid"},
153         {-1, NULL}
154 };
155
156 /* Config backend options */
157
158 static const struct enum_list enum_config_backend[] = {
159         {CONFIG_BACKEND_FILE, "file"},
160         {CONFIG_BACKEND_REGISTRY, "registry"},
161         {-1, NULL}
162 };
163
164
165 /* ADS kerberos ticket verification options */
166
167 static const struct enum_list enum_kerberos_method[] = {
168         {KERBEROS_VERIFY_SECRETS, "default"},
169         {KERBEROS_VERIFY_SECRETS, "secrets only"},
170         {KERBEROS_VERIFY_SYSTEM_KEYTAB, "system keytab"},
171         {KERBEROS_VERIFY_DEDICATED_KEYTAB, "dedicated keytab"},
172         {KERBEROS_VERIFY_SECRETS_AND_KEYTAB, "secrets and keytab"},
173         {-1, NULL}
174 };
175
176 static const struct enum_list enum_printing[] = {
177         {PRINT_SYSV, "sysv"},
178         {PRINT_AIX, "aix"},
179         {PRINT_HPUX, "hpux"},
180         {PRINT_BSD, "bsd"},
181         {PRINT_QNX, "qnx"},
182         {PRINT_PLP, "plp"},
183         {PRINT_LPRNG, "lprng"},
184 #ifdef HAVE_CUPS
185         {PRINT_CUPS, "cups"},
186 #endif
187 #ifdef HAVE_IPRINT
188         {PRINT_IPRINT, "iprint"},
189 #endif
190         {PRINT_LPRNT, "nt"},
191         {PRINT_LPROS2, "os2"},
192 #if defined(DEVELOPER) || defined(ENABLE_SELFTEST)
193         {PRINT_TEST, "test"},
194         {PRINT_VLP, "vlp"},
195 #endif /* DEVELOPER */
196         {-1, NULL}
197 };
198
199 static const struct enum_list enum_ldap_sasl_wrapping[] = {
200         {0, "plain"},
201         {ADS_AUTH_SASL_SIGN, "sign"},
202         {ADS_AUTH_SASL_SEAL, "seal"},
203         {-1, NULL}
204 };
205
206 static const struct enum_list enum_ldap_ssl[] = {
207         {LDAP_SSL_OFF, "no"},
208         {LDAP_SSL_OFF, "off"},
209         {LDAP_SSL_START_TLS, "start tls"},
210         {LDAP_SSL_START_TLS, "start_tls"},
211         {-1, NULL}
212 };
213
214 /* LDAP Dereferencing Alias types */
215 #define SAMBA_LDAP_DEREF_NEVER          0
216 #define SAMBA_LDAP_DEREF_SEARCHING      1
217 #define SAMBA_LDAP_DEREF_FINDING        2
218 #define SAMBA_LDAP_DEREF_ALWAYS         3
219
220 static const struct enum_list enum_ldap_deref[] = {
221         {SAMBA_LDAP_DEREF_NEVER, "never"},
222         {SAMBA_LDAP_DEREF_SEARCHING, "searching"},
223         {SAMBA_LDAP_DEREF_FINDING, "finding"},
224         {SAMBA_LDAP_DEREF_ALWAYS, "always"},
225         {-1, "auto"}
226 };
227
228 static const struct enum_list enum_ldap_passwd_sync[] = {
229         {LDAP_PASSWD_SYNC_OFF, "no"},
230         {LDAP_PASSWD_SYNC_OFF, "off"},
231         {LDAP_PASSWD_SYNC_ON, "yes"},
232         {LDAP_PASSWD_SYNC_ON, "on"},
233         {LDAP_PASSWD_SYNC_ONLY, "only"},
234         {-1, NULL}
235 };
236
237 static const struct enum_list enum_map_readonly[] = {
238         {MAP_READONLY_NO, "no"},
239         {MAP_READONLY_NO, "false"},
240         {MAP_READONLY_NO, "0"},
241         {MAP_READONLY_YES, "yes"},
242         {MAP_READONLY_YES, "true"},
243         {MAP_READONLY_YES, "1"},
244         {MAP_READONLY_PERMISSIONS, "permissions"},
245         {MAP_READONLY_PERMISSIONS, "perms"},
246         {-1, NULL}
247 };
248
249 static const struct enum_list enum_case[] = {
250         {CASE_LOWER, "lower"},
251         {CASE_UPPER, "upper"},
252         {-1, NULL}
253 };
254
255
256 /* Note: We do not initialise the defaults union - it is not allowed in ANSI C
257  *
258  * The FLAG_HIDE is explicit. Parameters set this way do NOT appear in any edit
259  * screen in SWAT. This is used to exclude parameters as well as to squash all
260  * parameters that have been duplicated by pseudonyms.
261  *
262  * NOTE: To display a parameter in BASIC view set FLAG_BASIC
263  *       Any parameter that does NOT have FLAG_ADVANCED will not disply at all
264  *       Set FLAG_SHARE and FLAG_PRINT to specifically display parameters in
265  *        respective views.
266  *
267  * NOTE2: Handling of duplicated (synonym) parameters:
268  *      Only the first occurance of a parameter should be enabled by FLAG_BASIC
269  *      and/or FLAG_ADVANCED. All duplicates following the first mention should be
270  *      set to FLAG_HIDE. ie: Make you must place the parameter that has the preferred
271  *      name first, and all synonyms must follow it with the FLAG_HIDE attribute.
272  */
273
274 #define GLOBAL_VAR(name) offsetof(struct loadparm_global, name)
275 #define LOCAL_VAR(name) offsetof(struct loadparm_service, name)
276
277
278 static struct parm_struct parm_table[] = {
279         {N_("Base Options"), P_SEP, P_SEPARATOR},
280
281         {
282                 .label          = "dos charset",
283                 .type           = P_STRING,
284                 .p_class        = P_GLOBAL,
285                 .offset         = GLOBAL_VAR(dos_charset),
286                 .special        = handle_dos_charset,
287                 .enum_list      = NULL,
288                 .flags          = FLAG_ADVANCED
289         },
290         {
291                 .label          = "unix charset",
292                 .type           = P_STRING,
293                 .p_class        = P_GLOBAL,
294                 .offset         = GLOBAL_VAR(unix_charset),
295                 .special        = handle_charset,
296                 .enum_list      = NULL,
297                 .flags          = FLAG_ADVANCED
298         },
299         {
300                 .label          = "comment",
301                 .type           = P_STRING,
302                 .p_class        = P_LOCAL,
303                 .offset         = LOCAL_VAR(comment),
304                 .special        = NULL,
305                 .enum_list      = NULL,
306                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT
307         },
308         {
309                 .label          = "path",
310                 .type           = P_STRING,
311                 .p_class        = P_LOCAL,
312                 .offset         = LOCAL_VAR(szPath),
313                 .special        = NULL,
314                 .enum_list      = NULL,
315                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
316         },
317         {
318                 .label          = "directory",
319                 .type           = P_STRING,
320                 .p_class        = P_LOCAL,
321                 .offset         = LOCAL_VAR(szPath),
322                 .special        = NULL,
323                 .enum_list      = NULL,
324                 .flags          = FLAG_HIDE,
325         },
326         {
327                 .label          = "workgroup",
328                 .type           = P_USTRING,
329                 .p_class        = P_GLOBAL,
330                 .offset         = GLOBAL_VAR(szWorkgroup),
331                 .special        = NULL,
332                 .enum_list      = NULL,
333                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
334         },
335         {
336                 .label          = "realm",
337                 .type           = P_STRING,
338                 .p_class        = P_GLOBAL,
339                 .offset         = GLOBAL_VAR(szRealm),
340                 .special        = handle_realm,
341                 .enum_list      = NULL,
342                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
343         },
344         {
345                 .label          = "netbios name",
346                 .type           = P_USTRING,
347                 .p_class        = P_GLOBAL,
348                 .offset         = GLOBAL_VAR(szNetbiosName),
349                 .special        = NULL,
350                 .enum_list      = NULL,
351                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
352         },
353         {
354                 .label          = "netbios aliases",
355                 .type           = P_LIST,
356                 .p_class        = P_GLOBAL,
357                 .offset         = GLOBAL_VAR(szNetbiosAliases),
358                 .special        = handle_netbios_aliases,
359                 .enum_list      = NULL,
360                 .flags          = FLAG_ADVANCED,
361         },
362         {
363                 .label          = "netbios scope",
364                 .type           = P_USTRING,
365                 .p_class        = P_GLOBAL,
366                 .offset         = GLOBAL_VAR(szNetbiosScope),
367                 .special        = NULL,
368                 .enum_list      = NULL,
369                 .flags          = FLAG_ADVANCED,
370         },
371         {
372                 .label          = "server string",
373                 .type           = P_STRING,
374                 .p_class        = P_GLOBAL,
375                 .offset         = GLOBAL_VAR(szServerString),
376                 .special        = NULL,
377                 .enum_list      = NULL,
378                 .flags          = FLAG_BASIC | FLAG_ADVANCED,
379         },
380         {
381                 .label          = "interfaces",
382                 .type           = P_LIST,
383                 .p_class        = P_GLOBAL,
384                 .offset         = GLOBAL_VAR(szInterfaces),
385                 .special        = NULL,
386                 .enum_list      = NULL,
387                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
388         },
389         {
390                 .label          = "bind interfaces only",
391                 .type           = P_BOOL,
392                 .p_class        = P_GLOBAL,
393                 .offset         = GLOBAL_VAR(bBindInterfacesOnly),
394                 .special        = NULL,
395                 .enum_list      = NULL,
396                 .flags          = FLAG_ADVANCED | FLAG_WIZARD,
397         },
398         {
399                 .label          = "config backend",
400                 .type           = P_ENUM,
401                 .p_class        = P_GLOBAL,
402                 .offset         = GLOBAL_VAR(ConfigBackend),
403                 .special        = NULL,
404                 .enum_list      = enum_config_backend,
405                 .flags          = FLAG_HIDE|FLAG_ADVANCED|FLAG_META,
406         },
407         {
408                 .label          = "server role",
409                 .type           = P_ENUM,
410                 .p_class        = P_GLOBAL,
411                 .offset         = GLOBAL_VAR(server_role),
412                 .special        = NULL,
413                 .enum_list      = enum_server_role,
414                 .flags          = FLAG_BASIC | FLAG_ADVANCED,
415         },
416
417         {N_("Security Options"), P_SEP, P_SEPARATOR},
418
419         {
420                 .label          = "security",
421                 .type           = P_ENUM,
422                 .p_class        = P_GLOBAL,
423                 .offset         = GLOBAL_VAR(security),
424                 .special        = NULL,
425                 .enum_list      = enum_security,
426                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
427         },
428         {
429                 .label          = "auth methods",
430                 .type           = P_LIST,
431                 .p_class        = P_GLOBAL,
432                 .offset         = GLOBAL_VAR(AuthMethods),
433                 .special        = NULL,
434                 .enum_list      = NULL,
435                 .flags          = FLAG_ADVANCED,
436         },
437         {
438                 .label          = "encrypt passwords",
439                 .type           = P_BOOL,
440                 .p_class        = P_GLOBAL,
441                 .offset         = GLOBAL_VAR(bEncryptPasswords),
442                 .special        = NULL,
443                 .enum_list      = NULL,
444                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
445         },
446         {
447                 .label          = "client schannel",
448                 .type           = P_ENUM,
449                 .p_class        = P_GLOBAL,
450                 .offset         = GLOBAL_VAR(clientSchannel),
451                 .special        = NULL,
452                 .enum_list      = enum_bool_auto,
453                 .flags          = FLAG_BASIC | FLAG_ADVANCED,
454         },
455         {
456                 .label          = "server schannel",
457                 .type           = P_ENUM,
458                 .p_class        = P_GLOBAL,
459                 .offset         = GLOBAL_VAR(serverSchannel),
460                 .special        = NULL,
461                 .enum_list      = enum_bool_auto,
462                 .flags          = FLAG_BASIC | FLAG_ADVANCED,
463         },
464         {
465                 .label          = "allow trusted domains",
466                 .type           = P_BOOL,
467                 .p_class        = P_GLOBAL,
468                 .offset         = GLOBAL_VAR(bAllowTrustedDomains),
469                 .special        = NULL,
470                 .enum_list      = NULL,
471                 .flags          = FLAG_ADVANCED,
472         },
473         {
474                 .label          = "map to guest",
475                 .type           = P_ENUM,
476                 .p_class        = P_GLOBAL,
477                 .offset         = GLOBAL_VAR(map_to_guest),
478                 .special        = NULL,
479                 .enum_list      = enum_map_to_guest,
480                 .flags          = FLAG_ADVANCED,
481         },
482         {
483                 .label          = "null passwords",
484                 .type           = P_BOOL,
485                 .p_class        = P_GLOBAL,
486                 .offset         = GLOBAL_VAR(bNullPasswords),
487                 .special        = NULL,
488                 .enum_list      = NULL,
489                 .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
490         },
491         {
492                 .label          = "obey pam restrictions",
493                 .type           = P_BOOL,
494                 .p_class        = P_GLOBAL,
495                 .offset         = GLOBAL_VAR(bObeyPamRestrictions),
496                 .special        = NULL,
497                 .enum_list      = NULL,
498                 .flags          = FLAG_ADVANCED,
499         },
500         {
501                 .label          = "password server",
502                 .type           = P_STRING,
503                 .p_class        = P_GLOBAL,
504                 .offset         = GLOBAL_VAR(szPasswordServer),
505                 .special        = NULL,
506                 .enum_list      = NULL,
507                 .flags          = FLAG_ADVANCED | FLAG_WIZARD,
508         },
509         {
510                 .label          = "smb passwd file",
511                 .type           = P_STRING,
512                 .p_class        = P_GLOBAL,
513                 .offset         = GLOBAL_VAR(szSMBPasswdFile),
514                 .special        = NULL,
515                 .enum_list      = NULL,
516                 .flags          = FLAG_ADVANCED,
517         },
518         {
519                 .label          = "private dir",
520                 .type           = P_STRING,
521                 .p_class        = P_GLOBAL,
522                 .offset         = GLOBAL_VAR(szPrivateDir),
523                 .special        = NULL,
524                 .enum_list      = NULL,
525                 .flags          = FLAG_ADVANCED,
526         },
527         {
528                 .label          = "private directory",
529                 .type           = P_STRING,
530                 .p_class        = P_GLOBAL,
531                 .offset         = GLOBAL_VAR(szPrivateDir),
532                 .special        = NULL,
533                 .enum_list      = NULL,
534                 .flags          = FLAG_HIDE,
535         },
536         {
537                 .label          = "passdb backend",
538                 .type           = P_STRING,
539                 .p_class        = P_GLOBAL,
540                 .offset         = GLOBAL_VAR(passdb_backend),
541                 .special        = NULL,
542                 .enum_list      = NULL,
543                 .flags          = FLAG_ADVANCED | FLAG_WIZARD,
544         },
545         {
546                 .label          = "algorithmic rid base",
547                 .type           = P_INTEGER,
548                 .p_class        = P_GLOBAL,
549                 .offset         = GLOBAL_VAR(AlgorithmicRidBase),
550                 .special        = NULL,
551                 .enum_list      = NULL,
552                 .flags          = FLAG_ADVANCED,
553         },
554         {
555                 .label          = "root directory",
556                 .type           = P_STRING,
557                 .p_class        = P_GLOBAL,
558                 .offset         = GLOBAL_VAR(szRootdir),
559                 .special        = NULL,
560                 .enum_list      = NULL,
561                 .flags          = FLAG_ADVANCED,
562         },
563         {
564                 .label          = "root dir",
565                 .type           = P_STRING,
566                 .p_class        = P_GLOBAL,
567                 .offset         = GLOBAL_VAR(szRootdir),
568                 .special        = NULL,
569                 .enum_list      = NULL,
570                 .flags          = FLAG_HIDE,
571         },
572         {
573                 .label          = "root",
574                 .type           = P_STRING,
575                 .p_class        = P_GLOBAL,
576                 .offset         = GLOBAL_VAR(szRootdir),
577                 .special        = NULL,
578                 .enum_list      = NULL,
579                 .flags          = FLAG_HIDE,
580         },
581         {
582                 .label          = "guest account",
583                 .type           = P_STRING,
584                 .p_class        = P_GLOBAL,
585                 .offset         = GLOBAL_VAR(szGuestaccount),
586                 .special        = NULL,
587                 .enum_list      = NULL,
588                 .flags          = FLAG_BASIC | FLAG_ADVANCED,
589         },
590         {
591                 .label          = "enable privileges",
592                 .type           = P_BOOL,
593                 .p_class        = P_GLOBAL,
594                 .offset         = GLOBAL_VAR(bEnablePrivileges),
595                 .special        = NULL,
596                 .enum_list      = NULL,
597                 .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
598         },
599
600         {
601                 .label          = "pam password change",
602                 .type           = P_BOOL,
603                 .p_class        = P_GLOBAL,
604                 .offset         = GLOBAL_VAR(bPamPasswordChange),
605                 .special        = NULL,
606                 .enum_list      = NULL,
607                 .flags          = FLAG_ADVANCED,
608         },
609         {
610                 .label          = "passwd program",
611                 .type           = P_STRING,
612                 .p_class        = P_GLOBAL,
613                 .offset         = GLOBAL_VAR(szPasswdProgram),
614                 .special        = NULL,
615                 .enum_list      = NULL,
616                 .flags          = FLAG_ADVANCED,
617         },
618         {
619                 .label          = "passwd chat",
620                 .type           = P_STRING,
621                 .p_class        = P_GLOBAL,
622                 .offset         = GLOBAL_VAR(szPasswdChat),
623                 .special        = NULL,
624                 .enum_list      = NULL,
625                 .flags          = FLAG_ADVANCED,
626         },
627         {
628                 .label          = "passwd chat debug",
629                 .type           = P_BOOL,
630                 .p_class        = P_GLOBAL,
631                 .offset         = GLOBAL_VAR(bPasswdChatDebug),
632                 .special        = NULL,
633                 .enum_list      = NULL,
634                 .flags          = FLAG_ADVANCED,
635         },
636         {
637                 .label          = "passwd chat timeout",
638                 .type           = P_INTEGER,
639                 .p_class        = P_GLOBAL,
640                 .offset         = GLOBAL_VAR(iPasswdChatTimeout),
641                 .special        = NULL,
642                 .enum_list      = NULL,
643                 .flags          = FLAG_ADVANCED,
644         },
645         {
646                 .label          = "check password script",
647                 .type           = P_STRING,
648                 .p_class        = P_GLOBAL,
649                 .offset         = GLOBAL_VAR(szCheckPasswordScript),
650                 .special        = NULL,
651                 .enum_list      = NULL,
652                 .flags          = FLAG_ADVANCED,
653         },
654         {
655                 .label          = "username map",
656                 .type           = P_STRING,
657                 .p_class        = P_GLOBAL,
658                 .offset         = GLOBAL_VAR(szUsernameMap),
659                 .special        = NULL,
660                 .enum_list      = NULL,
661                 .flags          = FLAG_ADVANCED,
662         },
663         {
664                 .label          = "password level",
665                 .type           = P_INTEGER,
666                 .p_class        = P_GLOBAL,
667                 .offset         = GLOBAL_VAR(pwordlevel),
668                 .special        = NULL,
669                 .enum_list      = NULL,
670                 .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
671         },
672         {
673                 .label          = "username level",
674                 .type           = P_INTEGER,
675                 .p_class        = P_GLOBAL,
676                 .offset         = GLOBAL_VAR(unamelevel),
677                 .special        = NULL,
678                 .enum_list      = NULL,
679                 .flags          = FLAG_ADVANCED,
680         },
681         {
682                 .label          = "unix password sync",
683                 .type           = P_BOOL,
684                 .p_class        = P_GLOBAL,
685                 .offset         = GLOBAL_VAR(bUnixPasswdSync),
686                 .special        = NULL,
687                 .enum_list      = NULL,
688                 .flags          = FLAG_ADVANCED,
689         },
690         {
691                 .label          = "restrict anonymous",
692                 .type           = P_INTEGER,
693                 .p_class        = P_GLOBAL,
694                 .offset         = GLOBAL_VAR(restrict_anonymous),
695                 .special        = NULL,
696                 .enum_list      = NULL,
697                 .flags          = FLAG_ADVANCED,
698         },
699         {
700                 .label          = "lanman auth",
701                 .type           = P_BOOL,
702                 .p_class        = P_GLOBAL,
703                 .offset         = GLOBAL_VAR(bLanmanAuth),
704                 .special        = NULL,
705                 .enum_list      = NULL,
706                 .flags          = FLAG_ADVANCED,
707         },
708         {
709                 .label          = "ntlm auth",
710                 .type           = P_BOOL,
711                 .p_class        = P_GLOBAL,
712                 .offset         = GLOBAL_VAR(bNTLMAuth),
713                 .special        = NULL,
714                 .enum_list      = NULL,
715                 .flags          = FLAG_ADVANCED,
716         },
717         {
718                 .label          = "client NTLMv2 auth",
719                 .type           = P_BOOL,
720                 .p_class        = P_GLOBAL,
721                 .offset         = GLOBAL_VAR(bClientNTLMv2Auth),
722                 .special        = NULL,
723                 .enum_list      = NULL,
724                 .flags          = FLAG_ADVANCED,
725         },
726         {
727                 .label          = "client lanman auth",
728                 .type           = P_BOOL,
729                 .p_class        = P_GLOBAL,
730                 .offset         = GLOBAL_VAR(bClientLanManAuth),
731                 .special        = NULL,
732                 .enum_list      = NULL,
733                 .flags          = FLAG_ADVANCED,
734         },
735         {
736                 .label          = "client plaintext auth",
737                 .type           = P_BOOL,
738                 .p_class        = P_GLOBAL,
739                 .offset         = GLOBAL_VAR(bClientPlaintextAuth),
740                 .special        = NULL,
741                 .enum_list      = NULL,
742                 .flags          = FLAG_ADVANCED,
743         },
744         {
745                 .label          = "client use spnego principal",
746                 .type           = P_BOOL,
747                 .p_class        = P_GLOBAL,
748                 .offset         = GLOBAL_VAR(client_use_spnego_principal),
749                 .special        = NULL,
750                 .enum_list      = NULL,
751                 .flags          = FLAG_ADVANCED,
752         },
753         {
754                 .label          = "username",
755                 .type           = P_STRING,
756                 .p_class        = P_LOCAL,
757                 .offset         = LOCAL_VAR(szUsername),
758                 .special        = NULL,
759                 .enum_list      = NULL,
760                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE | FLAG_DEPRECATED,
761         },
762         {
763                 .label          = "user",
764                 .type           = P_STRING,
765                 .p_class        = P_LOCAL,
766                 .offset         = LOCAL_VAR(szUsername),
767                 .special        = NULL,
768                 .enum_list      = NULL,
769                 .flags          = FLAG_HIDE,
770         },
771         {
772                 .label          = "users",
773                 .type           = P_STRING,
774                 .p_class        = P_LOCAL,
775                 .offset         = LOCAL_VAR(szUsername),
776                 .special        = NULL,
777                 .enum_list      = NULL,
778                 .flags          = FLAG_HIDE,
779         },
780         {
781                 .label          = "invalid users",
782                 .type           = P_LIST,
783                 .p_class        = P_LOCAL,
784                 .offset         = LOCAL_VAR(szInvalidUsers),
785                 .special        = NULL,
786                 .enum_list      = NULL,
787                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
788         },
789         {
790                 .label          = "valid users",
791                 .type           = P_LIST,
792                 .p_class        = P_LOCAL,
793                 .offset         = LOCAL_VAR(szValidUsers),
794                 .special        = NULL,
795                 .enum_list      = NULL,
796                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
797         },
798         {
799                 .label          = "admin users",
800                 .type           = P_LIST,
801                 .p_class        = P_LOCAL,
802                 .offset         = LOCAL_VAR(szAdminUsers),
803                 .special        = NULL,
804                 .enum_list      = NULL,
805                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
806         },
807         {
808                 .label          = "read list",
809                 .type           = P_LIST,
810                 .p_class        = P_LOCAL,
811                 .offset         = LOCAL_VAR(readlist),
812                 .special        = NULL,
813                 .enum_list      = NULL,
814                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
815         },
816         {
817                 .label          = "write list",
818                 .type           = P_LIST,
819                 .p_class        = P_LOCAL,
820                 .offset         = LOCAL_VAR(writelist),
821                 .special        = NULL,
822                 .enum_list      = NULL,
823                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
824         },
825         {
826                 .label          = "force user",
827                 .type           = P_STRING,
828                 .p_class        = P_LOCAL,
829                 .offset         = LOCAL_VAR(force_user),
830                 .special        = NULL,
831                 .enum_list      = NULL,
832                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
833         },
834         {
835                 .label          = "force group",
836                 .type           = P_STRING,
837                 .p_class        = P_LOCAL,
838                 .offset         = LOCAL_VAR(force_group),
839                 .special        = NULL,
840                 .enum_list      = NULL,
841                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
842         },
843         {
844                 .label          = "group",
845                 .type           = P_STRING,
846                 .p_class        = P_LOCAL,
847                 .offset         = LOCAL_VAR(force_group),
848                 .special        = NULL,
849                 .enum_list      = NULL,
850                 .flags          = FLAG_ADVANCED,
851         },
852         {
853                 .label          = "read only",
854                 .type           = P_BOOL,
855                 .p_class        = P_LOCAL,
856                 .offset         = LOCAL_VAR(bRead_only),
857                 .special        = NULL,
858                 .enum_list      = NULL,
859                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE,
860         },
861         {
862                 .label          = "write ok",
863                 .type           = P_BOOLREV,
864                 .p_class        = P_LOCAL,
865                 .offset         = LOCAL_VAR(bRead_only),
866                 .special        = NULL,
867                 .enum_list      = NULL,
868                 .flags          = FLAG_HIDE,
869         },
870         {
871                 .label          = "writeable",
872                 .type           = P_BOOLREV,
873                 .p_class        = P_LOCAL,
874                 .offset         = LOCAL_VAR(bRead_only),
875                 .special        = NULL,
876                 .enum_list      = NULL,
877                 .flags          = FLAG_HIDE,
878         },
879         {
880                 .label          = "writable",
881                 .type           = P_BOOLREV,
882                 .p_class        = P_LOCAL,
883                 .offset         = LOCAL_VAR(bRead_only),
884                 .special        = NULL,
885                 .enum_list      = NULL,
886                 .flags          = FLAG_HIDE,
887         },
888         {
889                 .label          = "acl check permissions",
890                 .type           = P_BOOL,
891                 .p_class        = P_LOCAL,
892                 .offset         = LOCAL_VAR(bAclCheckPermissions),
893                 .special        = NULL,
894                 .enum_list      = NULL,
895                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE | FLAG_DEPRECATED,
896         },
897         {
898                 .label          = "acl group control",
899                 .type           = P_BOOL,
900                 .p_class        = P_LOCAL,
901                 .offset         = LOCAL_VAR(bAclGroupControl),
902                 .special        = NULL,
903                 .enum_list      = NULL,
904                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
905         },
906         {
907                 .label          = "acl map full control",
908                 .type           = P_BOOL,
909                 .p_class        = P_LOCAL,
910                 .offset         = LOCAL_VAR(bAclMapFullControl),
911                 .special        = NULL,
912                 .enum_list      = NULL,
913                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
914         },
915         {
916                 .label          = "create mask",
917                 .type           = P_OCTAL,
918                 .p_class        = P_LOCAL,
919                 .offset         = LOCAL_VAR(iCreate_mask),
920                 .special        = NULL,
921                 .enum_list      = NULL,
922                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
923         },
924         {
925                 .label          = "create mode",
926                 .type           = P_OCTAL,
927                 .p_class        = P_LOCAL,
928                 .offset         = LOCAL_VAR(iCreate_mask),
929                 .special        = NULL,
930                 .enum_list      = NULL,
931                 .flags          = FLAG_HIDE,
932         },
933         {
934                 .label          = "force create mode",
935                 .type           = P_OCTAL,
936                 .p_class        = P_LOCAL,
937                 .offset         = LOCAL_VAR(iCreate_force_mode),
938                 .special        = NULL,
939                 .enum_list      = NULL,
940                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
941         },
942         {
943                 .label          = "directory mask",
944                 .type           = P_OCTAL,
945                 .p_class        = P_LOCAL,
946                 .offset         = LOCAL_VAR(iDir_mask),
947                 .special        = NULL,
948                 .enum_list      = NULL,
949                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
950         },
951         {
952                 .label          = "directory mode",
953                 .type           = P_OCTAL,
954                 .p_class        = P_LOCAL,
955                 .offset         = LOCAL_VAR(iDir_mask),
956                 .special        = NULL,
957                 .enum_list      = NULL,
958                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
959         },
960         {
961                 .label          = "force directory mode",
962                 .type           = P_OCTAL,
963                 .p_class        = P_LOCAL,
964                 .offset         = LOCAL_VAR(iDir_force_mode),
965                 .special        = NULL,
966                 .enum_list      = NULL,
967                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
968         },
969         {
970                 .label          = "force unknown acl user",
971                 .type           = P_BOOL,
972                 .p_class        = P_LOCAL,
973                 .offset         = LOCAL_VAR(bForceUnknownAclUser),
974                 .special        = NULL,
975                 .enum_list      = NULL,
976                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
977         },
978         {
979                 .label          = "inherit permissions",
980                 .type           = P_BOOL,
981                 .p_class        = P_LOCAL,
982                 .offset         = LOCAL_VAR(bInheritPerms),
983                 .special        = NULL,
984                 .enum_list      = NULL,
985                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
986         },
987         {
988                 .label          = "inherit acls",
989                 .type           = P_BOOL,
990                 .p_class        = P_LOCAL,
991                 .offset         = LOCAL_VAR(bInheritACLS),
992                 .special        = NULL,
993                 .enum_list      = NULL,
994                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
995         },
996         {
997                 .label          = "inherit owner",
998                 .type           = P_BOOL,
999                 .p_class        = P_LOCAL,
1000                 .offset         = LOCAL_VAR(bInheritOwner),
1001                 .special        = NULL,
1002                 .enum_list      = NULL,
1003                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1004         },
1005         {
1006                 .label          = "guest only",
1007                 .type           = P_BOOL,
1008                 .p_class        = P_LOCAL,
1009                 .offset         = LOCAL_VAR(bGuest_only),
1010                 .special        = NULL,
1011                 .enum_list      = NULL,
1012                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1013         },
1014         {
1015                 .label          = "only guest",
1016                 .type           = P_BOOL,
1017                 .p_class        = P_LOCAL,
1018                 .offset         = LOCAL_VAR(bGuest_only),
1019                 .special        = NULL,
1020                 .enum_list      = NULL,
1021                 .flags          = FLAG_HIDE,
1022         },
1023         {
1024                 .label          = "administrative share",
1025                 .type           = P_BOOL,
1026                 .p_class        = P_LOCAL,
1027                 .offset         = LOCAL_VAR(bAdministrative_share),
1028                 .special        = NULL,
1029                 .enum_list      = NULL,
1030                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
1031         },
1032
1033         {
1034                 .label          = "guest ok",
1035                 .type           = P_BOOL,
1036                 .p_class        = P_LOCAL,
1037                 .offset         = LOCAL_VAR(bGuest_ok),
1038                 .special        = NULL,
1039                 .enum_list      = NULL,
1040                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
1041         },
1042         {
1043                 .label          = "public",
1044                 .type           = P_BOOL,
1045                 .p_class        = P_LOCAL,
1046                 .offset         = LOCAL_VAR(bGuest_ok),
1047                 .special        = NULL,
1048                 .enum_list      = NULL,
1049                 .flags          = FLAG_HIDE,
1050         },
1051         {
1052                 .label          = "only user",
1053                 .type           = P_BOOL,
1054                 .p_class        = P_LOCAL,
1055                 .offset         = LOCAL_VAR(bOnlyUser),
1056                 .special        = NULL,
1057                 .enum_list      = NULL,
1058                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_DEPRECATED,
1059         },
1060         {
1061                 .label          = "hosts allow",
1062                 .type           = P_LIST,
1063                 .p_class        = P_LOCAL,
1064                 .offset         = LOCAL_VAR(szHostsallow),
1065                 .special        = NULL,
1066                 .enum_list      = NULL,
1067                 .flags          = FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
1068         },
1069         {
1070                 .label          = "allow hosts",
1071                 .type           = P_LIST,
1072                 .p_class        = P_LOCAL,
1073                 .offset         = LOCAL_VAR(szHostsallow),
1074                 .special        = NULL,
1075                 .enum_list      = NULL,
1076                 .flags          = FLAG_HIDE,
1077         },
1078         {
1079                 .label          = "hosts deny",
1080                 .type           = P_LIST,
1081                 .p_class        = P_LOCAL,
1082                 .offset         = LOCAL_VAR(szHostsdeny),
1083                 .special        = NULL,
1084                 .enum_list      = NULL,
1085                 .flags          = FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
1086         },
1087         {
1088                 .label          = "deny hosts",
1089                 .type           = P_LIST,
1090                 .p_class        = P_LOCAL,
1091                 .offset         = LOCAL_VAR(szHostsdeny),
1092                 .special        = NULL,
1093                 .enum_list      = NULL,
1094                 .flags          = FLAG_HIDE,
1095         },
1096         {
1097                 .label          = "preload modules",
1098                 .type           = P_LIST,
1099                 .p_class        = P_GLOBAL,
1100                 .offset         = GLOBAL_VAR(szPreloadModules),
1101                 .special        = NULL,
1102                 .enum_list      = NULL,
1103                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
1104         },
1105         {
1106                 .label          = "dedicated keytab file",
1107                 .type           = P_STRING,
1108                 .p_class        = P_GLOBAL,
1109                 .offset         = GLOBAL_VAR(szDedicatedKeytabFile),
1110                 .special        = NULL,
1111                 .enum_list      = NULL,
1112                 .flags          = FLAG_ADVANCED,
1113         },
1114         {
1115                 .label          = "kerberos method",
1116                 .type           = P_ENUM,
1117                 .p_class        = P_GLOBAL,
1118                 .offset         = GLOBAL_VAR(iKerberosMethod),
1119                 .special        = NULL,
1120                 .enum_list      = enum_kerberos_method,
1121                 .flags          = FLAG_ADVANCED,
1122         },
1123         {
1124                 .label          = "map untrusted to domain",
1125                 .type           = P_BOOL,
1126                 .p_class        = P_GLOBAL,
1127                 .offset         = GLOBAL_VAR(bMapUntrustedToDomain),
1128                 .special        = NULL,
1129                 .enum_list      = NULL,
1130                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
1131         },
1132
1133
1134         {N_("Logging Options"), P_SEP, P_SEPARATOR},
1135
1136         {
1137                 .label          = "log level",
1138                 .type           = P_STRING,
1139                 .p_class        = P_GLOBAL,
1140                 .offset         = GLOBAL_VAR(loglevel),
1141                 .special        = handle_debug_list,
1142                 .enum_list      = NULL,
1143                 .flags          = FLAG_ADVANCED,
1144         },
1145         {
1146                 .label          = "debuglevel",
1147                 .type           = P_STRING,
1148                 .p_class        = P_GLOBAL,
1149                 .offset         = GLOBAL_VAR(loglevel),
1150                 .special        = handle_debug_list,
1151                 .enum_list      = NULL,
1152                 .flags          = FLAG_HIDE,
1153         },
1154         {
1155                 .label          = "syslog",
1156                 .type           = P_INTEGER,
1157                 .p_class        = P_GLOBAL,
1158                 .offset         = GLOBAL_VAR(syslog),
1159                 .special        = NULL,
1160                 .enum_list      = NULL,
1161                 .flags          = FLAG_ADVANCED,
1162         },
1163         {
1164                 .label          = "syslog only",
1165                 .type           = P_BOOL,
1166                 .p_class        = P_GLOBAL,
1167                 .offset         = GLOBAL_VAR(bSyslogOnly),
1168                 .special        = NULL,
1169                 .enum_list      = NULL,
1170                 .flags          = FLAG_ADVANCED,
1171         },
1172         {
1173                 .label          = "log file",
1174                 .type           = P_STRING,
1175                 .p_class        = P_GLOBAL,
1176                 .offset         = GLOBAL_VAR(logfile),
1177                 .special        = handle_logfile,
1178                 .enum_list      = NULL,
1179                 .flags          = FLAG_ADVANCED,
1180         },
1181         {
1182                 .label          = "max log size",
1183                 .type           = P_BYTES,
1184                 .p_class        = P_GLOBAL,
1185                 .offset         = GLOBAL_VAR(max_log_size),
1186                 .special        = NULL,
1187                 .enum_list      = NULL,
1188                 .flags          = FLAG_ADVANCED,
1189         },
1190         {
1191                 .label          = "debug timestamp",
1192                 .type           = P_BOOL,
1193                 .p_class        = P_GLOBAL,
1194                 .offset         = GLOBAL_VAR(bTimestampLogs),
1195                 .special        = NULL,
1196                 .enum_list      = NULL,
1197                 .flags          = FLAG_ADVANCED,
1198         },
1199         {
1200                 .label          = "timestamp logs",
1201                 .type           = P_BOOL,
1202                 .p_class        = P_GLOBAL,
1203                 .offset         = GLOBAL_VAR(bTimestampLogs),
1204                 .special        = NULL,
1205                 .enum_list      = NULL,
1206                 .flags          = FLAG_ADVANCED,
1207         },
1208         {
1209                 .label          = "debug prefix timestamp",
1210                 .type           = P_BOOL,
1211                 .p_class        = P_GLOBAL,
1212                 .offset         = GLOBAL_VAR(bDebugPrefixTimestamp),
1213                 .special        = NULL,
1214                 .enum_list      = NULL,
1215                 .flags          = FLAG_ADVANCED,
1216         },
1217         {
1218                 .label          = "debug hires timestamp",
1219                 .type           = P_BOOL,
1220                 .p_class        = P_GLOBAL,
1221                 .offset         = GLOBAL_VAR(bDebugHiresTimestamp),
1222                 .special        = NULL,
1223                 .enum_list      = NULL,
1224                 .flags          = FLAG_ADVANCED,
1225         },
1226         {
1227                 .label          = "debug pid",
1228                 .type           = P_BOOL,
1229                 .p_class        = P_GLOBAL,
1230                 .offset         = GLOBAL_VAR(bDebugPid),
1231                 .special        = NULL,
1232                 .enum_list      = NULL,
1233                 .flags          = FLAG_ADVANCED,
1234         },
1235         {
1236                 .label          = "debug uid",
1237                 .type           = P_BOOL,
1238                 .p_class        = P_GLOBAL,
1239                 .offset         = GLOBAL_VAR(bDebugUid),
1240                 .special        = NULL,
1241                 .enum_list      = NULL,
1242                 .flags          = FLAG_ADVANCED,
1243         },
1244         {
1245                 .label          = "debug class",
1246                 .type           = P_BOOL,
1247                 .p_class        = P_GLOBAL,
1248                 .offset         = GLOBAL_VAR(bDebugClass),
1249                 .special        = NULL,
1250                 .enum_list      = NULL,
1251                 .flags          = FLAG_ADVANCED,
1252         },
1253         {
1254                 .label          = "enable core files",
1255                 .type           = P_BOOL,
1256                 .p_class        = P_GLOBAL,
1257                 .offset         = GLOBAL_VAR(bEnableCoreFiles),
1258                 .special        = NULL,
1259                 .enum_list      = NULL,
1260                 .flags          = FLAG_ADVANCED,
1261         },
1262
1263         {N_("Protocol Options"), P_SEP, P_SEPARATOR},
1264
1265         {
1266                 .label          = "allocation roundup size",
1267                 .type           = P_BYTES,
1268                 .p_class        = P_LOCAL,
1269                 .offset         = LOCAL_VAR(iallocation_roundup_size),
1270                 .special        = NULL,
1271                 .enum_list      = NULL,
1272                 .flags          = FLAG_ADVANCED,
1273         },
1274         {
1275                 .label          = "aio read size",
1276                 .type           = P_BYTES,
1277                 .p_class        = P_LOCAL,
1278                 .offset         = LOCAL_VAR(iAioReadSize),
1279                 .special        = NULL,
1280                 .enum_list      = NULL,
1281                 .flags          = FLAG_ADVANCED,
1282         },
1283         {
1284                 .label          = "aio write size",
1285                 .type           = P_BYTES,
1286                 .p_class        = P_LOCAL,
1287                 .offset         = LOCAL_VAR(iAioWriteSize),
1288                 .special        = NULL,
1289                 .enum_list      = NULL,
1290                 .flags          = FLAG_ADVANCED,
1291         },
1292         {
1293                 .label          = "aio write behind",
1294                 .type           = P_STRING,
1295                 .p_class        = P_LOCAL,
1296                 .offset         = LOCAL_VAR(szAioWriteBehind),
1297                 .special        = NULL,
1298                 .enum_list      = NULL,
1299                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
1300         },
1301         {
1302                 .label          = "smb ports",
1303                 .type           = P_LIST,
1304                 .p_class        = P_GLOBAL,
1305                 .offset         = GLOBAL_VAR(smb_ports),
1306                 .special        = NULL,
1307                 .enum_list      = NULL,
1308                 .flags          = FLAG_ADVANCED,
1309         },
1310         {
1311                 .label          = "large readwrite",
1312                 .type           = P_BOOL,
1313                 .p_class        = P_GLOBAL,
1314                 .offset         = GLOBAL_VAR(bLargeReadwrite),
1315                 .special        = NULL,
1316                 .enum_list      = NULL,
1317                 .flags          = FLAG_ADVANCED,
1318         },
1319         {
1320                 .label          = "server max protocol",
1321                 .type           = P_ENUM,
1322                 .p_class        = P_GLOBAL,
1323                 .offset         = GLOBAL_VAR(srv_maxprotocol),
1324                 .special        = NULL,
1325                 .enum_list      = enum_protocol,
1326                 .flags          = FLAG_ADVANCED,
1327         },
1328         {
1329                 .label          = "max protocol",
1330                 .type           = P_ENUM,
1331                 .p_class        = P_GLOBAL,
1332                 .offset         = GLOBAL_VAR(srv_maxprotocol),
1333                 .special        = NULL,
1334                 .enum_list      = enum_protocol,
1335                 .flags          = FLAG_ADVANCED,
1336         },
1337         {
1338                 .label          = "protocol",
1339                 .type           = P_ENUM,
1340                 .p_class        = P_GLOBAL,
1341                 .offset         = GLOBAL_VAR(srv_maxprotocol),
1342                 .special        = NULL,
1343                 .enum_list      = enum_protocol,
1344                 .flags          = FLAG_ADVANCED,
1345         },
1346         {
1347                 .label          = "server min protocol",
1348                 .type           = P_ENUM,
1349                 .p_class        = P_GLOBAL,
1350                 .offset         = GLOBAL_VAR(srv_minprotocol),
1351                 .special        = NULL,
1352                 .enum_list      = enum_protocol,
1353                 .flags          = FLAG_ADVANCED,
1354         },
1355         {
1356                 .label          = "min protocol",
1357                 .type           = P_ENUM,
1358                 .p_class        = P_GLOBAL,
1359                 .offset         = GLOBAL_VAR(srv_minprotocol),
1360                 .special        = NULL,
1361                 .enum_list      = enum_protocol,
1362                 .flags          = FLAG_ADVANCED,
1363         },
1364         {
1365                 .label          = "client max protocol",
1366                 .type           = P_ENUM,
1367                 .p_class        = P_GLOBAL,
1368                 .offset         = GLOBAL_VAR(cli_maxprotocol),
1369                 .special        = NULL,
1370                 .enum_list      = enum_protocol,
1371                 .flags          = FLAG_ADVANCED,
1372         },
1373         {
1374                 .label          = "client min protocol",
1375                 .type           = P_ENUM,
1376                 .p_class        = P_GLOBAL,
1377                 .offset         = GLOBAL_VAR(cli_minprotocol),
1378                 .special        = NULL,
1379                 .enum_list      = enum_protocol,
1380                 .flags          = FLAG_ADVANCED,
1381         },
1382         {
1383                 .label          = "unicode",
1384                 .type           = P_BOOL,
1385                 .p_class        = P_GLOBAL,
1386                 .offset         = GLOBAL_VAR(bUnicode),
1387                 .special        = NULL,
1388                 .enum_list      = NULL
1389         },
1390         {
1391                 .label          = "min receivefile size",
1392                 .type           = P_BYTES,
1393                 .p_class        = P_GLOBAL,
1394                 .offset         = GLOBAL_VAR(iminreceivefile),
1395                 .special        = NULL,
1396                 .enum_list      = NULL,
1397                 .flags          = FLAG_ADVANCED,
1398         },
1399         {
1400                 .label          = "read raw",
1401                 .type           = P_BOOL,
1402                 .p_class        = P_GLOBAL,
1403                 .offset         = GLOBAL_VAR(bReadRaw),
1404                 .special        = NULL,
1405                 .enum_list      = NULL,
1406                 .flags          = FLAG_ADVANCED,
1407         },
1408         {
1409                 .label          = "write raw",
1410                 .type           = P_BOOL,
1411                 .p_class        = P_GLOBAL,
1412                 .offset         = GLOBAL_VAR(bWriteRaw),
1413                 .special        = NULL,
1414                 .enum_list      = NULL,
1415                 .flags          = FLAG_ADVANCED,
1416         },
1417         {
1418                 .label          = "disable netbios",
1419                 .type           = P_BOOL,
1420                 .p_class        = P_GLOBAL,
1421                 .offset         = GLOBAL_VAR(bDisableNetbios),
1422                 .special        = NULL,
1423                 .enum_list      = NULL,
1424                 .flags          = FLAG_ADVANCED,
1425         },
1426         {
1427                 .label          = "reset on zero vc",
1428                 .type           = P_BOOL,
1429                 .p_class        = P_GLOBAL,
1430                 .offset         = GLOBAL_VAR(bResetOnZeroVC),
1431                 .special        = NULL,
1432                 .enum_list      = NULL,
1433                 .flags          = FLAG_ADVANCED,
1434         },
1435         {
1436                 .label          = "log writeable files on exit",
1437                 .type           = P_BOOL,
1438                 .p_class        = P_GLOBAL,
1439                 .offset         = GLOBAL_VAR(bLogWriteableFilesOnExit),
1440                 .special        = NULL,
1441                 .enum_list      = NULL,
1442                 .flags          = FLAG_ADVANCED,
1443         },
1444         {
1445                 .label          = "defer sharing violations",
1446                 .type           = P_BOOL,
1447                 .p_class        = P_GLOBAL,
1448                 .offset         = GLOBAL_VAR(bDeferSharingViolations),
1449                 .special        = NULL,
1450                 .enum_list      = NULL,
1451                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
1452         },
1453         {
1454                 .label          = "ea support",
1455                 .type           = P_BOOL,
1456                 .p_class        = P_LOCAL,
1457                 .offset         = LOCAL_VAR(bEASupport),
1458                 .special        = NULL,
1459                 .enum_list      = NULL,
1460                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
1461         },
1462         {
1463                 .label          = "nt acl support",
1464                 .type           = P_BOOL,
1465                 .p_class        = P_LOCAL,
1466                 .offset         = LOCAL_VAR(bNTAclSupport),
1467                 .special        = NULL,
1468                 .enum_list      = NULL,
1469                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
1470         },
1471         {
1472                 .label          = "nt pipe support",
1473                 .type           = P_BOOL,
1474                 .p_class        = P_GLOBAL,
1475                 .offset         = GLOBAL_VAR(bNTPipeSupport),
1476                 .special        = NULL,
1477                 .enum_list      = NULL,
1478                 .flags          = FLAG_ADVANCED,
1479         },
1480         {
1481                 .label          = "nt status support",
1482                 .type           = P_BOOL,
1483                 .p_class        = P_GLOBAL,
1484                 .offset         = GLOBAL_VAR(bNTStatusSupport),
1485                 .special        = NULL,
1486                 .enum_list      = NULL,
1487                 .flags          = FLAG_ADVANCED,
1488         },
1489         {
1490                 .label          = "profile acls",
1491                 .type           = P_BOOL,
1492                 .p_class        = P_LOCAL,
1493                 .offset         = LOCAL_VAR(bProfileAcls),
1494                 .special        = NULL,
1495                 .enum_list      = NULL,
1496                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
1497         },
1498         {
1499                 .label          = "map acl inherit",
1500                 .type           = P_BOOL,
1501                 .p_class        = P_LOCAL,
1502                 .offset         = LOCAL_VAR(bMap_acl_inherit),
1503                 .special        = NULL,
1504                 .enum_list      = NULL,
1505                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
1506         },
1507         {
1508                 .label          = "afs share",
1509                 .type           = P_BOOL,
1510                 .p_class        = P_LOCAL,
1511                 .offset         = LOCAL_VAR(bAfs_Share),
1512                 .special        = NULL,
1513                 .enum_list      = NULL,
1514                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
1515         },
1516         {
1517                 .label          = "max mux",
1518                 .type           = P_INTEGER,
1519                 .p_class        = P_GLOBAL,
1520                 .offset         = GLOBAL_VAR(max_mux),
1521                 .special        = NULL,
1522                 .enum_list      = NULL,
1523                 .flags          = FLAG_ADVANCED,
1524         },
1525         {
1526                 .label          = "max xmit",
1527                 .type           = P_BYTES,
1528                 .p_class        = P_GLOBAL,
1529                 .offset         = GLOBAL_VAR(max_xmit),
1530                 .special        = NULL,
1531                 .enum_list      = NULL,
1532                 .flags          = FLAG_ADVANCED,
1533         },
1534         {
1535                 .label          = "name resolve order",
1536                 .type           = P_LIST,
1537                 .p_class        = P_GLOBAL,
1538                 .offset         = GLOBAL_VAR(szNameResolveOrder),
1539                 .special        = NULL,
1540                 .enum_list      = NULL,
1541                 .flags          = FLAG_ADVANCED | FLAG_WIZARD,
1542         },
1543         {
1544                 .label          = "max ttl",
1545                 .type           = P_INTEGER,
1546                 .p_class        = P_GLOBAL,
1547                 .offset         = GLOBAL_VAR(max_ttl),
1548                 .special        = NULL,
1549                 .enum_list      = NULL,
1550                 .flags          = FLAG_ADVANCED,
1551         },
1552         {
1553                 .label          = "max wins ttl",
1554                 .type           = P_INTEGER,
1555                 .p_class        = P_GLOBAL,
1556                 .offset         = GLOBAL_VAR(max_wins_ttl),
1557                 .special        = NULL,
1558                 .enum_list      = NULL,
1559                 .flags          = FLAG_ADVANCED,
1560         },
1561         {
1562                 .label          = "min wins ttl",
1563                 .type           = P_INTEGER,
1564                 .p_class        = P_GLOBAL,
1565                 .offset         = GLOBAL_VAR(min_wins_ttl),
1566                 .special        = NULL,
1567                 .enum_list      = NULL,
1568                 .flags          = FLAG_ADVANCED,
1569         },
1570         {
1571                 .label          = "time server",
1572                 .type           = P_BOOL,
1573                 .p_class        = P_GLOBAL,
1574                 .offset         = GLOBAL_VAR(bTimeServer),
1575                 .special        = NULL,
1576                 .enum_list      = NULL,
1577                 .flags          = FLAG_ADVANCED,
1578         },
1579         {
1580                 .label          = "unix extensions",
1581                 .type           = P_BOOL,
1582                 .p_class        = P_GLOBAL,
1583                 .offset         = GLOBAL_VAR(bUnixExtensions),
1584                 .special        = NULL,
1585                 .enum_list      = NULL,
1586                 .flags          = FLAG_ADVANCED,
1587         },
1588         {
1589                 .label          = "use spnego",
1590                 .type           = P_BOOL,
1591                 .p_class        = P_GLOBAL,
1592                 .offset         = GLOBAL_VAR(bUseSpnego),
1593                 .special        = NULL,
1594                 .enum_list      = NULL,
1595                 .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
1596         },
1597         {
1598                 .label          = "client signing",
1599                 .type           = P_ENUM,
1600                 .p_class        = P_GLOBAL,
1601                 .offset         = GLOBAL_VAR(client_signing),
1602                 .special        = NULL,
1603                 .enum_list      = enum_smb_signing_vals,
1604                 .flags          = FLAG_ADVANCED,
1605         },
1606         {
1607                 .label          = "server signing",
1608                 .type           = P_ENUM,
1609                 .p_class        = P_GLOBAL,
1610                 .offset         = GLOBAL_VAR(server_signing),
1611                 .special        = NULL,
1612                 .enum_list      = enum_smb_signing_vals,
1613                 .flags          = FLAG_ADVANCED,
1614         },
1615         {
1616                 .label          = "smb encrypt",
1617                 .type           = P_ENUM,
1618                 .p_class        = P_LOCAL,
1619                 .offset         = LOCAL_VAR(ismb_encrypt),
1620                 .special        = NULL,
1621                 .enum_list      = enum_smb_signing_vals,
1622                 .flags          = FLAG_ADVANCED,
1623         },
1624         {
1625                 .label          = "client use spnego",
1626                 .type           = P_BOOL,
1627                 .p_class        = P_GLOBAL,
1628                 .offset         = GLOBAL_VAR(bClientUseSpnego),
1629                 .special        = NULL,
1630                 .enum_list      = NULL,
1631                 .flags          = FLAG_ADVANCED,
1632         },
1633         {
1634                 .label          = "client ldap sasl wrapping",
1635                 .type           = P_ENUM,
1636                 .p_class        = P_GLOBAL,
1637                 .offset         = GLOBAL_VAR(client_ldap_sasl_wrapping),
1638                 .special        = NULL,
1639                 .enum_list      = enum_ldap_sasl_wrapping,
1640                 .flags          = FLAG_ADVANCED,
1641         },
1642         {
1643                 .label          = "enable asu support",
1644                 .type           = P_BOOL,
1645                 .p_class        = P_GLOBAL,
1646                 .offset         = GLOBAL_VAR(bASUSupport),
1647                 .special        = NULL,
1648                 .enum_list      = NULL,
1649                 .flags          = FLAG_ADVANCED,
1650         },
1651         {
1652                 .label          = "svcctl list",
1653                 .type           = P_LIST,
1654                 .p_class        = P_GLOBAL,
1655                 .offset         = GLOBAL_VAR(szServicesList),
1656                 .special        = NULL,
1657                 .enum_list      = NULL,
1658                 .flags          = FLAG_ADVANCED,
1659         },
1660         {
1661                 .label          = "cldap port",
1662                 .type           = P_INTEGER,
1663                 .p_class        = P_GLOBAL,
1664                 .offset         = GLOBAL_VAR(cldap_port),
1665                 .special        = NULL,
1666                 .enum_list      = NULL
1667         },
1668         {
1669                 .label          = "dgram port",
1670                 .type           = P_INTEGER,
1671                 .p_class        = P_GLOBAL,
1672                 .offset         = GLOBAL_VAR(dgram_port),
1673                 .special        = NULL,
1674                 .enum_list      = NULL
1675         },
1676         {
1677                 .label          = "nbt port",
1678                 .type           = P_INTEGER,
1679                 .p_class        = P_GLOBAL,
1680                 .offset         = GLOBAL_VAR(nbt_port),
1681                 .special        = NULL,
1682                 .enum_list      = NULL
1683         },
1684         {
1685                 .label          = "krb5 port",
1686                 .type           = P_INTEGER,
1687                 .p_class        = P_GLOBAL,
1688                 .offset         = GLOBAL_VAR(krb5_port),
1689                 .special        = NULL,
1690                 .enum_list      = NULL
1691         },
1692         {
1693                 .label          = "kpasswd port",
1694                 .type           = P_INTEGER,
1695                 .p_class        = P_GLOBAL,
1696                 .offset         = GLOBAL_VAR(kpasswd_port),
1697                 .special        = NULL,
1698                 .enum_list      = NULL
1699         },
1700         {
1701                 .label          = "web port",
1702                 .type           = P_INTEGER,
1703                 .p_class        = P_GLOBAL,
1704                 .offset         = GLOBAL_VAR(web_port),
1705                 .special        = NULL,
1706                 .enum_list      = NULL
1707         },
1708         {
1709                 .label          = "rpc big endian",
1710                 .type           = P_BOOL,
1711                 .p_class        = P_GLOBAL,
1712                 .offset         = GLOBAL_VAR(bRpcBigEndian),
1713                 .special        = NULL,
1714                 .enum_list      = NULL
1715         },
1716         {
1717                 .label          = "durable handles",
1718                 .type           = P_BOOL,
1719                 .p_class        = P_LOCAL,
1720                 .offset         = LOCAL_VAR(bDurableHandles),
1721                 .special        = NULL,
1722                 .enum_list      = NULL,
1723                 .flags          = FLAG_ADVANCED,
1724         },
1725
1726         {N_("Tuning Options"), P_SEP, P_SEPARATOR},
1727
1728         {
1729                 .label          = "block size",
1730                 .type           = P_BYTES,
1731                 .p_class        = P_LOCAL,
1732                 .offset         = LOCAL_VAR(iBlock_size),
1733                 .special        = NULL,
1734                 .enum_list      = NULL,
1735                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
1736         },
1737         {
1738                 .label          = "deadtime",
1739                 .type           = P_INTEGER,
1740                 .p_class        = P_GLOBAL,
1741                 .offset         = GLOBAL_VAR(deadtime),
1742                 .special        = NULL,
1743                 .enum_list      = NULL,
1744                 .flags          = FLAG_ADVANCED,
1745         },
1746         {
1747                 .label          = "getwd cache",
1748                 .type           = P_BOOL,
1749                 .p_class        = P_GLOBAL,
1750                 .offset         = GLOBAL_VAR(getwd_cache),
1751                 .special        = NULL,
1752                 .enum_list      = NULL,
1753                 .flags          = FLAG_ADVANCED,
1754         },
1755         {
1756                 .label          = "keepalive",
1757                 .type           = P_INTEGER,
1758                 .p_class        = P_GLOBAL,
1759                 .offset         = GLOBAL_VAR(iKeepalive),
1760                 .special        = NULL,
1761                 .enum_list      = NULL,
1762                 .flags          = FLAG_ADVANCED,
1763         },
1764         {
1765                 .label          = "change notify",
1766                 .type           = P_BOOL,
1767                 .p_class        = P_LOCAL,
1768                 .offset         = LOCAL_VAR(bChangeNotify),
1769                 .special        = NULL,
1770                 .enum_list      = NULL,
1771                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1772         },
1773         {
1774                 .label          = "directory name cache size",
1775                 .type           = P_INTEGER,
1776                 .p_class        = P_LOCAL,
1777                 .offset         = LOCAL_VAR(iDirectoryNameCacheSize),
1778                 .special        = NULL,
1779                 .enum_list      = NULL,
1780                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1781         },
1782         {
1783                 .label          = "kernel change notify",
1784                 .type           = P_BOOL,
1785                 .p_class        = P_LOCAL,
1786                 .offset         = LOCAL_VAR(bKernelChangeNotify),
1787                 .special        = NULL,
1788                 .enum_list      = NULL,
1789                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1790         },
1791         {
1792                 .label          = "lpq cache time",
1793                 .type           = P_INTEGER,
1794                 .p_class        = P_GLOBAL,
1795                 .offset         = GLOBAL_VAR(lpqcachetime),
1796                 .special        = NULL,
1797                 .enum_list      = NULL,
1798                 .flags          = FLAG_ADVANCED,
1799         },
1800         {
1801                 .label          = "max smbd processes",
1802                 .type           = P_INTEGER,
1803                 .p_class        = P_GLOBAL,
1804                 .offset         = GLOBAL_VAR(iMaxSmbdProcesses),
1805                 .special        = NULL,
1806                 .enum_list      = NULL,
1807                 .flags          = FLAG_ADVANCED,
1808         },
1809         {
1810                 .label          = "max connections",
1811                 .type           = P_INTEGER,
1812                 .p_class        = P_LOCAL,
1813                 .offset         = LOCAL_VAR(iMaxConnections),
1814                 .special        = NULL,
1815                 .enum_list      = NULL,
1816                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1817         },
1818         {
1819                 .label          = "max disk size",
1820                 .type           = P_BYTES,
1821                 .p_class        = P_GLOBAL,
1822                 .offset         = GLOBAL_VAR(maxdisksize),
1823                 .special        = NULL,
1824                 .enum_list      = NULL,
1825                 .flags          = FLAG_ADVANCED,
1826         },
1827         {
1828                 .label          = "max open files",
1829                 .type           = P_INTEGER,
1830                 .p_class        = P_GLOBAL,
1831                 .offset         = GLOBAL_VAR(max_open_files),
1832                 .special        = NULL,
1833                 .enum_list      = NULL,
1834                 .flags          = FLAG_ADVANCED,
1835         },
1836         {
1837                 .label          = "min print space",
1838                 .type           = P_INTEGER,
1839                 .p_class        = P_LOCAL,
1840                 .offset         = LOCAL_VAR(iMinPrintSpace),
1841                 .special        = NULL,
1842                 .enum_list      = NULL,
1843                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
1844         },
1845         {
1846                 .label          = "socket options",
1847                 .type           = P_STRING,
1848                 .p_class        = P_GLOBAL,
1849                 .offset         = GLOBAL_VAR(socket_options),
1850                 .special        = NULL,
1851                 .enum_list      = NULL,
1852                 .flags          = FLAG_ADVANCED,
1853         },
1854         {
1855                 .label          = "strict allocate",
1856                 .type           = P_BOOL,
1857                 .p_class        = P_LOCAL,
1858                 .offset         = LOCAL_VAR(bStrictAllocate),
1859                 .special        = NULL,
1860                 .enum_list      = NULL,
1861                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1862         },
1863         {
1864                 .label          = "strict sync",
1865                 .type           = P_BOOL,
1866                 .p_class        = P_LOCAL,
1867                 .offset         = LOCAL_VAR(bStrictSync),
1868                 .special        = NULL,
1869                 .enum_list      = NULL,
1870                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1871         },
1872         {
1873                 .label          = "sync always",
1874                 .type           = P_BOOL,
1875                 .p_class        = P_LOCAL,
1876                 .offset         = LOCAL_VAR(bSyncAlways),
1877                 .special        = NULL,
1878                 .enum_list      = NULL,
1879                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1880         },
1881         {
1882                 .label          = "use mmap",
1883                 .type           = P_BOOL,
1884                 .p_class        = P_GLOBAL,
1885                 .offset         = GLOBAL_VAR(bUseMmap),
1886                 .special        = NULL,
1887                 .enum_list      = NULL,
1888                 .flags          = FLAG_ADVANCED,
1889         },
1890         {
1891                 .label          = "use ntdb",
1892                 .type           = P_BOOL,
1893                 .p_class        = P_GLOBAL,
1894                 .offset         = GLOBAL_VAR(bUseNtdb),
1895                 .special        = NULL,
1896                 .enum_list      = NULL,
1897                 .flags          = FLAG_ADVANCED,
1898         },
1899         {
1900                 .label          = "use sendfile",
1901                 .type           = P_BOOL,
1902                 .p_class        = P_LOCAL,
1903                 .offset         = LOCAL_VAR(bUseSendfile),
1904                 .special        = NULL,
1905                 .enum_list      = NULL,
1906                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1907         },
1908         {
1909                 .label          = "hostname lookups",
1910                 .type           = P_BOOL,
1911                 .p_class        = P_GLOBAL,
1912                 .offset         = GLOBAL_VAR(bHostnameLookups),
1913                 .special        = NULL,
1914                 .enum_list      = NULL,
1915                 .flags          = FLAG_ADVANCED,
1916         },
1917         {
1918                 .label          = "write cache size",
1919                 .type           = P_BYTES,
1920                 .p_class        = P_LOCAL,
1921                 .offset         = LOCAL_VAR(iWriteCacheSize),
1922                 .special        = NULL,
1923                 .enum_list      = NULL,
1924                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
1925         },
1926         {
1927                 .label          = "name cache timeout",
1928                 .type           = P_INTEGER,
1929                 .p_class        = P_GLOBAL,
1930                 .offset         = GLOBAL_VAR(name_cache_timeout),
1931                 .special        = NULL,
1932                 .enum_list      = NULL,
1933                 .flags          = FLAG_ADVANCED,
1934         },
1935         {
1936                 .label          = "ctdbd socket",
1937                 .type           = P_STRING,
1938                 .p_class        = P_GLOBAL,
1939                 .offset         = GLOBAL_VAR(ctdbdSocket),
1940                 .special        = NULL,
1941                 .enum_list      = NULL,
1942                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
1943         },
1944         {
1945                 .label          = "cluster addresses",
1946                 .type           = P_LIST,
1947                 .p_class        = P_GLOBAL,
1948                 .offset         = GLOBAL_VAR(szClusterAddresses),
1949                 .special        = NULL,
1950                 .enum_list      = NULL,
1951                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
1952         },
1953         {
1954                 .label          = "clustering",
1955                 .type           = P_BOOL,
1956                 .p_class        = P_GLOBAL,
1957                 .offset         = GLOBAL_VAR(clustering),
1958                 .special        = NULL,
1959                 .enum_list      = NULL,
1960                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
1961         },
1962         {
1963                 .label          = "ctdb timeout",
1964                 .type           = P_INTEGER,
1965                 .p_class        = P_GLOBAL,
1966                 .offset         = GLOBAL_VAR(ctdb_timeout),
1967                 .special        = NULL,
1968                 .enum_list      = NULL,
1969                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
1970         },
1971         {
1972                 .label          = "ctdb locktime warn threshold",
1973                 .type           = P_INTEGER,
1974                 .p_class        = P_GLOBAL,
1975                 .offset         = GLOBAL_VAR(ctdb_locktime_warn_threshold),
1976                 .special        = NULL,
1977                 .enum_list      = NULL,
1978                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
1979         },
1980         {
1981                 .label          = "smb2 max read",
1982                 .type           = P_BYTES,
1983                 .p_class        = P_GLOBAL,
1984                 .offset         = GLOBAL_VAR(ismb2_max_read),
1985                 .special        = NULL,
1986                 .enum_list      = NULL,
1987                 .flags          = FLAG_ADVANCED,
1988         },
1989         {
1990                 .label          = "smb2 max write",
1991                 .type           = P_BYTES,
1992                 .p_class        = P_GLOBAL,
1993                 .offset         = GLOBAL_VAR(ismb2_max_write),
1994                 .special        = NULL,
1995                 .enum_list      = NULL,
1996                 .flags          = FLAG_ADVANCED,
1997         },
1998         {
1999                 .label          = "smb2 max trans",
2000                 .type           = P_BYTES,
2001                 .p_class        = P_GLOBAL,
2002                 .offset         = GLOBAL_VAR(ismb2_max_trans),
2003                 .special        = NULL,
2004                 .enum_list      = NULL,
2005                 .flags          = FLAG_ADVANCED,
2006         },
2007         {
2008                 .label          = "smb2 max credits",
2009                 .type           = P_INTEGER,
2010                 .p_class        = P_GLOBAL,
2011                 .offset         = GLOBAL_VAR(ismb2_max_credits),
2012                 .special        = NULL,
2013                 .enum_list      = NULL,
2014                 .flags          = FLAG_ADVANCED,
2015         },
2016
2017         {N_("Printing Options"), P_SEP, P_SEPARATOR},
2018
2019         {
2020                 .label          = "max reported print jobs",
2021                 .type           = P_INTEGER,
2022                 .p_class        = P_LOCAL,
2023                 .offset         = LOCAL_VAR(iMaxReportedPrintJobs),
2024                 .special        = NULL,
2025                 .enum_list      = NULL,
2026                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2027         },
2028         {
2029                 .label          = "max print jobs",
2030                 .type           = P_INTEGER,
2031                 .p_class        = P_LOCAL,
2032                 .offset         = LOCAL_VAR(iMaxPrintJobs),
2033                 .special        = NULL,
2034                 .enum_list      = NULL,
2035                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2036         },
2037         {
2038                 .label          = "load printers",
2039                 .type           = P_BOOL,
2040                 .p_class        = P_GLOBAL,
2041                 .offset         = GLOBAL_VAR(bLoadPrinters),
2042                 .special        = NULL,
2043                 .enum_list      = NULL,
2044                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2045         },
2046         {
2047                 .label          = "printcap cache time",
2048                 .type           = P_INTEGER,
2049                 .p_class        = P_GLOBAL,
2050                 .offset         = GLOBAL_VAR(PrintcapCacheTime),
2051                 .special        = NULL,
2052                 .enum_list      = NULL,
2053                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2054         },
2055         {
2056                 .label          = "printcap name",
2057                 .type           = P_STRING,
2058                 .p_class        = P_GLOBAL,
2059                 .offset         = GLOBAL_VAR(szPrintcapname),
2060                 .special        = NULL,
2061                 .enum_list      = NULL,
2062                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2063         },
2064         {
2065                 .label          = "printcap",
2066                 .type           = P_STRING,
2067                 .p_class        = P_GLOBAL,
2068                 .offset         = GLOBAL_VAR(szPrintcapname),
2069                 .special        = NULL,
2070                 .enum_list      = NULL,
2071                 .flags          = FLAG_HIDE,
2072         },
2073         {
2074                 .label          = "printable",
2075                 .type           = P_BOOL,
2076                 .p_class        = P_LOCAL,
2077                 .offset         = LOCAL_VAR(bPrint_ok),
2078                 .special        = NULL,
2079                 .enum_list      = NULL,
2080                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2081         },
2082         {
2083                 .label          = "print notify backchannel",
2084                 .type           = P_BOOL,
2085                 .p_class        = P_LOCAL,
2086                 .offset         = LOCAL_VAR(bPrintNotifyBackchannel),
2087                 .special        = NULL,
2088                 .enum_list      = NULL,
2089                 .flags          = FLAG_ADVANCED,
2090         },
2091         {
2092                 .label          = "print ok",
2093                 .type           = P_BOOL,
2094                 .p_class        = P_LOCAL,
2095                 .offset         = LOCAL_VAR(bPrint_ok),
2096                 .special        = NULL,
2097                 .enum_list      = NULL,
2098                 .flags          = FLAG_HIDE,
2099         },
2100         {
2101                 .label          = "printing",
2102                 .type           = P_ENUM,
2103                 .p_class        = P_LOCAL,
2104                 .offset         = LOCAL_VAR(iPrinting),
2105                 .special        = handle_printing,
2106                 .enum_list      = enum_printing,
2107                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2108         },
2109         {
2110                 .label          = "cups options",
2111                 .type           = P_STRING,
2112                 .p_class        = P_LOCAL,
2113                 .offset         = LOCAL_VAR(szCupsOptions),
2114                 .special        = NULL,
2115                 .enum_list      = NULL,
2116                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2117         },
2118         {
2119                 .label          = "cups server",
2120                 .type           = P_STRING,
2121                 .p_class        = P_GLOBAL,
2122                 .offset         = GLOBAL_VAR(szCupsServer),
2123                 .special        = NULL,
2124                 .enum_list      = NULL,
2125                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2126         },
2127         {
2128                 .label          = "cups encrypt",
2129                 .type           = P_ENUM,
2130                 .p_class        = P_GLOBAL,
2131                 .offset         = GLOBAL_VAR(CupsEncrypt),
2132                 .special        = NULL,
2133                 .enum_list      = enum_bool_auto,
2134                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2135         },
2136         {
2137
2138                 .label          = "cups connection timeout",
2139                 .type           = P_INTEGER,
2140                 .p_class        = P_GLOBAL,
2141                 .offset         = GLOBAL_VAR(cups_connection_timeout),
2142                 .special        = NULL,
2143                 .enum_list      = NULL,
2144                 .flags          = FLAG_ADVANCED,
2145         },
2146         {
2147                 .label          = "iprint server",
2148                 .type           = P_STRING,
2149                 .p_class        = P_GLOBAL,
2150                 .offset         = GLOBAL_VAR(szIPrintServer),
2151                 .special        = NULL,
2152                 .enum_list      = NULL,
2153                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2154         },
2155         {
2156                 .label          = "print command",
2157                 .type           = P_STRING,
2158                 .p_class        = P_LOCAL,
2159                 .offset         = LOCAL_VAR(szPrintcommand),
2160                 .special        = NULL,
2161                 .enum_list      = NULL,
2162                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2163         },
2164         {
2165                 .label          = "disable spoolss",
2166                 .type           = P_BOOL,
2167                 .p_class        = P_GLOBAL,
2168                 .offset         = GLOBAL_VAR(bDisableSpoolss),
2169                 .special        = NULL,
2170                 .enum_list      = NULL,
2171                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2172         },
2173         {
2174                 .label          = "enable spoolss",
2175                 .type           = P_BOOLREV,
2176                 .p_class        = P_GLOBAL,
2177                 .offset         = GLOBAL_VAR(bDisableSpoolss),
2178                 .special        = NULL,
2179                 .enum_list      = NULL,
2180                 .flags          = FLAG_HIDE,
2181         },
2182         {
2183                 .label          = "lpq command",
2184                 .type           = P_STRING,
2185                 .p_class        = P_LOCAL,
2186                 .offset         = LOCAL_VAR(szLpqcommand),
2187                 .special        = NULL,
2188                 .enum_list      = NULL,
2189                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2190         },
2191         {
2192                 .label          = "lprm command",
2193                 .type           = P_STRING,
2194                 .p_class        = P_LOCAL,
2195                 .offset         = LOCAL_VAR(szLprmcommand),
2196                 .special        = NULL,
2197                 .enum_list      = NULL,
2198                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2199         },
2200         {
2201                 .label          = "lppause command",
2202                 .type           = P_STRING,
2203                 .p_class        = P_LOCAL,
2204                 .offset         = LOCAL_VAR(szLppausecommand),
2205                 .special        = NULL,
2206                 .enum_list      = NULL,
2207                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2208         },
2209         {
2210                 .label          = "lpresume command",
2211                 .type           = P_STRING,
2212                 .p_class        = P_LOCAL,
2213                 .offset         = LOCAL_VAR(szLpresumecommand),
2214                 .special        = NULL,
2215                 .enum_list      = NULL,
2216                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2217         },
2218         {
2219                 .label          = "queuepause command",
2220                 .type           = P_STRING,
2221                 .p_class        = P_LOCAL,
2222                 .offset         = LOCAL_VAR(szQueuepausecommand),
2223                 .special        = NULL,
2224                 .enum_list      = NULL,
2225                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2226         },
2227         {
2228                 .label          = "queueresume command",
2229                 .type           = P_STRING,
2230                 .p_class        = P_LOCAL,
2231                 .offset         = LOCAL_VAR(szQueueresumecommand),
2232                 .special        = NULL,
2233                 .enum_list      = NULL,
2234                 .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
2235         },
2236         {
2237                 .label          = "addport command",
2238                 .type           = P_STRING,
2239                 .p_class        = P_GLOBAL,
2240                 .offset         = GLOBAL_VAR(szAddPortCommand),
2241                 .special        = NULL,
2242                 .enum_list      = NULL,
2243                 .flags          = FLAG_ADVANCED,
2244         },
2245         {
2246                 .label          = "enumports command",
2247                 .type           = P_STRING,
2248                 .p_class        = P_GLOBAL,
2249                 .offset         = GLOBAL_VAR(szEnumPortsCommand),
2250                 .special        = NULL,
2251                 .enum_list      = NULL,
2252                 .flags          = FLAG_ADVANCED,
2253         },
2254         {
2255                 .label          = "addprinter command",
2256                 .type           = P_STRING,
2257                 .p_class        = P_GLOBAL,
2258                 .offset         = GLOBAL_VAR(szAddPrinterCommand),
2259                 .special        = NULL,
2260                 .enum_list      = NULL,
2261                 .flags          = FLAG_ADVANCED,
2262         },
2263         {
2264                 .label          = "deleteprinter command",
2265                 .type           = P_STRING,
2266                 .p_class        = P_GLOBAL,
2267                 .offset         = GLOBAL_VAR(szDeletePrinterCommand),
2268                 .special        = NULL,
2269                 .enum_list      = NULL,
2270                 .flags          = FLAG_ADVANCED,
2271         },
2272         {
2273                 .label          = "show add printer wizard",
2274                 .type           = P_BOOL,
2275                 .p_class        = P_GLOBAL,
2276                 .offset         = GLOBAL_VAR(bMsAddPrinterWizard),
2277                 .special        = NULL,
2278                 .enum_list      = NULL,
2279                 .flags          = FLAG_ADVANCED,
2280         },
2281         {
2282                 .label          = "os2 driver map",
2283                 .type           = P_STRING,
2284                 .p_class        = P_GLOBAL,
2285                 .offset         = GLOBAL_VAR(szOs2DriverMap),
2286                 .special        = NULL,
2287                 .enum_list      = NULL,
2288                 .flags          = FLAG_ADVANCED,
2289         },
2290
2291         {
2292                 .label          = "printer name",
2293                 .type           = P_STRING,
2294                 .p_class        = P_LOCAL,
2295                 .offset         = LOCAL_VAR(szPrintername),
2296                 .special        = NULL,
2297                 .enum_list      = NULL,
2298                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2299         },
2300         {
2301                 .label          = "printer",
2302                 .type           = P_STRING,
2303                 .p_class        = P_LOCAL,
2304                 .offset         = LOCAL_VAR(szPrintername),
2305                 .special        = NULL,
2306                 .enum_list      = NULL,
2307                 .flags          = FLAG_HIDE,
2308         },
2309         {
2310                 .label          = "use client driver",
2311                 .type           = P_BOOL,
2312                 .p_class        = P_LOCAL,
2313                 .offset         = LOCAL_VAR(bUseClientDriver),
2314                 .special        = NULL,
2315                 .enum_list      = NULL,
2316                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2317         },
2318         {
2319                 .label          = "default devmode",
2320                 .type           = P_BOOL,
2321                 .p_class        = P_LOCAL,
2322                 .offset         = LOCAL_VAR(bDefaultDevmode),
2323                 .special        = NULL,
2324                 .enum_list      = NULL,
2325                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2326         },
2327         {
2328                 .label          = "force printername",
2329                 .type           = P_BOOL,
2330                 .p_class        = P_LOCAL,
2331                 .offset         = LOCAL_VAR(bForcePrintername),
2332                 .special        = NULL,
2333                 .enum_list      = NULL,
2334                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2335         },
2336         {
2337                 .label          = "printjob username",
2338                 .type           = P_STRING,
2339                 .p_class        = P_LOCAL,
2340                 .offset         = LOCAL_VAR(szPrintjobUsername),
2341                 .special        = NULL,
2342                 .enum_list      = NULL,
2343                 .flags          = FLAG_ADVANCED | FLAG_PRINT,
2344         },
2345
2346         {N_("Filename Handling"), P_SEP, P_SEPARATOR},
2347
2348         {
2349                 .label          = "mangling method",
2350                 .type           = P_STRING,
2351                 .p_class        = P_GLOBAL,
2352                 .offset         = GLOBAL_VAR(szManglingMethod),
2353                 .special        = NULL,
2354                 .enum_list      = NULL,
2355                 .flags          = FLAG_ADVANCED,
2356         },
2357         {
2358                 .label          = "mangle prefix",
2359                 .type           = P_INTEGER,
2360                 .p_class        = P_GLOBAL,
2361                 .offset         = GLOBAL_VAR(mangle_prefix),
2362                 .special        = NULL,
2363                 .enum_list      = NULL,
2364                 .flags          = FLAG_ADVANCED,
2365         },
2366
2367         {
2368                 .label          = "default case",
2369                 .type           = P_ENUM,
2370                 .p_class        = P_LOCAL,
2371                 .offset         = LOCAL_VAR(iDefaultCase),
2372                 .special        = NULL,
2373                 .enum_list      = enum_case,
2374                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
2375         },
2376         {
2377                 .label          = "case sensitive",
2378                 .type           = P_ENUM,
2379                 .p_class        = P_LOCAL,
2380                 .offset         = LOCAL_VAR(iCaseSensitive),
2381                 .special        = NULL,
2382                 .enum_list      = enum_bool_auto,
2383                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2384         },
2385         {
2386                 .label          = "casesignames",
2387                 .type           = P_ENUM,
2388                 .p_class        = P_LOCAL,
2389                 .offset         = LOCAL_VAR(iCaseSensitive),
2390                 .special        = NULL,
2391                 .enum_list      = enum_bool_auto,
2392                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL | FLAG_HIDE,
2393         },
2394         {
2395                 .label          = "preserve case",
2396                 .type           = P_BOOL,
2397                 .p_class        = P_LOCAL,
2398                 .offset         = LOCAL_VAR(bCasePreserve),
2399                 .special        = NULL,
2400                 .enum_list      = NULL,
2401                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2402         },
2403         {
2404                 .label          = "short preserve case",
2405                 .type           = P_BOOL,
2406                 .p_class        = P_LOCAL,
2407                 .offset         = LOCAL_VAR(bShortCasePreserve),
2408                 .special        = NULL,
2409                 .enum_list      = NULL,
2410                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2411         },
2412         {
2413                 .label          = "mangling char",
2414                 .type           = P_CHAR,
2415                 .p_class        = P_LOCAL,
2416                 .offset         = LOCAL_VAR(magic_char),
2417                 .special        = NULL,
2418                 .enum_list      = NULL,
2419                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2420         },
2421         {
2422                 .label          = "hide dot files",
2423                 .type           = P_BOOL,
2424                 .p_class        = P_LOCAL,
2425                 .offset         = LOCAL_VAR(bHideDotFiles),
2426                 .special        = NULL,
2427                 .enum_list      = NULL,
2428                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2429         },
2430         {
2431                 .label          = "hide special files",
2432                 .type           = P_BOOL,
2433                 .p_class        = P_LOCAL,
2434                 .offset         = LOCAL_VAR(bHideSpecialFiles),
2435                 .special        = NULL,
2436                 .enum_list      = NULL,
2437                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2438         },
2439         {
2440                 .label          = "hide unreadable",
2441                 .type           = P_BOOL,
2442                 .p_class        = P_LOCAL,
2443                 .offset         = LOCAL_VAR(bHideUnReadable),
2444                 .special        = NULL,
2445                 .enum_list      = NULL,
2446                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2447         },
2448         {
2449                 .label          = "hide unwriteable files",
2450                 .type           = P_BOOL,
2451                 .p_class        = P_LOCAL,
2452                 .offset         = LOCAL_VAR(bHideUnWriteableFiles),
2453                 .special        = NULL,
2454                 .enum_list      = NULL,
2455                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2456         },
2457         {
2458                 .label          = "delete veto files",
2459                 .type           = P_BOOL,
2460                 .p_class        = P_LOCAL,
2461                 .offset         = LOCAL_VAR(bDeleteVetoFiles),
2462                 .special        = NULL,
2463                 .enum_list      = NULL,
2464                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2465         },
2466         {
2467                 .label          = "veto files",
2468                 .type           = P_STRING,
2469                 .p_class        = P_LOCAL,
2470                 .offset         = LOCAL_VAR(szVetoFiles),
2471                 .special        = NULL,
2472                 .enum_list      = NULL,
2473                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2474         },
2475         {
2476                 .label          = "hide files",
2477                 .type           = P_STRING,
2478                 .p_class        = P_LOCAL,
2479                 .offset         = LOCAL_VAR(szHideFiles),
2480                 .special        = NULL,
2481                 .enum_list      = NULL,
2482                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2483         },
2484         {
2485                 .label          = "veto oplock files",
2486                 .type           = P_STRING,
2487                 .p_class        = P_LOCAL,
2488                 .offset         = LOCAL_VAR(szVetoOplockFiles),
2489                 .special        = NULL,
2490                 .enum_list      = NULL,
2491                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2492         },
2493         {
2494                 .label          = "map archive",
2495                 .type           = P_BOOL,
2496                 .p_class        = P_LOCAL,
2497                 .offset         = LOCAL_VAR(bMap_archive),
2498                 .special        = NULL,
2499                 .enum_list      = NULL,
2500                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2501         },
2502         {
2503                 .label          = "map hidden",
2504                 .type           = P_BOOL,
2505                 .p_class        = P_LOCAL,
2506                 .offset         = LOCAL_VAR(bMap_hidden),
2507                 .special        = NULL,
2508                 .enum_list      = NULL,
2509                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2510         },
2511         {
2512                 .label          = "map system",
2513                 .type           = P_BOOL,
2514                 .p_class        = P_LOCAL,
2515                 .offset         = LOCAL_VAR(bMap_system),
2516                 .special        = NULL,
2517                 .enum_list      = NULL,
2518                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2519         },
2520         {
2521                 .label          = "map readonly",
2522                 .type           = P_ENUM,
2523                 .p_class        = P_LOCAL,
2524                 .offset         = LOCAL_VAR(iMap_readonly),
2525                 .special        = NULL,
2526                 .enum_list      = enum_map_readonly,
2527                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2528         },
2529         {
2530                 .label          = "mangled names",
2531                 .type           = P_BOOL,
2532                 .p_class        = P_LOCAL,
2533                 .offset         = LOCAL_VAR(bMangledNames),
2534                 .special        = NULL,
2535                 .enum_list      = NULL,
2536                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2537         },
2538         {
2539                 .label          = "max stat cache size",
2540                 .type           = P_INTEGER,
2541                 .p_class        = P_GLOBAL,
2542                 .offset         = GLOBAL_VAR(iMaxStatCacheSize),
2543                 .special        = NULL,
2544                 .enum_list      = NULL,
2545                 .flags          = FLAG_ADVANCED,
2546         },
2547         {
2548                 .label          = "stat cache",
2549                 .type           = P_BOOL,
2550                 .p_class        = P_GLOBAL,
2551                 .offset         = GLOBAL_VAR(bStatCache),
2552                 .special        = NULL,
2553                 .enum_list      = NULL,
2554                 .flags          = FLAG_ADVANCED,
2555         },
2556         {
2557                 .label          = "store dos attributes",
2558                 .type           = P_BOOL,
2559                 .p_class        = P_LOCAL,
2560                 .offset         = LOCAL_VAR(bStoreDosAttributes),
2561                 .special        = NULL,
2562                 .enum_list      = NULL,
2563                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2564         },
2565         {
2566                 .label          = "dmapi support",
2567                 .type           = P_BOOL,
2568                 .p_class        = P_LOCAL,
2569                 .offset         = LOCAL_VAR(bDmapiSupport),
2570                 .special        = NULL,
2571                 .enum_list      = NULL,
2572                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2573         },
2574
2575
2576         {N_("Domain Options"), P_SEP, P_SEPARATOR},
2577
2578         {
2579                 .label          = "machine password timeout",
2580                 .type           = P_INTEGER,
2581                 .p_class        = P_GLOBAL,
2582                 .offset         = GLOBAL_VAR(machine_password_timeout),
2583                 .special        = NULL,
2584                 .enum_list      = NULL,
2585                 .flags          = FLAG_ADVANCED | FLAG_WIZARD,
2586         },
2587
2588         {N_("Logon Options"), P_SEP, P_SEPARATOR},
2589
2590         {
2591                 .label          = "add user script",
2592                 .type           = P_STRING,
2593                 .p_class        = P_GLOBAL,
2594                 .offset         = GLOBAL_VAR(szAddUserScript),
2595                 .special        = NULL,
2596                 .enum_list      = NULL,
2597                 .flags          = FLAG_ADVANCED,
2598         },
2599         {
2600                 .label          = "rename user script",
2601                 .type           = P_STRING,
2602                 .p_class        = P_GLOBAL,
2603                 .offset         = GLOBAL_VAR(szRenameUserScript),
2604                 .special        = NULL,
2605                 .enum_list      = NULL,
2606                 .flags          = FLAG_ADVANCED,
2607         },
2608         {
2609                 .label          = "delete user script",
2610                 .type           = P_STRING,
2611                 .p_class        = P_GLOBAL,
2612                 .offset         = GLOBAL_VAR(szDelUserScript),
2613                 .special        = NULL,
2614                 .enum_list      = NULL,
2615                 .flags          = FLAG_ADVANCED,
2616         },
2617         {
2618                 .label          = "add group script",
2619                 .type           = P_STRING,
2620                 .p_class        = P_GLOBAL,
2621                 .offset         = GLOBAL_VAR(szAddGroupScript),
2622                 .special        = NULL,
2623                 .enum_list      = NULL,
2624                 .flags          = FLAG_ADVANCED,
2625         },
2626         {
2627                 .label          = "delete group script",
2628                 .type           = P_STRING,
2629                 .p_class        = P_GLOBAL,
2630                 .offset         = GLOBAL_VAR(szDelGroupScript),
2631                 .special        = NULL,
2632                 .enum_list      = NULL,
2633                 .flags          = FLAG_ADVANCED,
2634         },
2635         {
2636                 .label          = "add user to group script",
2637                 .type           = P_STRING,
2638                 .p_class        = P_GLOBAL,
2639                 .offset         = GLOBAL_VAR(szAddUserToGroupScript),
2640                 .special        = NULL,
2641                 .enum_list      = NULL,
2642                 .flags          = FLAG_ADVANCED,
2643         },
2644         {
2645                 .label          = "delete user from group script",
2646                 .type           = P_STRING,
2647                 .p_class        = P_GLOBAL,
2648                 .offset         = GLOBAL_VAR(szDelUserFromGroupScript),
2649                 .special        = NULL,
2650                 .enum_list      = NULL,
2651                 .flags          = FLAG_ADVANCED,
2652         },
2653         {
2654                 .label          = "set primary group script",
2655                 .type           = P_STRING,
2656                 .p_class        = P_GLOBAL,
2657                 .offset         = GLOBAL_VAR(szSetPrimaryGroupScript),
2658                 .special        = NULL,
2659                 .enum_list      = NULL,
2660                 .flags          = FLAG_ADVANCED,
2661         },
2662         {
2663                 .label          = "add machine script",
2664                 .type           = P_STRING,
2665                 .p_class        = P_GLOBAL,
2666                 .offset         = GLOBAL_VAR(szAddMachineScript),
2667                 .special        = NULL,
2668                 .enum_list      = NULL,
2669                 .flags          = FLAG_ADVANCED,
2670         },
2671         {
2672                 .label          = "shutdown script",
2673                 .type           = P_STRING,
2674                 .p_class        = P_GLOBAL,
2675                 .offset         = GLOBAL_VAR(szShutdownScript),
2676                 .special        = NULL,
2677                 .enum_list      = NULL,
2678                 .flags          = FLAG_ADVANCED,
2679         },
2680         {
2681                 .label          = "abort shutdown script",
2682                 .type           = P_STRING,
2683                 .p_class        = P_GLOBAL,
2684                 .offset         = GLOBAL_VAR(szAbortShutdownScript),
2685                 .special        = NULL,
2686                 .enum_list      = NULL,
2687                 .flags          = FLAG_ADVANCED,
2688         },
2689         {
2690                 .label          = "username map script",
2691                 .type           = P_STRING,
2692                 .p_class        = P_GLOBAL,
2693                 .offset         = GLOBAL_VAR(szUsernameMapScript),
2694                 .special        = NULL,
2695                 .enum_list      = NULL,
2696                 .flags          = FLAG_ADVANCED,
2697         },
2698         {
2699                 .label          = "username map cache time",
2700                 .type           = P_INTEGER,
2701                 .p_class        = P_GLOBAL,
2702                 .offset         = GLOBAL_VAR(iUsernameMapCacheTime),
2703                 .special        = NULL,
2704                 .enum_list      = NULL,
2705                 .flags          = FLAG_ADVANCED,
2706         },
2707         {
2708                 .label          = "logon script",
2709                 .type           = P_STRING,
2710                 .p_class        = P_GLOBAL,
2711                 .offset         = GLOBAL_VAR(szLogonScript),
2712                 .special        = NULL,
2713                 .enum_list      = NULL,
2714                 .flags          = FLAG_ADVANCED,
2715         },
2716         {
2717                 .label          = "logon path",
2718                 .type           = P_STRING,
2719                 .p_class        = P_GLOBAL,
2720                 .offset         = GLOBAL_VAR(szLogonPath),
2721                 .special        = NULL,
2722                 .enum_list      = NULL,
2723                 .flags          = FLAG_ADVANCED,
2724         },
2725         {
2726                 .label          = "logon drive",
2727                 .type           = P_STRING,
2728                 .p_class        = P_GLOBAL,
2729                 .offset         = GLOBAL_VAR(szLogonDrive),
2730                 .special        = NULL,
2731                 .enum_list      = NULL,
2732                 .flags          = FLAG_ADVANCED,
2733         },
2734         {
2735                 .label          = "logon home",
2736                 .type           = P_STRING,
2737                 .p_class        = P_GLOBAL,
2738                 .offset         = GLOBAL_VAR(szLogonHome),
2739                 .special        = NULL,
2740                 .enum_list      = NULL,
2741                 .flags          = FLAG_ADVANCED,
2742         },
2743         {
2744                 .label          = "domain logons",
2745                 .type           = P_BOOL,
2746                 .p_class        = P_GLOBAL,
2747                 .offset         = GLOBAL_VAR(bDomainLogons),
2748                 .special        = NULL,
2749                 .enum_list      = NULL,
2750                 .flags          = FLAG_ADVANCED,
2751         },
2752
2753         {
2754                 .label          = "init logon delayed hosts",
2755                 .type           = P_LIST,
2756                 .p_class        = P_GLOBAL,
2757                 .offset         = GLOBAL_VAR(szInitLogonDelayedHosts),
2758                 .special        = NULL,
2759                 .enum_list      = NULL,
2760                 .flags          = FLAG_ADVANCED,
2761         },
2762
2763         {
2764                 .label          = "init logon delay",
2765                 .type           = P_INTEGER,
2766                 .p_class        = P_GLOBAL,
2767                 .offset         = GLOBAL_VAR(InitLogonDelay),
2768                 .special        = NULL,
2769                 .enum_list      = NULL,
2770                 .flags          = FLAG_ADVANCED,
2771
2772         },
2773
2774         {N_("Browse Options"), P_SEP, P_SEPARATOR},
2775
2776         {
2777                 .label          = "os level",
2778                 .type           = P_INTEGER,
2779                 .p_class        = P_GLOBAL,
2780                 .offset         = GLOBAL_VAR(os_level),
2781                 .special        = NULL,
2782                 .enum_list      = NULL,
2783                 .flags          = FLAG_BASIC | FLAG_ADVANCED,
2784         },
2785         {
2786                 .label          = "lm announce",
2787                 .type           = P_ENUM,
2788                 .p_class        = P_GLOBAL,
2789                 .offset         = GLOBAL_VAR(lm_announce),
2790                 .special        = NULL,
2791                 .enum_list      = enum_bool_auto,
2792                 .flags          = FLAG_ADVANCED,
2793         },
2794         {
2795                 .label          = "lm interval",
2796                 .type           = P_INTEGER,
2797                 .p_class        = P_GLOBAL,
2798                 .offset         = GLOBAL_VAR(lm_interval),
2799                 .special        = NULL,
2800                 .enum_list      = NULL,
2801                 .flags          = FLAG_ADVANCED,
2802         },
2803         {
2804                 .label          = "preferred master",
2805                 .type           = P_ENUM,
2806                 .p_class        = P_GLOBAL,
2807                 .offset         = GLOBAL_VAR(iPreferredMaster),
2808                 .special        = NULL,
2809                 .enum_list      = enum_bool_auto,
2810                 .flags          = FLAG_BASIC | FLAG_ADVANCED,
2811         },
2812         {
2813                 .label          = "prefered master",
2814                 .type           = P_ENUM,
2815                 .p_class        = P_GLOBAL,
2816                 .offset         = GLOBAL_VAR(iPreferredMaster),
2817                 .special        = NULL,
2818                 .enum_list      = enum_bool_auto,
2819                 .flags          = FLAG_HIDE,
2820         },
2821         {
2822                 .label          = "local master",
2823                 .type           = P_BOOL,
2824                 .p_class        = P_GLOBAL,
2825                 .offset         = GLOBAL_VAR(bLocalMaster),
2826                 .special        = NULL,
2827                 .enum_list      = NULL,
2828                 .flags          = FLAG_BASIC | FLAG_ADVANCED,
2829         },
2830         {
2831                 .label          = "domain master",
2832                 .type           = P_ENUM,
2833                 .p_class        = P_GLOBAL,
2834                 .offset         = GLOBAL_VAR(domain_master),
2835                 .special        = NULL,
2836                 .enum_list      = enum_bool_auto,
2837                 .flags          = FLAG_BASIC | FLAG_ADVANCED,
2838         },
2839         {
2840                 .label          = "browse list",
2841                 .type           = P_BOOL,
2842                 .p_class        = P_GLOBAL,
2843                 .offset         = GLOBAL_VAR(bBrowseList),
2844                 .special        = NULL,
2845                 .enum_list      = NULL,
2846                 .flags          = FLAG_ADVANCED,
2847         },
2848         {
2849                 .label          = "browseable",
2850                 .type           = P_BOOL,
2851                 .p_class        = P_LOCAL,
2852                 .offset         = LOCAL_VAR(bBrowseable),
2853                 .special        = NULL,
2854                 .enum_list      = NULL,
2855                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
2856         },
2857         {
2858                 .label          = "browsable",
2859                 .type           = P_BOOL,
2860                 .p_class        = P_LOCAL,
2861                 .offset         = LOCAL_VAR(bBrowseable),
2862                 .special        = NULL,
2863                 .enum_list      = NULL,
2864                 .flags          = FLAG_HIDE,
2865         },
2866         {
2867                 .label          = "access based share enum",
2868                 .type           = P_BOOL,
2869                 .p_class        = P_LOCAL,
2870                 .offset         = LOCAL_VAR(bAccessBasedShareEnum),
2871                 .special        = NULL,
2872                 .enum_list      = NULL,
2873                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE
2874         },
2875         {
2876                 .label          = "enhanced browsing",
2877                 .type           = P_BOOL,
2878                 .p_class        = P_GLOBAL,
2879                 .offset         = GLOBAL_VAR(enhanced_browsing),
2880                 .special        = NULL,
2881                 .enum_list      = NULL,
2882                 .flags          = FLAG_ADVANCED,
2883         },
2884
2885         {N_("WINS Options"), P_SEP, P_SEPARATOR},
2886
2887         {
2888                 .label          = "dns proxy",
2889                 .type           = P_BOOL,
2890                 .p_class        = P_GLOBAL,
2891                 .offset         = GLOBAL_VAR(bWINSdnsProxy),
2892                 .special        = NULL,
2893                 .enum_list      = NULL,
2894                 .flags          = FLAG_ADVANCED,
2895         },
2896         {
2897                 .label          = "wins proxy",
2898                 .type           = P_BOOL,
2899                 .p_class        = P_GLOBAL,
2900                 .offset         = GLOBAL_VAR(bWINSproxy),
2901                 .special        = NULL,
2902                 .enum_list      = NULL,
2903                 .flags          = FLAG_ADVANCED,
2904         },
2905         {
2906                 .label          = "wins server",
2907                 .type           = P_LIST,
2908                 .p_class        = P_GLOBAL,
2909                 .offset         = GLOBAL_VAR(szWINSservers),
2910                 .special        = NULL,
2911                 .enum_list      = NULL,
2912                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
2913         },
2914         {
2915                 .label          = "wins support",
2916                 .type           = P_BOOL,
2917                 .p_class        = P_GLOBAL,
2918                 .offset         = GLOBAL_VAR(bWINSsupport),
2919                 .special        = NULL,
2920                 .enum_list      = NULL,
2921                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
2922         },
2923         {
2924                 .label          = "wins hook",
2925                 .type           = P_STRING,
2926                 .p_class        = P_GLOBAL,
2927                 .offset         = GLOBAL_VAR(szWINSHook),
2928                 .special        = NULL,
2929                 .enum_list      = NULL,
2930                 .flags          = FLAG_ADVANCED,
2931         },
2932
2933         {N_("Locking Options"), P_SEP, P_SEPARATOR},
2934
2935         {
2936                 .label          = "blocking locks",
2937                 .type           = P_BOOL,
2938                 .p_class        = P_LOCAL,
2939                 .offset         = LOCAL_VAR(bBlockingLocks),
2940                 .special        = NULL,
2941                 .enum_list      = NULL,
2942                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2943         },
2944         {
2945                 .label          = "csc policy",
2946                 .type           = P_ENUM,
2947                 .p_class        = P_LOCAL,
2948                 .offset         = LOCAL_VAR(iCSCPolicy),
2949                 .special        = NULL,
2950                 .enum_list      = enum_csc_policy,
2951                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2952         },
2953         {
2954                 .label          = "fake oplocks",
2955                 .type           = P_BOOL,
2956                 .p_class        = P_LOCAL,
2957                 .offset         = LOCAL_VAR(bFakeOplocks),
2958                 .special        = NULL,
2959                 .enum_list      = NULL,
2960                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
2961         },
2962         {
2963                 .label          = "kernel oplocks",
2964                 .type           = P_BOOL,
2965                 .p_class        = P_LOCAL,
2966                 .offset         = LOCAL_VAR(bKernelOplocks),
2967                 .special        = NULL,
2968                 .enum_list      = NULL,
2969                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2970         },
2971         {
2972                 .label          = "kernel share modes",
2973                 .type           = P_BOOL,
2974                 .p_class        = P_LOCAL,
2975                 .offset         = LOCAL_VAR(bKernelShareModes),
2976                 .special        = NULL,
2977                 .enum_list      = NULL,
2978                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2979         },
2980         {
2981                 .label          = "locking",
2982                 .type           = P_BOOL,
2983                 .p_class        = P_LOCAL,
2984                 .offset         = LOCAL_VAR(bLocking),
2985                 .special        = NULL,
2986                 .enum_list      = NULL,
2987                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
2988         },
2989         {
2990                 .label          = "lock spin time",
2991                 .type           = P_INTEGER,
2992                 .p_class        = P_GLOBAL,
2993                 .offset         = GLOBAL_VAR(iLockSpinTime),
2994                 .special        = NULL,
2995                 .enum_list      = NULL,
2996                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
2997         },
2998         {
2999                 .label          = "oplocks",
3000                 .type           = P_BOOL,
3001                 .p_class        = P_LOCAL,
3002                 .offset         = LOCAL_VAR(bOpLocks),
3003                 .special        = NULL,
3004                 .enum_list      = NULL,
3005                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3006         },
3007         {
3008                 .label          = "level2 oplocks",
3009                 .type           = P_BOOL,
3010                 .p_class        = P_LOCAL,
3011                 .offset         = LOCAL_VAR(bLevel2OpLocks),
3012                 .special        = NULL,
3013                 .enum_list      = NULL,
3014                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3015         },
3016         {
3017                 .label          = "oplock break wait time",
3018                 .type           = P_INTEGER,
3019                 .p_class        = P_GLOBAL,
3020                 .offset         = GLOBAL_VAR(oplock_break_wait_time),
3021                 .special        = NULL,
3022                 .enum_list      = NULL,
3023                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
3024         },
3025         {
3026                 .label          = "oplock contention limit",
3027                 .type           = P_INTEGER,
3028                 .p_class        = P_LOCAL,
3029                 .offset         = LOCAL_VAR(iOplockContentionLimit),
3030                 .special        = NULL,
3031                 .enum_list      = NULL,
3032                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3033         },
3034         {
3035                 .label          = "posix locking",
3036                 .type           = P_BOOL,
3037                 .p_class        = P_LOCAL,
3038                 .offset         = LOCAL_VAR(bPosixLocking),
3039                 .special        = NULL,
3040                 .enum_list      = NULL,
3041                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3042         },
3043         {
3044                 .label          = "strict locking",
3045                 .type           = P_ENUM,
3046                 .p_class        = P_LOCAL,
3047                 .offset         = LOCAL_VAR(iStrictLocking),
3048                 .special        = NULL,
3049                 .enum_list      = enum_bool_auto,
3050                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3051         },
3052
3053         {N_("Ldap Options"), P_SEP, P_SEPARATOR},
3054
3055         {
3056                 .label          = "ldap admin dn",
3057                 .type           = P_STRING,
3058                 .p_class        = P_GLOBAL,
3059                 .offset         = GLOBAL_VAR(szLdapAdminDn),
3060                 .special        = NULL,
3061                 .enum_list      = NULL,
3062                 .flags          = FLAG_ADVANCED,
3063         },
3064         {
3065                 .label          = "ldap delete dn",
3066                 .type           = P_BOOL,
3067                 .p_class        = P_GLOBAL,
3068                 .offset         = GLOBAL_VAR(ldap_delete_dn),
3069                 .special        = NULL,
3070                 .enum_list      = NULL,
3071                 .flags          = FLAG_ADVANCED,
3072         },
3073         {
3074                 .label          = "ldap group suffix",
3075                 .type           = P_STRING,
3076                 .p_class        = P_GLOBAL,
3077                 .offset         = GLOBAL_VAR(szLdapGroupSuffix),
3078                 .special        = NULL,
3079                 .enum_list      = NULL,
3080                 .flags          = FLAG_ADVANCED,
3081         },
3082         {
3083                 .label          = "ldap idmap suffix",
3084                 .type           = P_STRING,
3085                 .p_class        = P_GLOBAL,
3086                 .offset         = GLOBAL_VAR(szLdapIdmapSuffix),
3087                 .special        = NULL,
3088                 .enum_list      = NULL,
3089                 .flags          = FLAG_ADVANCED,
3090         },
3091         {
3092                 .label          = "ldap machine suffix",
3093                 .type           = P_STRING,
3094                 .p_class        = P_GLOBAL,
3095                 .offset         = GLOBAL_VAR(szLdapMachineSuffix),
3096                 .special        = NULL,
3097                 .enum_list      = NULL,
3098                 .flags          = FLAG_ADVANCED,
3099         },
3100         {
3101                 .label          = "ldap passwd sync",
3102                 .type           = P_ENUM,
3103                 .p_class        = P_GLOBAL,
3104                 .offset         = GLOBAL_VAR(ldap_passwd_sync),
3105                 .special        = NULL,
3106                 .enum_list      = enum_ldap_passwd_sync,
3107                 .flags          = FLAG_ADVANCED,
3108         },
3109         {
3110                 .label          = "ldap password sync",
3111                 .type           = P_ENUM,
3112                 .p_class        = P_GLOBAL,
3113                 .offset         = GLOBAL_VAR(ldap_passwd_sync),
3114                 .special        = NULL,
3115                 .enum_list      = enum_ldap_passwd_sync,
3116                 .flags          = FLAG_HIDE,
3117         },
3118         {
3119                 .label          = "ldap replication sleep",
3120                 .type           = P_INTEGER,
3121                 .p_class        = P_GLOBAL,
3122                 .offset         = GLOBAL_VAR(ldap_replication_sleep),
3123                 .special        = NULL,
3124                 .enum_list      = NULL,
3125                 .flags          = FLAG_ADVANCED,
3126         },
3127         {
3128                 .label          = "ldap suffix",
3129                 .type           = P_STRING,
3130                 .p_class        = P_GLOBAL,
3131                 .offset         = GLOBAL_VAR(szLdapSuffix),
3132                 .special        = NULL,
3133                 .enum_list      = NULL,
3134                 .flags          = FLAG_ADVANCED,
3135         },
3136         {
3137                 .label          = "ldap ssl",
3138                 .type           = P_ENUM,
3139                 .p_class        = P_GLOBAL,
3140                 .offset         = GLOBAL_VAR(ldap_ssl),
3141                 .special        = NULL,
3142                 .enum_list      = enum_ldap_ssl,
3143                 .flags          = FLAG_ADVANCED,
3144         },
3145         {
3146                 .label          = "ldap ssl ads",
3147                 .type           = P_BOOL,
3148                 .p_class        = P_GLOBAL,
3149                 .offset         = GLOBAL_VAR(ldap_ssl_ads),
3150                 .special        = NULL,
3151                 .enum_list      = NULL,
3152                 .flags          = FLAG_ADVANCED,
3153         },
3154         {
3155                 .label          = "ldap deref",
3156                 .type           = P_ENUM,
3157                 .p_class        = P_GLOBAL,
3158                 .offset         = GLOBAL_VAR(ldap_deref),
3159                 .special        = NULL,
3160                 .enum_list      = enum_ldap_deref,
3161                 .flags          = FLAG_ADVANCED,
3162         },
3163         {
3164                 .label          = "ldap follow referral",
3165                 .type           = P_ENUM,
3166                 .p_class        = P_GLOBAL,
3167                 .offset         = GLOBAL_VAR(ldap_follow_referral),
3168                 .special        = NULL,
3169                 .enum_list      = enum_bool_auto,
3170                 .flags          = FLAG_ADVANCED,
3171         },
3172         {
3173                 .label          = "ldap timeout",
3174                 .type           = P_INTEGER,
3175                 .p_class        = P_GLOBAL,
3176                 .offset         = GLOBAL_VAR(ldap_timeout),
3177                 .special        = NULL,
3178                 .enum_list      = NULL,
3179                 .flags          = FLAG_ADVANCED,
3180         },
3181         {
3182                 .label          = "ldap connection timeout",
3183                 .type           = P_INTEGER,
3184                 .p_class        = P_GLOBAL,
3185                 .offset         = GLOBAL_VAR(ldap_connection_timeout),
3186                 .special        = NULL,
3187                 .enum_list      = NULL,
3188                 .flags          = FLAG_ADVANCED,
3189         },
3190         {
3191                 .label          = "ldap page size",
3192                 .type           = P_INTEGER,
3193                 .p_class        = P_GLOBAL,
3194                 .offset         = GLOBAL_VAR(ldap_page_size),
3195                 .special        = NULL,
3196                 .enum_list      = NULL,
3197                 .flags          = FLAG_ADVANCED,
3198         },
3199         {
3200                 .label          = "ldap user suffix",
3201                 .type           = P_STRING,
3202                 .p_class        = P_GLOBAL,
3203                 .offset         = GLOBAL_VAR(szLdapUserSuffix),
3204                 .special        = NULL,
3205                 .enum_list      = NULL,
3206                 .flags          = FLAG_ADVANCED,
3207         },
3208         {
3209                 .label          = "ldap debug level",
3210                 .type           = P_INTEGER,
3211                 .p_class        = P_GLOBAL,
3212                 .offset         = GLOBAL_VAR(ldap_debug_level),
3213                 .special        = handle_ldap_debug_level,
3214                 .enum_list      = NULL,
3215                 .flags          = FLAG_ADVANCED,
3216         },
3217         {
3218                 .label          = "ldap debug threshold",
3219                 .type           = P_INTEGER,
3220                 .p_class        = P_GLOBAL,
3221                 .offset         = GLOBAL_VAR(ldap_debug_threshold),
3222                 .special        = NULL,
3223                 .enum_list      = NULL,
3224                 .flags          = FLAG_ADVANCED,
3225         },
3226
3227         {N_("EventLog Options"), P_SEP, P_SEPARATOR},
3228
3229         {
3230                 .label          = "eventlog list",
3231                 .type           = P_LIST,
3232                 .p_class        = P_GLOBAL,
3233                 .offset         = GLOBAL_VAR(szEventLogs),
3234                 .special        = NULL,
3235                 .enum_list      = NULL,
3236                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
3237         },
3238
3239         {N_("Miscellaneous Options"), P_SEP, P_SEPARATOR},
3240
3241         {
3242                 .label          = "add share command",
3243                 .type           = P_STRING,
3244                 .p_class        = P_GLOBAL,
3245                 .offset         = GLOBAL_VAR(szAddShareCommand),
3246                 .special        = NULL,
3247                 .enum_list      = NULL,
3248                 .flags          = FLAG_ADVANCED,
3249         },
3250         {
3251                 .label          = "change share command",
3252                 .type           = P_STRING,
3253                 .p_class        = P_GLOBAL,
3254                 .offset         = GLOBAL_VAR(szChangeShareCommand),
3255                 .special        = NULL,
3256                 .enum_list      = NULL,
3257                 .flags          = FLAG_ADVANCED,
3258         },
3259         {
3260                 .label          = "delete share command",
3261                 .type           = P_STRING,
3262                 .p_class        = P_GLOBAL,
3263                 .offset         = GLOBAL_VAR(szDeleteShareCommand),
3264                 .special        = NULL,
3265                 .enum_list      = NULL,
3266                 .flags          = FLAG_ADVANCED,
3267         },
3268         {
3269                 .label          = "config file",
3270                 .type           = P_STRING,
3271                 .p_class        = P_GLOBAL,
3272                 .offset         = GLOBAL_VAR(szConfigFile),
3273                 .special        = NULL,
3274                 .enum_list      = NULL,
3275                 .flags          = FLAG_HIDE|FLAG_META,
3276         },
3277         {
3278                 .label          = "preload",
3279                 .type           = P_STRING,
3280                 .p_class        = P_GLOBAL,
3281                 .offset         = GLOBAL_VAR(szAutoServices),
3282                 .special        = NULL,
3283                 .enum_list      = NULL,
3284                 .flags          = FLAG_ADVANCED,
3285         },
3286         {
3287                 .label          = "auto services",
3288                 .type           = P_STRING,
3289                 .p_class        = P_GLOBAL,
3290                 .offset         = GLOBAL_VAR(szAutoServices),
3291                 .special        = NULL,
3292                 .enum_list      = NULL,
3293                 .flags          = FLAG_ADVANCED,
3294         },
3295         {
3296                 .label          = "lock directory",
3297                 .type           = P_STRING,
3298                 .p_class        = P_GLOBAL,
3299                 .offset         = GLOBAL_VAR(szLockDir),
3300                 .special        = NULL,
3301                 .enum_list      = NULL,
3302                 .flags          = FLAG_ADVANCED,
3303         },
3304         {
3305                 .label          = "lock dir",
3306                 .type           = P_STRING,
3307                 .p_class        = P_GLOBAL,
3308                 .offset         = GLOBAL_VAR(szLockDir),
3309                 .special        = NULL,
3310                 .enum_list      = NULL,
3311                 .flags          = FLAG_HIDE,
3312         },
3313         {
3314                 .label          = "state directory",
3315                 .type           = P_STRING,
3316                 .p_class        = P_GLOBAL,
3317                 .offset         = GLOBAL_VAR(szStateDir),
3318                 .special        = NULL,
3319                 .enum_list      = NULL,
3320                 .flags          = FLAG_ADVANCED,
3321         },
3322         {
3323                 .label          = "cache directory",
3324                 .type           = P_STRING,
3325                 .p_class        = P_GLOBAL,
3326                 .offset         = GLOBAL_VAR(szCacheDir),
3327                 .special        = NULL,
3328                 .enum_list      = NULL,
3329                 .flags          = FLAG_ADVANCED,
3330         },
3331         {
3332                 .label          = "pid directory",
3333                 .type           = P_STRING,
3334                 .p_class        = P_GLOBAL,
3335                 .offset         = GLOBAL_VAR(szPidDir),
3336                 .special        = NULL,
3337                 .enum_list      = NULL,
3338                 .flags          = FLAG_ADVANCED,
3339         },
3340         {
3341                 .label          = "ntp signd socket directory",
3342                 .type           = P_STRING,
3343                 .p_class        = P_GLOBAL,
3344                 .offset         = GLOBAL_VAR(szNTPSignDSocketDirectory),
3345                 .special        = NULL,
3346                 .enum_list      = NULL,
3347                 .flags          = FLAG_ADVANCED,
3348         },
3349
3350 #ifdef WITH_UTMP
3351         {
3352                 .label          = "utmp directory",
3353                 .type           = P_STRING,
3354                 .p_class        = P_GLOBAL,
3355                 .offset         = GLOBAL_VAR(szUtmpDir),
3356                 .special        = NULL,
3357                 .enum_list      = NULL,
3358                 .flags          = FLAG_ADVANCED,
3359         },
3360         {
3361                 .label          = "wtmp directory",
3362                 .type           = P_STRING,
3363                 .p_class        = P_GLOBAL,
3364                 .offset         = GLOBAL_VAR(szWtmpDir),
3365                 .special        = NULL,
3366                 .enum_list      = NULL,
3367                 .flags          = FLAG_ADVANCED,
3368         },
3369         {
3370                 .label          = "utmp",
3371                 .type           = P_BOOL,
3372                 .p_class        = P_GLOBAL,
3373                 .offset         = GLOBAL_VAR(bUtmp),
3374                 .special        = NULL,
3375                 .enum_list      = NULL,
3376                 .flags          = FLAG_ADVANCED,
3377         },
3378 #endif
3379         {
3380                 .label          = "default service",
3381                 .type           = P_STRING,
3382                 .p_class        = P_GLOBAL,
3383                 .offset         = GLOBAL_VAR(szDefaultService),
3384                 .special        = NULL,
3385                 .enum_list      = NULL,
3386                 .flags          = FLAG_ADVANCED,
3387         },
3388         {
3389                 .label          = "default",
3390                 .type           = P_STRING,
3391                 .p_class        = P_GLOBAL,
3392                 .offset         = GLOBAL_VAR(szDefaultService),
3393                 .special        = NULL,
3394                 .enum_list      = NULL,
3395                 .flags          = FLAG_ADVANCED,
3396         },
3397         {
3398                 .label          = "message command",
3399                 .type           = P_STRING,
3400                 .p_class        = P_GLOBAL,
3401                 .offset         = GLOBAL_VAR(szMsgCommand),
3402                 .special        = NULL,
3403                 .enum_list      = NULL,
3404                 .flags          = FLAG_ADVANCED,
3405         },
3406         {
3407                 .label          = "dfree cache time",
3408                 .type           = P_INTEGER,
3409                 .p_class        = P_LOCAL,
3410                 .offset         = LOCAL_VAR(iDfreeCacheTime),
3411                 .special        = NULL,
3412                 .enum_list      = NULL,
3413                 .flags          = FLAG_ADVANCED,
3414         },
3415         {
3416                 .label          = "dfree command",
3417                 .type           = P_STRING,
3418                 .p_class        = P_LOCAL,
3419                 .offset         = LOCAL_VAR(szDfree),
3420                 .special        = NULL,
3421                 .enum_list      = NULL,
3422                 .flags          = FLAG_ADVANCED,
3423         },
3424         {
3425                 .label          = "get quota command",
3426                 .type           = P_STRING,
3427                 .p_class        = P_GLOBAL,
3428                 .offset         = GLOBAL_VAR(szGetQuota),
3429                 .special        = NULL,
3430                 .enum_list      = NULL,
3431                 .flags          = FLAG_ADVANCED,
3432         },
3433         {
3434                 .label          = "set quota command",
3435                 .type           = P_STRING,
3436                 .p_class        = P_GLOBAL,
3437                 .offset         = GLOBAL_VAR(szSetQuota),
3438                 .special        = NULL,
3439                 .enum_list      = NULL,
3440                 .flags          = FLAG_ADVANCED,
3441         },
3442         {
3443                 .label          = "remote announce",
3444                 .type           = P_STRING,
3445                 .p_class        = P_GLOBAL,
3446                 .offset         = GLOBAL_VAR(szRemoteAnnounce),
3447                 .special        = NULL,
3448                 .enum_list      = NULL,
3449                 .flags          = FLAG_ADVANCED,
3450         },
3451         {
3452                 .label          = "remote browse sync",
3453                 .type           = P_STRING,
3454                 .p_class        = P_GLOBAL,
3455                 .offset         = GLOBAL_VAR(szRemoteBrowseSync),
3456                 .special        = NULL,
3457                 .enum_list      = NULL,
3458                 .flags          = FLAG_ADVANCED,
3459         },
3460         {
3461                 .label          = "nbt client socket address",
3462                 .type           = P_STRING,
3463                 .p_class        = P_GLOBAL,
3464                 .offset         = GLOBAL_VAR(nbt_client_socket_address),
3465                 .special        = NULL,
3466                 .enum_list      = NULL,
3467                 .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
3468         },
3469         {
3470                 .label          = "socket address",
3471                 .type           = P_STRING,
3472                 .p_class        = P_GLOBAL,
3473                 .offset         = GLOBAL_VAR(nbt_client_socket_address),
3474                 .special        = NULL,
3475                 .enum_list      = NULL,
3476                 .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
3477         },
3478         {
3479                 .label          = "nmbd bind explicit broadcast",
3480                 .type           = P_BOOL,
3481                 .p_class        = P_GLOBAL,
3482                 .offset         = GLOBAL_VAR(bNmbdBindExplicitBroadcast),
3483                 .special        = NULL,
3484                 .enum_list      = NULL,
3485                 .flags          = FLAG_ADVANCED,
3486         },
3487         {
3488                 .label          = "homedir map",
3489                 .type           = P_STRING,
3490                 .p_class        = P_GLOBAL,
3491                 .offset         = GLOBAL_VAR(szNISHomeMapName),
3492                 .special        = NULL,
3493                 .enum_list      = NULL,
3494                 .flags          = FLAG_ADVANCED,
3495         },
3496         {
3497                 .label          = "afs username map",
3498                 .type           = P_STRING,
3499                 .p_class        = P_GLOBAL,
3500                 .offset         = GLOBAL_VAR(szAfsUsernameMap),
3501                 .special        = NULL,
3502                 .enum_list      = NULL,
3503                 .flags          = FLAG_ADVANCED,
3504         },
3505         {
3506                 .label          = "afs token lifetime",
3507                 .type           = P_INTEGER,
3508                 .p_class        = P_GLOBAL,
3509                 .offset         = GLOBAL_VAR(iAfsTokenLifetime),
3510                 .special        = NULL,
3511                 .enum_list      = NULL,
3512                 .flags          = FLAG_ADVANCED,
3513         },
3514         {
3515                 .label          = "log nt token command",
3516                 .type           = P_STRING,
3517                 .p_class        = P_GLOBAL,
3518                 .offset         = GLOBAL_VAR(szLogNtTokenCommand),
3519                 .special        = NULL,
3520                 .enum_list      = NULL,
3521                 .flags          = FLAG_ADVANCED,
3522         },
3523         {
3524                 .label          = "NIS homedir",
3525                 .type           = P_BOOL,
3526                 .p_class        = P_GLOBAL,
3527                 .offset         = GLOBAL_VAR(bNISHomeMap),
3528                 .special        = NULL,
3529                 .enum_list      = NULL,
3530                 .flags          = FLAG_ADVANCED,
3531         },
3532         {
3533                 .label          = "-valid",
3534                 .type           = P_BOOL,
3535                 .p_class        = P_LOCAL,
3536                 .offset         = LOCAL_VAR(valid),
3537                 .special        = NULL,
3538                 .enum_list      = NULL,
3539                 .flags          = FLAG_HIDE,
3540         },
3541         {
3542                 .label          = "copy",
3543                 .type           = P_STRING,
3544                 .p_class        = P_LOCAL,
3545                 .offset         = LOCAL_VAR(szCopy),
3546                 .special        = handle_copy,
3547                 .enum_list      = NULL,
3548                 .flags          = FLAG_HIDE,
3549         },
3550         {
3551                 .label          = "include",
3552                 .type           = P_STRING,
3553                 .p_class        = P_LOCAL,
3554                 .offset         = LOCAL_VAR(szInclude),
3555                 .special        = handle_include,
3556                 .enum_list      = NULL,
3557                 .flags          = FLAG_HIDE|FLAG_META,
3558         },
3559         {
3560                 .label          = "preexec",
3561                 .type           = P_STRING,
3562                 .p_class        = P_LOCAL,
3563                 .offset         = LOCAL_VAR(szPreExec),
3564                 .special        = NULL,
3565                 .enum_list      = NULL,
3566                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
3567         },
3568         {
3569                 .label          = "exec",
3570                 .type           = P_STRING,
3571                 .p_class        = P_LOCAL,
3572                 .offset         = LOCAL_VAR(szPreExec),
3573                 .special        = NULL,
3574                 .enum_list      = NULL,
3575                 .flags          = FLAG_ADVANCED,
3576         },
3577         {
3578                 .label          = "preexec close",
3579                 .type           = P_BOOL,
3580                 .p_class        = P_LOCAL,
3581                 .offset         = LOCAL_VAR(bPreexecClose),
3582                 .special        = NULL,
3583                 .enum_list      = NULL,
3584                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
3585         },
3586         {
3587                 .label          = "postexec",
3588                 .type           = P_STRING,
3589                 .p_class        = P_LOCAL,
3590                 .offset         = LOCAL_VAR(szPostExec),
3591                 .special        = NULL,
3592                 .enum_list      = NULL,
3593                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
3594         },
3595         {
3596                 .label          = "root preexec",
3597                 .type           = P_STRING,
3598                 .p_class        = P_LOCAL,
3599                 .offset         = LOCAL_VAR(szRootPreExec),
3600                 .special        = NULL,
3601                 .enum_list      = NULL,
3602                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
3603         },
3604         {
3605                 .label          = "root preexec close",
3606                 .type           = P_BOOL,
3607                 .p_class        = P_LOCAL,
3608                 .offset         = LOCAL_VAR(bRootpreexecClose),
3609                 .special        = NULL,
3610                 .enum_list      = NULL,
3611                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
3612         },
3613         {
3614                 .label          = "root postexec",
3615                 .type           = P_STRING,
3616                 .p_class        = P_LOCAL,
3617                 .offset         = LOCAL_VAR(szRootPostExec),
3618                 .special        = NULL,
3619                 .enum_list      = NULL,
3620                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
3621         },
3622         {
3623                 .label          = "available",
3624                 .type           = P_BOOL,
3625                 .p_class        = P_LOCAL,
3626                 .offset         = LOCAL_VAR(bAvailable),
3627                 .special        = NULL,
3628                 .enum_list      = NULL,
3629                 .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
3630         },
3631         {
3632                 .label          = "registry shares",
3633                 .type           = P_BOOL,
3634                 .p_class        = P_GLOBAL,
3635                 .offset         = GLOBAL_VAR(bRegistryShares),
3636                 .special        = NULL,
3637                 .enum_list      = NULL,
3638                 .flags          = FLAG_ADVANCED,
3639         },
3640         {
3641                 .label          = "usershare allow guests",
3642                 .type           = P_BOOL,
3643                 .p_class        = P_GLOBAL,
3644                 .offset         = GLOBAL_VAR(bUsershareAllowGuests),
3645                 .special        = NULL,
3646                 .enum_list      = NULL,
3647                 .flags          = FLAG_ADVANCED,
3648         },
3649         {
3650                 .label          = "usershare max shares",
3651                 .type           = P_INTEGER,
3652                 .p_class        = P_GLOBAL,
3653                 .offset         = GLOBAL_VAR(iUsershareMaxShares),
3654                 .special        = NULL,
3655                 .enum_list      = NULL,
3656                 .flags          = FLAG_ADVANCED,
3657         },
3658         {
3659                 .label          = "usershare owner only",
3660                 .type           = P_BOOL,
3661                 .p_class        = P_GLOBAL,
3662                 .offset         = GLOBAL_VAR(bUsershareOwnerOnly),
3663                 .special        = NULL,
3664                 .enum_list      = NULL,
3665                 .flags          = FLAG_ADVANCED,
3666         },
3667         {
3668                 .label          = "usershare path",
3669                 .type           = P_STRING,
3670                 .p_class        = P_GLOBAL,
3671                 .offset         = GLOBAL_VAR(szUsersharePath),
3672                 .special        = NULL,
3673                 .enum_list      = NULL,
3674                 .flags          = FLAG_ADVANCED,
3675         },
3676         {
3677                 .label          = "usershare prefix allow list",
3678                 .type           = P_LIST,
3679                 .p_class        = P_GLOBAL,
3680                 .offset         = GLOBAL_VAR(szUsersharePrefixAllowList),
3681                 .special        = NULL,
3682                 .enum_list      = NULL,
3683                 .flags          = FLAG_ADVANCED,
3684         },
3685         {
3686                 .label          = "usershare prefix deny list",
3687                 .type           = P_LIST,
3688                 .p_class        = P_GLOBAL,
3689                 .offset         = GLOBAL_VAR(szUsersharePrefixDenyList),
3690                 .special        = NULL,
3691                 .enum_list      = NULL,
3692                 .flags          = FLAG_ADVANCED,
3693         },
3694         {
3695                 .label          = "usershare template share",
3696                 .type           = P_STRING,
3697                 .p_class        = P_GLOBAL,
3698                 .offset         = GLOBAL_VAR(szUsershareTemplateShare),
3699                 .special        = NULL,
3700                 .enum_list      = NULL,
3701                 .flags          = FLAG_ADVANCED,
3702         },
3703         {
3704                 .label          = "volume",
3705                 .type           = P_STRING,
3706                 .p_class        = P_LOCAL,
3707                 .offset         = LOCAL_VAR(volume),
3708                 .special        = NULL,
3709                 .enum_list      = NULL,
3710                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
3711         },
3712         {
3713                 .label          = "fstype",
3714                 .type           = P_STRING,
3715                 .p_class        = P_LOCAL,
3716                 .offset         = LOCAL_VAR(fstype),
3717                 .special        = NULL,
3718                 .enum_list      = NULL,
3719                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
3720         },
3721         {
3722                 .label          = "allow insecure wide links",
3723                 .type           = P_BOOL,
3724                 .p_class        = P_GLOBAL,
3725                 .offset         = GLOBAL_VAR(bAllowInsecureWidelinks),
3726                 .special        = NULL,
3727                 .enum_list      = NULL,
3728                 .flags          = FLAG_ADVANCED,
3729         },
3730         {
3731                 .label          = "wide links",
3732                 .type           = P_BOOL,
3733                 .p_class        = P_LOCAL,
3734                 .offset         = LOCAL_VAR(bWidelinks),
3735                 .special        = NULL,
3736                 .enum_list      = NULL,
3737                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3738         },
3739         {
3740                 .label          = "follow symlinks",
3741                 .type           = P_BOOL,
3742                 .p_class        = P_LOCAL,
3743                 .offset         = LOCAL_VAR(bSymlinks),
3744                 .special        = NULL,
3745                 .enum_list      = NULL,
3746                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3747         },
3748         {
3749                 .label          = "dont descend",
3750                 .type           = P_STRING,
3751                 .p_class        = P_LOCAL,
3752                 .offset         = LOCAL_VAR(szDontdescend),
3753                 .special        = NULL,
3754                 .enum_list      = NULL,
3755                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
3756         },
3757         {
3758                 .label          = "magic script",
3759                 .type           = P_STRING,
3760                 .p_class        = P_LOCAL,
3761                 .offset         = LOCAL_VAR(szMagicScript),
3762                 .special        = NULL,
3763                 .enum_list      = NULL,
3764                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
3765         },
3766         {
3767                 .label          = "magic output",
3768                 .type           = P_STRING,
3769                 .p_class        = P_LOCAL,
3770                 .offset         = LOCAL_VAR(szMagicOutput),
3771                 .special        = NULL,
3772                 .enum_list      = NULL,
3773                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
3774         },
3775         {
3776                 .label          = "delete readonly",
3777                 .type           = P_BOOL,
3778                 .p_class        = P_LOCAL,
3779                 .offset         = LOCAL_VAR(bDeleteReadonly),
3780                 .special        = NULL,
3781                 .enum_list      = NULL,
3782                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3783         },
3784         {
3785                 .label          = "dos filemode",
3786                 .type           = P_BOOL,
3787                 .p_class        = P_LOCAL,
3788                 .offset         = LOCAL_VAR(bDosFilemode),
3789                 .special        = NULL,
3790                 .enum_list      = NULL,
3791                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3792         },
3793         {
3794                 .label          = "dos filetimes",
3795                 .type           = P_BOOL,
3796                 .p_class        = P_LOCAL,
3797                 .offset         = LOCAL_VAR(bDosFiletimes),
3798                 .special        = NULL,
3799                 .enum_list      = NULL,
3800                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3801         },
3802         {
3803                 .label          = "dos filetime resolution",
3804                 .type           = P_BOOL,
3805                 .p_class        = P_LOCAL,
3806                 .offset         = LOCAL_VAR(bDosFiletimeResolution),
3807                 .special        = NULL,
3808                 .enum_list      = NULL,
3809                 .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
3810         },
3811         {
3812                 .label          = "fake directory create times",
3813                 .type           = P_BOOL,
3814                 .p_class        = P_LOCAL,
3815                 .offset         = LOCAL_VAR(bFakeDirCreateTimes),
3816                 .special        = NULL,
3817                 .enum_list      = NULL,
3818                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
3819         },
3820         {
3821                 .label          = "async smb echo handler",
3822                 .type           = P_BOOL,
3823                 .p_class        = P_GLOBAL,
3824                 .offset         = GLOBAL_VAR(bAsyncSMBEchoHandler),
3825                 .special        = NULL,
3826                 .enum_list      = NULL,
3827                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
3828         },
3829         {
3830                 .label          = "panic action",
3831                 .type           = P_STRING,
3832                 .p_class        = P_GLOBAL,
3833                 .offset         = GLOBAL_VAR(szPanicAction),
3834                 .special        = NULL,
3835                 .enum_list      = NULL,
3836                 .flags          = FLAG_ADVANCED,
3837         },
3838         {
3839                 .label          = "perfcount module",
3840                 .type           = P_STRING,
3841                 .p_class        = P_GLOBAL,
3842                 .offset         = GLOBAL_VAR(szSMBPerfcountModule),
3843                 .special        = NULL,
3844                 .enum_list      = NULL,
3845                 .flags          = FLAG_ADVANCED,
3846         },
3847
3848         {N_("VFS module options"), P_SEP, P_SEPARATOR},
3849
3850         {
3851                 .label          = "vfs objects",
3852                 .type           = P_LIST,
3853                 .p_class        = P_LOCAL,
3854                 .offset         = LOCAL_VAR(szVfsObjects),
3855                 .special        = NULL,
3856                 .enum_list      = NULL,
3857                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
3858         },
3859         {
3860                 .label          = "vfs object",
3861                 .type           = P_LIST,
3862                 .p_class        = P_LOCAL,
3863                 .offset         = LOCAL_VAR(szVfsObjects),
3864                 .special        = NULL,
3865                 .enum_list      = NULL,
3866                 .flags          = FLAG_HIDE,
3867         },
3868
3869
3870         {N_("MSDFS options"), P_SEP, P_SEPARATOR},
3871
3872         {
3873                 .label          = "msdfs root",
3874                 .type           = P_BOOL,
3875                 .p_class        = P_LOCAL,
3876                 .offset         = LOCAL_VAR(bMSDfsRoot),
3877                 .special        = NULL,
3878                 .enum_list      = NULL,
3879                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
3880         },
3881         {
3882                 .label          = "msdfs proxy",
3883                 .type           = P_STRING,
3884                 .p_class        = P_LOCAL,
3885                 .offset         = LOCAL_VAR(szMSDfsProxy),
3886                 .special        = NULL,
3887                 .enum_list      = NULL,
3888                 .flags          = FLAG_ADVANCED | FLAG_SHARE,
3889         },
3890         {
3891                 .label          = "host msdfs",
3892                 .type           = P_BOOL,
3893                 .p_class        = P_GLOBAL,
3894                 .offset         = GLOBAL_VAR(bHostMSDfs),
3895                 .special        = NULL,
3896                 .enum_list      = NULL,
3897                 .flags          = FLAG_ADVANCED,
3898         },
3899
3900         {N_("Winbind options"), P_SEP, P_SEPARATOR},
3901
3902         {
3903                 .label          = "passdb expand explicit",
3904                 .type           = P_BOOL,
3905                 .p_class        = P_GLOBAL,
3906                 .offset         = GLOBAL_VAR(bPassdbExpandExplicit),
3907                 .special        = NULL,
3908                 .enum_list      = NULL,
3909                 .flags          = FLAG_ADVANCED,
3910         },
3911         {
3912                 .label          = "idmap backend",
3913                 .type           = P_STRING,
3914                 .p_class        = P_GLOBAL,
3915                 .offset         = GLOBAL_VAR(szIdmapBackend),
3916                 .special        = handle_idmap_backend,
3917                 .enum_list      = NULL,
3918                 .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
3919         },
3920         {
3921                 .label          = "idmap cache time",
3922                 .type           = P_INTEGER,
3923                 .p_class        = P_GLOBAL,
3924                 .offset         = GLOBAL_VAR(iIdmapCacheTime),
3925                 .special        = NULL,
3926                 .enum_list      = NULL,
3927                 .flags          = FLAG_ADVANCED,
3928         },
3929         {
3930                 .label          = "idmap negative cache time",
3931                 .type           = P_INTEGER,
3932                 .p_class        = P_GLOBAL,
3933                 .offset         = GLOBAL_VAR(iIdmapNegativeCacheTime),
3934                 .special        = NULL,
3935                 .enum_list      = NULL,
3936                 .flags          = FLAG_ADVANCED,
3937         },
3938         {
3939                 .label          = "idmap uid",
3940                 .type           = P_STRING,
3941                 .p_class        = P_GLOBAL,
3942                 .offset         = GLOBAL_VAR(szIdmapUID),
3943                 .special        = handle_idmap_uid,
3944                 .enum_list      = NULL,
3945                 .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
3946         },
3947         {
3948                 .label          = "winbind uid",
3949                 .type           = P_STRING,
3950                 .p_class        = P_GLOBAL,
3951                 .offset         = GLOBAL_VAR(szIdmapUID),
3952                 .special        = handle_idmap_uid,
3953                 .enum_list      = NULL,
3954                 .flags          = FLAG_HIDE,
3955         },
3956         {
3957                 .label          = "idmap gid",
3958                 .type           = P_STRING,
3959                 .p_class        = P_GLOBAL,
3960                 .offset         = GLOBAL_VAR(szIdmapGID),
3961                 .special        = handle_idmap_gid,
3962                 .enum_list      = NULL,
3963                 .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
3964         },
3965         {
3966                 .label          = "winbind gid",
3967                 .type           = P_STRING,
3968                 .p_class        = P_GLOBAL,
3969                 .offset         = GLOBAL_VAR(szIdmapGID),
3970                 .special        = handle_idmap_gid,
3971                 .enum_list      = NULL,
3972                 .flags          = FLAG_HIDE,
3973         },
3974         {
3975                 .label          = "template homedir",
3976                 .type           = P_STRING,
3977                 .p_class        = P_GLOBAL,
3978                 .offset         = GLOBAL_VAR(szTemplateHomedir),
3979                 .special        = NULL,
3980                 .enum_list      = NULL,
3981                 .flags          = FLAG_ADVANCED,
3982         },
3983         {
3984                 .label          = "template shell",
3985                 .type           = P_STRING,
3986                 .p_class        = P_GLOBAL,
3987                 .offset         = GLOBAL_VAR(szTemplateShell),
3988                 .special        = NULL,
3989                 .enum_list      = NULL,
3990                 .flags          = FLAG_ADVANCED,
3991         },
3992         {
3993                 .label          = "winbind separator",
3994                 .type           = P_STRING,
3995                 .p_class        = P_GLOBAL,
3996                 .offset         = GLOBAL_VAR(szWinbindSeparator),
3997                 .special        = NULL,
3998                 .enum_list      = NULL,
3999                 .flags          = FLAG_ADVANCED,
4000         },
4001         {
4002                 .label          = "winbind cache time",
4003                 .type           = P_INTEGER,
4004                 .p_class        = P_GLOBAL,
4005                 .offset         = GLOBAL_VAR(winbind_cache_time),
4006                 .special        = NULL,
4007                 .enum_list      = NULL,
4008                 .flags          = FLAG_ADVANCED,
4009         },
4010         {
4011                 .label          = "winbind reconnect delay",
4012                 .type           = P_INTEGER,
4013                 .p_class        = P_GLOBAL,
4014                 .offset         = GLOBAL_VAR(winbind_reconnect_delay),
4015                 .special        = NULL,
4016                 .enum_list      = NULL,
4017                 .flags          = FLAG_ADVANCED,
4018         },
4019         {
4020                 .label          = "winbind max clients",
4021                 .type           = P_INTEGER,
4022                 .p_class        = P_GLOBAL,
4023                 .offset         = GLOBAL_VAR(winbind_max_clients),
4024                 .special        = NULL,
4025                 .enum_list      = NULL,
4026                 .flags          = FLAG_ADVANCED,
4027         },
4028         {
4029                 .label          = "winbind enum users",
4030                 .type           = P_BOOL,
4031                 .p_class        = P_GLOBAL,
4032                 .offset         = GLOBAL_VAR(bWinbindEnumUsers),
4033                 .special        = NULL,
4034                 .enum_list      = NULL,
4035                 .flags          = FLAG_ADVANCED,
4036         },
4037         {
4038                 .label          = "winbind enum groups",
4039                 .type           = P_BOOL,
4040                 .p_class        = P_GLOBAL,
4041                 .offset         = GLOBAL_VAR(bWinbindEnumGroups),
4042                 .special        = NULL,
4043                 .enum_list      = NULL,
4044                 .flags          = FLAG_ADVANCED,
4045         },
4046         {
4047                 .label          = "winbind use default domain",
4048                 .type           = P_BOOL,
4049                 .p_class        = P_GLOBAL,
4050                 .offset         = GLOBAL_VAR(bWinbindUseDefaultDomain),
4051                 .special        = NULL,
4052                 .enum_list      = NULL,
4053                 .flags          = FLAG_ADVANCED,
4054         },
4055         {
4056                 .label          = "winbind trusted domains only",
4057                 .type           = P_BOOL,
4058                 .p_class        = P_GLOBAL,
4059                 .offset         = GLOBAL_VAR(bWinbindTrustedDomainsOnly),
4060                 .special        = NULL,
4061                 .enum_list      = NULL,
4062                 .flags          = FLAG_ADVANCED,
4063         },
4064         {
4065                 .label          = "winbind nested groups",
4066                 .type           = P_BOOL,
4067                 .p_class        = P_GLOBAL,
4068                 .offset         = GLOBAL_VAR(bWinbindNestedGroups),
4069                 .special        = NULL,
4070                 .enum_list      = NULL,
4071                 .flags          = FLAG_ADVANCED,
4072         },
4073         {
4074                 .label          = "winbind expand groups",
4075                 .type           = P_INTEGER,
4076                 .p_class        = P_GLOBAL,
4077                 .offset         = GLOBAL_VAR(winbind_expand_groups),
4078                 .special        = NULL,
4079                 .enum_list      = NULL,
4080                 .flags          = FLAG_ADVANCED,
4081         },
4082         {
4083                 .label          = "winbind nss info",
4084                 .type           = P_LIST,
4085                 .p_class        = P_GLOBAL,
4086                 .offset         = GLOBAL_VAR(szWinbindNssInfo),
4087                 .special        = NULL,
4088                 .enum_list      = NULL,
4089                 .flags          = FLAG_ADVANCED,
4090         },
4091         {
4092                 .label          = "winbind refresh tickets",
4093                 .type           = P_BOOL,
4094                 .p_class        = P_GLOBAL,
4095                 .offset         = GLOBAL_VAR(bWinbindRefreshTickets),
4096                 .special        = NULL,
4097                 .enum_list      = NULL,
4098                 .flags          = FLAG_ADVANCED,
4099         },
4100         {
4101                 .label          = "winbind offline logon",
4102                 .type           = P_BOOL,
4103                 .p_class        = P_GLOBAL,
4104                 .offset         = GLOBAL_VAR(bWinbindOfflineLogon),
4105                 .special        = NULL,
4106                 .enum_list      = NULL,
4107                 .flags          = FLAG_ADVANCED,
4108         },
4109         {
4110                 .label          = "winbind normalize names",
4111                 .type           = P_BOOL,
4112                 .p_class        = P_GLOBAL,
4113                 .offset         = GLOBAL_VAR(bWinbindNormalizeNames),
4114                 .special        = NULL,
4115                 .enum_list      = NULL,
4116                 .flags          = FLAG_ADVANCED,
4117         },
4118         {
4119                 .label          = "winbind rpc only",
4120                 .type           = P_BOOL,
4121                 .p_class        = P_GLOBAL,
4122                 .offset         = GLOBAL_VAR(bWinbindRpcOnly),
4123                 .special        = NULL,
4124                 .enum_list      = NULL,
4125                 .flags          = FLAG_ADVANCED,
4126         },
4127         {
4128                 .label          = "create krb5 conf",
4129                 .type           = P_BOOL,
4130                 .p_class        = P_GLOBAL,
4131                 .offset         = GLOBAL_VAR(bCreateKrb5Conf),
4132                 .special        = NULL,
4133                 .enum_list      = NULL,
4134                 .flags          = FLAG_ADVANCED,
4135         },
4136         {
4137                 .label          = "ncalrpc dir",
4138                 .type           = P_STRING,
4139                 .p_class        = P_GLOBAL,
4140                 .offset         = GLOBAL_VAR(ncalrpc_dir),
4141                 .special        = NULL,
4142                 .enum_list      = NULL,
4143                 .flags          = FLAG_ADVANCED,
4144         },
4145         {
4146                 .label          = "winbind max domain connections",
4147                 .type           = P_INTEGER,
4148                 .p_class        = P_GLOBAL,
4149                 .offset         = GLOBAL_VAR(winbindMaxDomainConnections),
4150                 .special        = NULL,
4151                 .enum_list      = NULL,
4152                 .flags          = FLAG_ADVANCED,
4153         },
4154         {
4155                 .label          = "winbindd socket directory",
4156                 .type           = P_STRING,
4157                 .p_class        = P_GLOBAL,
4158                 .offset         = GLOBAL_VAR(szWinbinddSocketDirectory),
4159                 .special        = NULL,
4160                 .enum_list      = NULL,
4161                 .flags          = FLAG_ADVANCED,
4162         },
4163         {
4164                 .label          = "winbindd privileged socket directory",
4165                 .type           = P_STRING,
4166                 .p_class        = P_GLOBAL,
4167                 .offset         = GLOBAL_VAR(szWinbinddPrivilegedSocketDirectory),
4168                 .special        = NULL,
4169                 .enum_list      = NULL,
4170                 .flags          = FLAG_ADVANCED,
4171         },
4172         {
4173                 .label          = "winbind sealed pipes",
4174                 .type           = P_BOOL,
4175                 .p_class        = P_GLOBAL,
4176                 .offset         = GLOBAL_VAR(bWinbindSealedPipes),
4177                 .special        = NULL,
4178                 .enum_list      = NULL,
4179                 .flags          = FLAG_ADVANCED,
4180         },
4181
4182         {N_("DNS options"), P_SEP, P_SEPARATOR},
4183         {
4184                 .label          = "allow dns updates",
4185                 .type           = P_ENUM,
4186                 .p_class        = P_GLOBAL,
4187                 .offset         = GLOBAL_VAR(allow_dns_updates),
4188                 .special        = NULL,
4189                 .enum_list      = enum_dns_update_settings,
4190                 .flags          = FLAG_ADVANCED,
4191         },
4192         {
4193                 .label          = "dns forwarder",
4194                 .type           = P_STRING,
4195                 .p_class        = P_GLOBAL,
4196                 .offset         = GLOBAL_VAR(dns_forwarder),
4197                 .special        = NULL,
4198                 .enum_list      = NULL,
4199                 .flags          = FLAG_ADVANCED,
4200         },
4201         {
4202                 .label          = "dns update command",
4203                 .type           = P_CMDLIST,
4204                 .p_class        = P_GLOBAL,
4205                 .offset         = GLOBAL_VAR(szDNSUpdateCommand),
4206                 .special        = NULL,
4207                 .enum_list      = NULL,
4208                 .flags          = FLAG_ADVANCED,
4209         },
4210         {
4211                 .label          = "nsupdate command",
4212                 .type           = P_CMDLIST,
4213                 .p_class        = P_GLOBAL,
4214                 .offset         = GLOBAL_VAR(szNSUpdateCommand),
4215                 .special        = NULL,
4216                 .enum_list      = NULL,
4217                 .flags          = FLAG_ADVANCED,
4218         },
4219         {
4220                 .label          = "rndc command",
4221                 .type           = P_CMDLIST,
4222                 .p_class        = P_GLOBAL,
4223                 .offset         = GLOBAL_VAR(szRNDCCommand),
4224                 .special        = NULL,
4225                 .enum_list      = NULL,
4226                 .flags          = FLAG_ADVANCED,
4227         },
4228         {
4229                 .label          = "multicast dns register",
4230                 .type           = P_BOOL,
4231                 .p_class        = P_GLOBAL,
4232                 .offset         = GLOBAL_VAR(bMulticastDnsRegister),
4233                 .special        = NULL,
4234                 .enum_list      = NULL,
4235                 .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
4236         },
4237
4238         {N_("AD DC options"), P_SEP, P_SEPARATOR},
4239
4240         {
4241                 .label          = "samba kcc command",
4242                 .type           = P_CMDLIST,
4243                 .p_class        = P_GLOBAL,
4244                 .offset         = GLOBAL_VAR(szSambaKCCCommand),
4245                 .special        = NULL,
4246                 .enum_list      = NULL,
4247                 .flags          = FLAG_ADVANCED,
4248         },
4249         {
4250                 .label          = "server services",
4251                 .type           = P_LIST,
4252                 .p_class        = P_GLOBAL,
4253                 .offset         = GLOBAL_VAR(server_services),
4254                 .special        = NULL,
4255                 .enum_list      = NULL
4256         },
4257         {
4258                 .label          = "dcerpc endpoint servers",
4259                 .type           = P_LIST,
4260                 .p_class        = P_GLOBAL,
4261                 .offset         = GLOBAL_VAR(dcerpc_ep_servers),
4262                 .special        = NULL,
4263                 .enum_list      = NULL
4264         },
4265         {
4266                 .label          = "spn update command",
4267                 .type           = P_CMDLIST,
4268                 .p_class        = P_GLOBAL,
4269                 .offset         = GLOBAL_VAR(szSPNUpdateCommand),
4270                 .special        = NULL,
4271                 .enum_list      = NULL,
4272                 .flags          = FLAG_ADVANCED,
4273         },
4274         {
4275                 .label          = "share backend",
4276                 .type           = P_STRING,
4277                 .p_class        = P_GLOBAL,
4278                 .offset         = GLOBAL_VAR(szShareBackend),
4279                 .special        = NULL,
4280                 .enum_list      = NULL
4281         },
4282         {
4283                 .label          = "ntvfs handler",
4284                 .type           = P_LIST,
4285                 .p_class        = P_LOCAL,
4286                 .offset         = LOCAL_VAR(ntvfs_handler),
4287                 .special        = NULL,
4288                 .enum_list      = NULL
4289         },
4290
4291         {N_("TLS options"), P_SEP, P_SEPARATOR},
4292
4293         {
4294                 .label          = "tls enabled",
4295                 .type           = P_BOOL,
4296                 .p_class        = P_GLOBAL,
4297                 .offset         = GLOBAL_VAR(tls_enabled),
4298                 .special        = NULL,
4299                 .enum_list      = NULL
4300         },
4301         {
4302                 .label          = "tls keyfile",
4303                 .type           = P_STRING,
4304                 .p_class        = P_GLOBAL,
4305                 .offset         = GLOBAL_VAR(tls_keyfile),
4306                 .special        = NULL,
4307                 .enum_list      = NULL
4308         },
4309         {
4310                 .label          = "tls certfile",
4311                 .type           = P_STRING,
4312                 .p_class        = P_GLOBAL,
4313                 .offset         = GLOBAL_VAR(tls_certfile),
4314                 .special        = NULL,
4315                 .enum_list      = NULL
4316         },
4317         {
4318                 .label          = "tls cafile",
4319                 .type           = P_STRING,
4320                 .p_class        = P_GLOBAL,
4321                 .offset         = GLOBAL_VAR(tls_cafile),
4322                 .special        = NULL,
4323                 .enum_list      = NULL
4324         },
4325         {
4326                 .label          = "tls crlfile",
4327                 .type           = P_STRING,
4328                 .p_class        = P_GLOBAL,
4329                 .offset         = GLOBAL_VAR(tls_crlfile),
4330                 .special        = NULL,
4331                 .enum_list      = NULL
4332         },
4333         {
4334                 .label          = "tls dh params file",
4335                 .type           = P_STRING,
4336                 .p_class        = P_GLOBAL,
4337                 .offset         = GLOBAL_VAR(tls_dhpfile),
4338                 .special        = NULL,
4339                 .enum_list      = NULL
4340         },
4341
4342         {NULL,  P_BOOL,  P_NONE,  0,  NULL,  NULL,  0}
4343 };
4344