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