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