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