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