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