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