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