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