bconfig.c 208 KB
Newer Older
Howard Chu's avatar
Howard Chu committed
1
2
3
4
/* bconfig.c - the config backend */
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
 *
Quanah Gibson-Mount's avatar
Quanah Gibson-Mount committed
5
 * Copyright 2005-2020 The OpenLDAP Foundation.
Howard Chu's avatar
Howard Chu committed
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted only as authorized by the OpenLDAP
 * Public License.
 *
 * A copy of this license is available in the file LICENSE in the
 * top-level directory of the distribution or, alternatively, at
 * <http://www.OpenLDAP.org/license.html>.
 */
/* ACKNOWLEDGEMENTS:
 * This work was originally developed by Howard Chu for inclusion
 * in OpenLDAP Software.
 */

#include "portable.h"

#include <stdio.h>
#include <ac/string.h>
25
26
#include <ac/ctype.h>
#include <ac/errno.h>
27
#include <sys/stat.h>
Howard Chu's avatar
Howard Chu committed
28
#include <ac/unistd.h>
Howard Chu's avatar
Howard Chu committed
29
30

#include "slap.h"
31
32
33
34
35

#ifdef LDAP_SLAPI
#include "slapi/slapi.h"
#endif

36
#include <ldif.h>
37
38
#include <lutil.h>

Howard Chu's avatar
Howard Chu committed
39
40
#include "config.h"

41
42
43
44
45
#define	CONFIG_RDN	"cn=config"
#define	SCHEMA_RDN	"cn=schema"

static struct berval config_rdn = BER_BVC(CONFIG_RDN);
static struct berval schema_rdn = BER_BVC(SCHEMA_RDN);
Howard Chu's avatar
Howard Chu committed
46

47
48
extern int slap_DN_strict;	/* dn.c */

49
50
51
52
53
54
#ifdef SLAPD_MODULES
typedef struct modpath_s {
	struct modpath_s *mp_next;
	struct berval mp_path;
	BerVarray mp_loads;
} ModPaths;
Howard Chu's avatar
Howard Chu committed
55
56

static ModPaths modpaths, *modlast = &modpaths, *modcur = &modpaths;
57
58
59
60
61
62
#endif

typedef struct ConfigFile {
	struct ConfigFile *c_sibs;
	struct ConfigFile *c_kids;
	struct berval c_file;
Howard Chu's avatar
Howard Chu committed
63
64
65
66
	AttributeType *c_at_head, *c_at_tail;
	ContentRule *c_cr_head, *c_cr_tail;
	ObjectClass *c_oc_head, *c_oc_tail;
	OidMacro *c_om_head, *c_om_tail;
67
	Syntax *c_syn_head, *c_syn_tail;
68
69
70
	BerVarray c_dseFiles;
} ConfigFile;

Howard Chu's avatar
Howard Chu committed
71
72
73
typedef struct {
	ConfigFile *cb_config;
	CfEntryInfo *cb_root;
74
75
	BackendDB	cb_db;	/* underlying database */
	int		cb_got_ldif;
76
	int		cb_use_ldif;
Howard Chu's avatar
Howard Chu committed
77
78
} CfBackInfo;

79
80
static CfBackInfo cfBackInfo;

81
static char	*passwd_salt;
Howard Chu's avatar
Howard Chu committed
82
static FILE *logfile;
83
static char	*logfileName;
Ralf Haferkamp's avatar
Ralf Haferkamp committed
84
static AccessControl *defacl_parsed = NULL;
85

86
87
static struct berval cfdir;

88
/* Private state */
Howard Chu's avatar
Howard Chu committed
89
static AttributeDescription *cfAd_backend, *cfAd_database, *cfAd_overlay,
90
	*cfAd_include, *cfAd_attr, *cfAd_oc, *cfAd_om, *cfAd_syntax;
Howard Chu's avatar
Howard Chu committed
91

92
static ConfigFile *cfn;
93

94
95
static Avlnode *CfOcTree;

96
97
98
99
/* System schema state */
extern AttributeType *at_sys_tail;	/* at.c */
extern ObjectClass *oc_sys_tail;	/* oc.c */
extern OidMacro *om_sys_tail;	/* oidm.c */
100
extern Syntax *syn_sys_tail;	/* syntax.c */
101
102
103
static AttributeType *cf_at_tail;
static ObjectClass *cf_oc_tail;
static OidMacro *cf_om_tail;
104
static Syntax *cf_syn_tail;
105

106
static int config_add_internal( CfBackInfo *cfb, Entry *e, ConfigArgs *ca,
107
	SlapReply *rs, int *renumber, Operation *op );
108

109
static int config_check_schema( Operation *op, CfBackInfo *cfb );
110

Howard Chu's avatar
Howard Chu committed
111
static ConfigDriver config_fname;
112
static ConfigDriver config_cfdir;
Howard Chu's avatar
Howard Chu committed
113
114
115
116
117
118
119
static ConfigDriver config_generic;
static ConfigDriver config_search_base;
static ConfigDriver config_passwd_hash;
static ConfigDriver config_schema_dn;
static ConfigDriver config_sizelimit;
static ConfigDriver config_timelimit;
static ConfigDriver config_overlay;
120
static ConfigDriver config_subordinate; 
Howard Chu's avatar
Howard Chu committed
121
static ConfigDriver config_suffix; 
122
123
124
#ifdef LDAP_TCP_BUFFER
static ConfigDriver config_tcp_buffer; 
#endif /* LDAP_TCP_BUFFER */
Howard Chu's avatar
Howard Chu committed
125
126
127
128
129
130
131
132
133
134
135
static ConfigDriver config_rootdn;
static ConfigDriver config_rootpw;
static ConfigDriver config_restrict;
static ConfigDriver config_allows;
static ConfigDriver config_disallows;
static ConfigDriver config_requires;
static ConfigDriver config_security;
static ConfigDriver config_referral;
static ConfigDriver config_loglevel;
static ConfigDriver config_updatedn;
static ConfigDriver config_updateref;
136
static ConfigDriver config_extra_attrs;
Howard Chu's avatar
Howard Chu committed
137
static ConfigDriver config_include;
Howard Chu's avatar
Howard Chu committed
138
static ConfigDriver config_obsolete;
139
#ifdef HAVE_TLS
Howard Chu's avatar
Howard Chu committed
140
141
static ConfigDriver config_tls_option;
static ConfigDriver config_tls_config;
142
#endif
143
extern ConfigDriver syncrepl_config;
144
145
146
147
148
149
150

enum {
	CFG_ACL = 1,
	CFG_BACKEND,
	CFG_DATABASE,
	CFG_TLS_RAND,
	CFG_TLS_CIPHER,
151
	CFG_TLS_PROTOCOL_MIN,
152
153
154
155
	CFG_TLS_CERT_FILE,
	CFG_TLS_CERT_KEY,
	CFG_TLS_CA_PATH,
	CFG_TLS_CA_FILE,
156
	CFG_TLS_DH_FILE,
157
158
	CFG_TLS_VERIFY,
	CFG_TLS_CRLCHECK,
Howard Chu's avatar
Howard Chu committed
159
	CFG_TLS_CRL_FILE,
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
	CFG_CONCUR,
	CFG_THREADS,
	CFG_SALT,
	CFG_LIMITS,
	CFG_RO,
	CFG_REWRITE,
	CFG_DEPTH,
	CFG_OID,
	CFG_OC,
	CFG_DIT,
	CFG_ATTR,
	CFG_ATOPT,
	CFG_ROOTDSE,
	CFG_LOGFILE,
	CFG_PLUGIN,
	CFG_MODLOAD,
	CFG_MODPATH,
	CFG_LASTMOD,
178
	CFG_LASTBIND,
179
180
	CFG_AZPOLICY,
	CFG_AZREGEXP,
181
182
	CFG_AZDUC,
	CFG_AZDUC_IGNORE,
183
184
185
	CFG_SASLSECP,
	CFG_SSTR_IF_MAX,
	CFG_SSTR_IF_MIN,
186
	CFG_TTHREADS,
187
	CFG_MIRRORMODE,
188
	CFG_HIDDEN,
189
	CFG_MONITORING,
190
	CFG_SERVERID,
Howard Chu's avatar
Howard Chu committed
191
	CFG_SORTVALS,
192
	CFG_IX_INTLEN,
193
	CFG_SYNTAX,
194
	CFG_ACL_ADD,
195
	CFG_SYNC_SUBENTRY,
196
	CFG_LTHREADS,
197
	CFG_IX_HASH64,
198
	CFG_DISABLED,
Howard Chu's avatar
Howard Chu committed
199
	CFG_THREADQS,
200
	CFG_TLS_ECNAME,
201
202
203
	CFG_TLS_CACERT,
	CFG_TLS_CERT,
	CFG_TLS_KEY,
Pierangelo Masarati's avatar
Pierangelo Masarati committed
204
205

	CFG_LAST
206
207
208
209
210
211
212
};

typedef struct {
	char *name, *oid;
} OidRec;

static OidRec OidMacros[] = {
213
214
	/* OpenLDAProot:1.12.2 */
	{ "OLcfg", "1.3.6.1.4.1.4203.1.12.2" },
215
	{ "OLcfgAt", "OLcfg:3" },
216
217
218
219
	{ "OLcfgGlAt", "OLcfgAt:0" },
	{ "OLcfgBkAt", "OLcfgAt:1" },
	{ "OLcfgDbAt", "OLcfgAt:2" },
	{ "OLcfgOvAt", "OLcfgAt:3" },
220
	{ "OLcfgCtAt", "OLcfgAt:4" },	/* contrib modules */
221
	{ "OLcfgOc", "OLcfg:4" },
222
223
224
225
	{ "OLcfgGlOc", "OLcfgOc:0" },
	{ "OLcfgBkOc", "OLcfgOc:1" },
	{ "OLcfgDbOc", "OLcfgOc:2" },
	{ "OLcfgOvOc", "OLcfgOc:3" },
226
	{ "OLcfgCtOc", "OLcfgOc:4" },	/* contrib modules */
227
228
229
230
231
232

	/* Syntaxes. We should just start using the standard names and
	 * document that they are predefined and available for users
	 * to reference in their own schema. Defining schema without
	 * OID macros is for masochists...
	 */
233
234
235
236
	{ "OMsyn", "1.3.6.1.4.1.1466.115.121.1" },
	{ "OMsBoolean", "OMsyn:7" },
	{ "OMsDN", "OMsyn:12" },
	{ "OMsDirectoryString", "OMsyn:15" },
Howard Chu's avatar
Howard Chu committed
237
	{ "OMsIA5String", "OMsyn:26" },
238
239
	{ "OMsInteger", "OMsyn:27" },
	{ "OMsOID", "OMsyn:38" },
240
241
242
243
	{ "OMsOctetString", "OMsyn:40" },
	{ NULL, NULL }
};

244
/*
245
246
 * Backend/Database registry
 *
247
 * OLcfg{Bk|Db}{Oc|At}:0		-> common
248
 * OLcfg{Bk|Db}{Oc|At}:1		-> back-bdb(/back-hdb) (removed)
Pierangelo Masarati's avatar
Pierangelo Masarati committed
249
 * OLcfg{Bk|Db}{Oc|At}:2		-> back-ldif
Howard Chu's avatar
Howard Chu committed
250
 * OLcfg{Bk|Db}{Oc|At}:3		-> back-ldap/meta
251
 * OLcfg{Bk|Db}{Oc|At}:4		-> back-monitor
252
 * OLcfg{Bk|Db}{Oc|At}:5		-> back-relay
Howard Chu's avatar
Howard Chu committed
253
 * OLcfg{Bk|Db}{Oc|At}:6		-> back-sql(/back-ndb)
254
 * OLcfg{Bk|Db}{Oc|At}:7		-> back-sock
255
 * OLcfg{Bk|Db}{Oc|At}:8		-> back-null
Howard Chu's avatar
Howard Chu committed
256
 * OLcfg{Bk|Db}{Oc|At}:9		-> back-passwd
Howard Chu's avatar
Howard Chu committed
257
 * OLcfg{Bk|Db}{Oc|At}:10		-> back-shell
Howard Chu's avatar
Howard Chu committed
258
 * OLcfg{Bk|Db}{Oc|At}:11		-> back-perl
259
 * OLcfg{Bk|Db}{Oc|At}:12		-> back-mdb
260
261
 */

262
263
264
265
266
267
268
269
/*
 * Overlay registry
 *
 * OLcfgOv{Oc|At}:1			-> syncprov
 * OLcfgOv{Oc|At}:2			-> pcache
 * OLcfgOv{Oc|At}:3			-> chain
 * OLcfgOv{Oc|At}:4			-> accesslog
 * OLcfgOv{Oc|At}:5			-> valsort
270
271
 * OLcfgOv{Oc|At}:7			-> distproc
 * OLcfgOv{Oc|At}:8			-> dynlist
272
 * OLcfgOv{Oc|At}:9			-> dds
Pierangelo Masarati's avatar
Pierangelo Masarati committed
273
274
275
276
277
278
279
 * OLcfgOv{Oc|At}:10			-> unique
 * OLcfgOv{Oc|At}:11			-> refint
 * OLcfgOv{Oc|At}:12 			-> ppolicy
 * OLcfgOv{Oc|At}:13			-> constraint
 * OLcfgOv{Oc|At}:14			-> translucent
 * OLcfgOv{Oc|At}:15			-> auditlog
 * OLcfgOv{Oc|At}:16			-> rwm
Howard Chu's avatar
Howard Chu committed
280
 * OLcfgOv{Oc|At}:17			-> dyngroup
Pierangelo Masarati's avatar
Pierangelo Masarati committed
281
 * OLcfgOv{Oc|At}:18			-> memberof
282
 * OLcfgOv{Oc|At}:19			-> collect
283
 * OLcfgOv{Oc|At}:20			-> retcode
Howard Chu's avatar
Howard Chu committed
284
 * OLcfgOv{Oc|At}:21			-> sssvlv
285
286
 */

287
288
/* alphabetical ordering */

289
static ConfigTable config_back_cf_table[] = {
290
291
	/* This attr is read-only */
	{ "", "", 0, 0, 0, ARG_MAGIC,
292
		&config_fname, "( OLcfgGlAt:78 NAME 'olcConfigFile' "
293
			"DESC 'File for slapd configuration directives' "
294
			"EQUALITY caseExactMatch "
295
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
296
	{ "", "", 0, 0, 0, ARG_MAGIC,
297
		&config_cfdir, "( OLcfgGlAt:79 NAME 'olcConfigDir' "
298
			"DESC 'Directory for slapd configuration backend' "
299
			"EQUALITY caseExactMatch "
300
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
301
	{ "access",	NULL, 0, 0, 0, ARG_MAY_DB|ARG_MAGIC|CFG_ACL,
302
		&config_generic, "( OLcfgGlAt:1 NAME 'olcAccess' "
303
304
305
			"DESC 'Access Control List' "
			"EQUALITY caseIgnoreMatch "
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )", NULL, NULL },
306
307
308
	{ "add_content_acl",	NULL, 0, 0, 0, ARG_MAY_DB|ARG_ON_OFF|ARG_MAGIC|CFG_ACL_ADD,
		&config_generic, "( OLcfgGlAt:86 NAME 'olcAddContentAcl' "
			"DESC 'Check ACLs against content of Add ops' "
309
			"EQUALITY booleanMatch "
310
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
311
	{ "allows",	"features", 2, 0, 5, ARG_PRE_DB|ARG_MAGIC,
312
		&config_allows, "( OLcfgGlAt:2 NAME 'olcAllows' "
313
314
315
316
			"DESC 'Allowed set of deprecated features' "
			"EQUALITY caseIgnoreMatch "
			"SYNTAX OMsDirectoryString )", NULL, NULL },
	{ "argsfile", "file", 2, 2, 0, ARG_STRING,
317
		&slapd_args_file, "( OLcfgGlAt:3 NAME 'olcArgsFile' "
318
			"DESC 'File for slapd command line options' "
319
			"EQUALITY caseExactMatch "
320
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
321
322
323
324
	{ "attributeoptions", NULL, 0, 0, 0, ARG_MAGIC|CFG_ATOPT,
		&config_generic, "( OLcfgGlAt:5 NAME 'olcAttributeOptions' "
			"EQUALITY caseIgnoreMatch "
			"SYNTAX OMsDirectoryString )", NULL, NULL },
Pierangelo Masarati's avatar
cleanup    
Pierangelo Masarati committed
325
	{ "attribute",	"attribute", 2, 0, STRLENOF( "attribute" ),
326
		ARG_PAREN|ARG_MAGIC|CFG_ATTR,
327
		&config_generic, "( OLcfgGlAt:4 NAME 'olcAttributeTypes' "
Howard Chu's avatar
Howard Chu committed
328
			"DESC 'OpenLDAP attributeTypes' "
329
			"EQUALITY caseIgnoreMatch "
330
			"SUBSTR caseIgnoreSubstringsMatch "
331
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )",
Howard Chu's avatar
Howard Chu committed
332
				NULL, NULL },
333
	{ "authid-rewrite", "rewrite", 2, 0, STRLENOF( "authid-rewrite" ),
334
		ARG_MAGIC|CFG_REWRITE, &config_generic,
335
		 "( OLcfgGlAt:6 NAME 'olcAuthIDRewrite' "
336
			"EQUALITY caseIgnoreMatch "
337
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )", NULL, NULL },
338
	{ "authz-policy", "policy", 2, 2, 0, ARG_STRING|ARG_MAGIC|CFG_AZPOLICY,
339
		&config_generic, "( OLcfgGlAt:7 NAME 'olcAuthzPolicy' "
340
			"EQUALITY caseIgnoreMatch "
341
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
342
	{ "authz-regexp", "regexp> <DN", 3, 3, 0, ARG_MAGIC|CFG_AZREGEXP,
343
		&config_generic, "( OLcfgGlAt:8 NAME 'olcAuthzRegexp' "
344
345
346
			"EQUALITY caseIgnoreMatch "
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )", NULL, NULL },
	{ "backend", "type", 2, 2, 0, ARG_PRE_DB|ARG_MAGIC|CFG_BACKEND,
347
		&config_generic, "( OLcfgGlAt:9 NAME 'olcBackend' "
348
349
			"DESC 'A type of backend' "
			"EQUALITY caseIgnoreMatch "
350
351
			"SYNTAX OMsDirectoryString SINGLE-VALUE X-ORDERED 'SIBLINGS' )",
				NULL, NULL },
Howard Chu's avatar
Howard Chu committed
352
	{ "concurrency", "level", 2, 2, 0, ARG_INT|ARG_MAGIC|CFG_CONCUR,
353
		&config_generic, "( OLcfgGlAt:10 NAME 'olcConcurrency' "
354
			"EQUALITY integerMatch "
355
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
356
	{ "conn_max_pending", "max", 2, 2, 0, ARG_INT,
357
		&slap_conn_max_pending, "( OLcfgGlAt:11 NAME 'olcConnMaxPending' "
358
			"EQUALITY integerMatch "
359
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
360
	{ "conn_max_pending_auth", "max", 2, 2, 0, ARG_INT,
361
		&slap_conn_max_pending_auth, "( OLcfgGlAt:12 NAME 'olcConnMaxPendingAuth' "
362
			"EQUALITY integerMatch "
363
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
364
	{ "database", "type", 2, 2, 0, ARG_MAGIC|CFG_DATABASE,
365
		&config_generic, "( OLcfgGlAt:13 NAME 'olcDatabase' "
366
			"DESC 'The backend type for a database instance' "
367
			"SUP olcBackend SINGLE-VALUE X-ORDERED 'SIBLINGS' )", NULL, NULL },
Pierangelo Masarati's avatar
Pierangelo Masarati committed
368
	{ "defaultSearchBase", "dn", 2, 2, 0, ARG_PRE_BI|ARG_PRE_DB|ARG_DN|ARG_QUOTE|ARG_MAGIC,
369
		&config_search_base, "( OLcfgGlAt:14 NAME 'olcDefaultSearchBase' "
370
			"EQUALITY distinguishedNameMatch "
371
			"SYNTAX OMsDN SINGLE-VALUE )", NULL, NULL },
372
373
	{ "disabled", "on|off", 2, 2, 0, ARG_DB|ARG_ON_OFF|ARG_MAGIC|CFG_DISABLED,
		&config_generic, "( OLcfgDbAt:0.21 NAME 'olcDisabled' "
374
			"EQUALITY booleanMatch "
375
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
376
	{ "disallows", "features", 2, 0, 8, ARG_PRE_DB|ARG_MAGIC,
377
		&config_disallows, "( OLcfgGlAt:15 NAME 'olcDisallows' "
378
379
			"EQUALITY caseIgnoreMatch "
			"SYNTAX OMsDirectoryString )", NULL, NULL },
380
	{ "ditcontentrule",	NULL, 0, 0, 0, ARG_MAGIC|CFG_DIT|ARG_NO_DELETE|ARG_NO_INSERT,
381
		&config_generic, "( OLcfgGlAt:16 NAME 'olcDitContentRules' "
Howard Chu's avatar
Howard Chu committed
382
			"DESC 'OpenLDAP DIT content rules' "
383
			"EQUALITY caseIgnoreMatch "
384
			"SUBSTR caseIgnoreSubstringsMatch "
385
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )",
Howard Chu's avatar
Howard Chu committed
386
			NULL, NULL },
387
388
389
390
	{ "extra_attrs", "attrlist", 2, 2, 0, ARG_DB|ARG_MAGIC,
		&config_extra_attrs, "( OLcfgDbAt:0.20 NAME 'olcExtraAttrs' "
			"EQUALITY caseIgnoreMatch "
			"SYNTAX OMsDirectoryString )", NULL, NULL },
391
392
393
394
395
396
	{ "gentlehup", "on|off", 2, 2, 0,
#ifdef SIGHUP
		ARG_ON_OFF, &global_gentlehup,
#else
		ARG_IGNORED, NULL,
#endif
397
		"( OLcfgGlAt:17 NAME 'olcGentleHUP' "
398
			"EQUALITY booleanMatch "
399
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
400
401
	{ "hidden", "on|off", 2, 2, 0, ARG_DB|ARG_ON_OFF|ARG_MAGIC|CFG_HIDDEN,
		&config_generic, "( OLcfgDbAt:0.17 NAME 'olcHidden' "
402
			"EQUALITY booleanMatch "
403
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
404
	{ "idletimeout", "timeout", 2, 2, 0, ARG_INT,
405
		&global_idletimeout, "( OLcfgGlAt:18 NAME 'olcIdleTimeout' "
406
			"EQUALITY integerMatch "
407
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
408
	{ "include", "file", 2, 2, 0, ARG_MAGIC,
409
410
		&config_include, "( OLcfgGlAt:19 NAME 'olcInclude' "
			"SUP labeledURI )", NULL, NULL },
411
412
	{ "index_hash64", "on|off", 2, 2, 0, ARG_ON_OFF|ARG_MAGIC|CFG_IX_HASH64,
		&config_generic, "( OLcfgGlAt:94 NAME 'olcIndexHash64' "
413
			"EQUALITY booleanMatch "
414
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
415
	{ "index_substr_if_minlen", "min", 2, 2, 0, ARG_UINT|ARG_NONZERO|ARG_MAGIC|CFG_SSTR_IF_MIN,
416
		&config_generic, "( OLcfgGlAt:20 NAME 'olcIndexSubstrIfMinLen' "
417
			"EQUALITY integerMatch "
418
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
419
	{ "index_substr_if_maxlen", "max", 2, 2, 0, ARG_UINT|ARG_NONZERO|ARG_MAGIC|CFG_SSTR_IF_MAX,
420
		&config_generic, "( OLcfgGlAt:21 NAME 'olcIndexSubstrIfMaxLen' "
421
			"EQUALITY integerMatch "
422
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
423
	{ "index_substr_any_len", "len", 2, 2, 0, ARG_UINT|ARG_NONZERO,
424
		&index_substr_any_len, "( OLcfgGlAt:22 NAME 'olcIndexSubstrAnyLen' "
425
			"EQUALITY integerMatch "
426
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
427
	{ "index_substr_any_step", "step", 2, 2, 0, ARG_UINT|ARG_NONZERO,
428
		&index_substr_any_step, "( OLcfgGlAt:23 NAME 'olcIndexSubstrAnyStep' "
429
			"EQUALITY integerMatch "
430
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
431
	{ "index_intlen", "len", 2, 2, 0, ARG_UINT|ARG_MAGIC|CFG_IX_INTLEN,
432
		&config_generic, "( OLcfgGlAt:84 NAME 'olcIndexIntLen' "
433
			"EQUALITY integerMatch "
434
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
435
	{ "lastmod", "on|off", 2, 2, 0, ARG_DB|ARG_ON_OFF|ARG_MAGIC|CFG_LASTMOD,
436
		&config_generic, "( OLcfgDbAt:0.4 NAME 'olcLastMod' "
437
			"EQUALITY booleanMatch "
438
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
439
440
441
442
	{ "lastbind", "on|off", 2, 2, 0, ARG_DB|ARG_ON_OFF|ARG_MAGIC|CFG_LASTBIND,
		&config_generic, "( OLcfgDbAt:0.22 NAME 'olcLastBind' "
			"EQUALITY booleanMatch "
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
443
444
445
446
447
	{ "ldapsyntax",	"syntax", 2, 0, 0,
		ARG_PAREN|ARG_MAGIC|CFG_SYNTAX,
		&config_generic, "( OLcfgGlAt:85 NAME 'olcLdapSyntaxes' "
			"DESC 'OpenLDAP ldapSyntax' "
			"EQUALITY caseIgnoreMatch "
448
			"SUBSTR caseIgnoreSubstringsMatch "
449
450
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )",
				NULL, NULL },
451
	{ "limits", "limits", 2, 0, 0, ARG_DB|ARG_MAGIC|CFG_LIMITS,
452
		&config_generic, "( OLcfgDbAt:0.5 NAME 'olcLimits' "
453
			"EQUALITY caseIgnoreMatch "
454
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )", NULL, NULL },
455
456
457
	{ "listener-threads", "count", 2, 0, 0,
		ARG_UINT|ARG_MAGIC|CFG_LTHREADS, &config_generic,
		"( OLcfgGlAt:93 NAME 'olcListenerThreads' "
458
			"EQUALITY integerMatch "
459
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
460
	{ "localSSF", "ssf", 2, 2, 0, ARG_INT,
461
		&local_ssf, "( OLcfgGlAt:26 NAME 'olcLocalSSF' "
462
			"EQUALITY integerMatch "
463
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
464
	{ "logfile", "file", 2, 2, 0, ARG_STRING|ARG_MAGIC|CFG_LOGFILE,
465
		&config_generic, "( OLcfgGlAt:27 NAME 'olcLogFile' "
466
			"EQUALITY caseExactMatch "
467
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
468
	{ "loglevel", "level", 2, 0, 0, ARG_MAGIC,
469
		&config_loglevel, "( OLcfgGlAt:28 NAME 'olcLogLevel' "
470
			"EQUALITY caseIgnoreMatch "
471
472
			"SYNTAX OMsDirectoryString )", NULL, NULL },
	{ "maxDerefDepth", "depth", 2, 2, 0, ARG_DB|ARG_INT|ARG_MAGIC|CFG_DEPTH,
473
		&config_generic, "( OLcfgDbAt:0.6 NAME 'olcMaxDerefDepth' "
474
			"EQUALITY integerMatch "
475
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
476
477
	{ "mirrormode", "on|off", 2, 2, 0, ARG_DB|ARG_ON_OFF|ARG_MAGIC|CFG_MIRRORMODE,
		&config_generic, "( OLcfgDbAt:0.16 NAME 'olcMirrorMode' "
478
			"EQUALITY booleanMatch "
479
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
480
481
	{ "moduleload",	"file", 2, 0, 0,
#ifdef SLAPD_MODULES
482
		ARG_MAGIC|CFG_MODLOAD|ARG_NO_DELETE, &config_generic,
483
484
485
#else
		ARG_IGNORED, NULL,
#endif
486
		"( OLcfgGlAt:30 NAME 'olcModuleLoad' "
487
			"EQUALITY caseIgnoreMatch "
488
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )", NULL, NULL },
489
490
	{ "modulepath", "path", 2, 2, 0,
#ifdef SLAPD_MODULES
491
		ARG_MAGIC|CFG_MODPATH|ARG_NO_DELETE|ARG_NO_INSERT, &config_generic,
492
493
494
#else
		ARG_IGNORED, NULL,
#endif
495
		"( OLcfgGlAt:31 NAME 'olcModulePath' "
496
			"EQUALITY caseExactMatch "
Howard Chu's avatar
Howard Chu committed
497
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
498
499
500
	{ "monitoring", "TRUE|FALSE", 2, 2, 0,
		ARG_MAGIC|CFG_MONITORING|ARG_DB|ARG_ON_OFF, &config_generic,
		"( OLcfgDbAt:0.18 NAME 'olcMonitoring' "
501
			"EQUALITY booleanMatch "
502
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
503
	{ "objectclass", "objectclass", 2, 0, 0, ARG_PAREN|ARG_MAGIC|CFG_OC,
504
		&config_generic, "( OLcfgGlAt:32 NAME 'olcObjectClasses' "
Howard Chu's avatar
Howard Chu committed
505
		"DESC 'OpenLDAP object classes' "
506
		"EQUALITY caseIgnoreMatch "
507
		"SUBSTR caseIgnoreSubstringsMatch "
508
		"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )",
Howard Chu's avatar
Howard Chu committed
509
			NULL, NULL },
510
	{ "objectidentifier", "name> <oid",	3, 3, 0, ARG_MAGIC|CFG_OID,
511
		&config_generic, "( OLcfgGlAt:33 NAME 'olcObjectIdentifier' "
512
			"EQUALITY caseIgnoreMatch "
513
			"SUBSTR caseIgnoreSubstringsMatch "
514
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )", NULL, NULL },
515
	{ "overlay", "overlay", 2, 2, 0, ARG_MAGIC,
516
		&config_overlay, "( OLcfgGlAt:34 NAME 'olcOverlay' "
517
			"SUP olcDatabase SINGLE-VALUE X-ORDERED 'SIBLINGS' )", NULL, NULL },
518
	{ "password-crypt-salt-format", "salt", 2, 2, 0, ARG_STRING|ARG_MAGIC|CFG_SALT,
519
		&config_generic, "( OLcfgGlAt:35 NAME 'olcPasswordCryptSaltFormat' "
520
			"EQUALITY caseIgnoreMatch "
521
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
522
	{ "password-hash", "hash", 2, 0, 0, ARG_MAGIC,
523
		&config_passwd_hash, "( OLcfgGlAt:36 NAME 'olcPasswordHash' "
524
			"EQUALITY caseIgnoreMatch "
525
526
			"SYNTAX OMsDirectoryString )", NULL, NULL },
	{ "pidfile", "file", 2, 2, 0, ARG_STRING,
527
		&slapd_pid_file, "( OLcfgGlAt:37 NAME 'olcPidFile' "
528
			"EQUALITY caseExactMatch "
529
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
530
531
532
533
534
535
	{ "plugin", NULL, 0, 0, 0,
#ifdef LDAP_SLAPI
		ARG_MAGIC|CFG_PLUGIN, &config_generic,
#else
		ARG_IGNORED, NULL,
#endif
536
		"( OLcfgGlAt:38 NAME 'olcPlugin' "
537
			"EQUALITY caseIgnoreMatch "
538
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )", NULL, NULL },
539
540
541
542
543
544
	{ "pluginlog", "filename", 2, 2, 0,
#ifdef LDAP_SLAPI
		ARG_STRING, &slapi_log_file,
#else
		ARG_IGNORED, NULL,
#endif
545
		"( OLcfgGlAt:39 NAME 'olcPluginLogFile' "
546
			"EQUALITY caseExactMatch "
547
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
548
	{ "readonly", "on|off", 2, 2, 0, ARG_MAY_DB|ARG_ON_OFF|ARG_MAGIC|CFG_RO,
549
		&config_generic, "( OLcfgGlAt:40 NAME 'olcReadOnly' "
550
			"EQUALITY booleanMatch "
551
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
552
	{ "referral", "url", 2, 2, 0, ARG_MAGIC,
553
		&config_referral, "( OLcfgGlAt:41 NAME 'olcReferral' "
554
			"SUP labeledURI SINGLE-VALUE )", NULL, NULL },
555
	{ "replica", "host or uri", 2, 0, 0, ARG_DB|ARG_MAGIC,
Howard Chu's avatar
Howard Chu committed
556
		&config_obsolete, "( OLcfgDbAt:0.7 NAME 'olcReplica' "
557
			"EQUALITY caseIgnoreMatch "
558
			"SUP labeledURI X-ORDERED 'VALUES' )", NULL, NULL },
Howard Chu's avatar
Howard Chu committed
559
560
	{ "replica-argsfile", NULL, 0, 0, 0, ARG_MAY_DB|ARG_MAGIC,
		&config_obsolete, "( OLcfgGlAt:43 NAME 'olcReplicaArgsFile' "
561
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
Howard Chu's avatar
Howard Chu committed
562
563
	{ "replica-pidfile", NULL, 0, 0, 0, ARG_MAY_DB|ARG_MAGIC,
		&config_obsolete, "( OLcfgGlAt:44 NAME 'olcReplicaPidFile' "
564
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
Howard Chu's avatar
Howard Chu committed
565
566
	{ "replicationInterval", NULL, 0, 0, 0, ARG_MAY_DB|ARG_MAGIC,
		&config_obsolete, "( OLcfgGlAt:45 NAME 'olcReplicationInterval' "
567
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
Howard Chu's avatar
Howard Chu committed
568
569
	{ "replogfile", "filename", 2, 2, 0, ARG_MAY_DB|ARG_MAGIC,
		&config_obsolete, "( OLcfgGlAt:46 NAME 'olcReplogFile' "
570
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
571
	{ "require", "features", 2, 0, 7, ARG_MAY_DB|ARG_MAGIC,
572
		&config_requires, "( OLcfgGlAt:47 NAME 'olcRequires' "
573
			"EQUALITY caseIgnoreMatch "
574
575
			"SYNTAX OMsDirectoryString )", NULL, NULL },
	{ "restrict", "op_list", 2, 0, 0, ARG_MAY_DB|ARG_MAGIC,
576
		&config_restrict, "( OLcfgGlAt:48 NAME 'olcRestrict' "
577
			"EQUALITY caseIgnoreMatch "
578
579
580
581
582
583
584
			"SYNTAX OMsDirectoryString )", NULL, NULL },
	{ "reverse-lookup", "on|off", 2, 2, 0,
#ifdef SLAPD_RLOOKUPS
		ARG_ON_OFF, &use_reverse_lookup,
#else
		ARG_IGNORED, NULL,
#endif
585
		"( OLcfgGlAt:49 NAME 'olcReverseLookup' "
586
			"EQUALITY booleanMatch "
587
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
Pierangelo Masarati's avatar
Pierangelo Masarati committed
588
	{ "rootdn", "dn", 2, 2, 0, ARG_DB|ARG_DN|ARG_QUOTE|ARG_MAGIC,
589
		&config_rootdn, "( OLcfgDbAt:0.8 NAME 'olcRootDN' "
590
			"EQUALITY distinguishedNameMatch "
591
			"SYNTAX OMsDN SINGLE-VALUE )", NULL, NULL },
592
	{ "rootDSE", "file", 2, 2, 0, ARG_MAGIC|CFG_ROOTDSE,
593
		&config_generic, "( OLcfgGlAt:51 NAME 'olcRootDSE' "
594
			"EQUALITY caseIgnoreMatch "
595
			"SYNTAX OMsDirectoryString )", NULL, NULL },
Howard Chu's avatar
Howard Chu committed
596
	{ "rootpw", "password", 2, 2, 0, ARG_BERVAL|ARG_DB|ARG_MAGIC,
597
		&config_rootpw, "( OLcfgDbAt:0.9 NAME 'olcRootPW' "
598
			"EQUALITY octetStringMatch "
599
			"SYNTAX OMsOctetString SINGLE-VALUE )", NULL, NULL },
600
601
	{ "sasl-authz-policy", NULL, 2, 2, 0, ARG_MAGIC|CFG_AZPOLICY,
		&config_generic, NULL, NULL, NULL },
602
603
604
605
606
607
608
	{ "sasl-auxprops", NULL, 2, 0, 0,
#ifdef HAVE_CYRUS_SASL
		ARG_STRING|ARG_UNIQUE, &slap_sasl_auxprops,
#else
		ARG_IGNORED, NULL,
#endif
		"( OLcfgGlAt:89 NAME 'olcSaslAuxprops' "
609
			"EQUALITY caseIgnoreMatch "
610
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
	{ "sasl-auxprops-dontusecopy", NULL, 2, 0, 0,
#if defined(HAVE_CYRUS_SASL) && defined(SLAP_AUXPROP_DONTUSECOPY)
		ARG_MAGIC|CFG_AZDUC, &config_generic,
#else
		ARG_IGNORED, NULL,
#endif
		"( OLcfgGlAt:91 NAME 'olcSaslAuxpropsDontUseCopy' "
			"EQUALITY caseIgnoreMatch "
			"SYNTAX OMsDirectoryString )", NULL, NULL },
	{ "sasl-auxprops-dontusecopy-ignore", "true|FALSE", 2, 0, 0,
#if defined(HAVE_CYRUS_SASL) && defined(SLAP_AUXPROP_DONTUSECOPY)
		ARG_ON_OFF|CFG_AZDUC_IGNORE, &slap_dontUseCopy_ignore,
#else
		ARG_IGNORED, NULL,
#endif
		"( OLcfgGlAt:92 NAME 'olcSaslAuxpropsDontUseCopyIgnore' "
			"EQUALITY booleanMatch "
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
629
630
631
632
633
634
635
636
637
	{ "sasl-cbinding", NULL, 2, 2, 0,
#ifdef HAVE_CYRUS_SASL
		ARG_STRING, &sasl_cbinding,
#else
		ARG_IGNORED, NULL,
#endif
		"( OLcfgGlAt:100 NAME 'olcSaslCBinding' "
			"EQUALITY caseIgnoreMatch "
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
638
639
	{ "sasl-host", "host", 2, 2, 0,
#ifdef HAVE_CYRUS_SASL
640
		ARG_STRING|ARG_UNIQUE, &sasl_host,
641
642
643
#else
		ARG_IGNORED, NULL,
#endif
644
		"( OLcfgGlAt:53 NAME 'olcSaslHost' "
645
			"EQUALITY caseIgnoreMatch "
646
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
647
648
649
650
651
652
	{ "sasl-realm", "realm", 2, 2, 0,
#ifdef HAVE_CYRUS_SASL
		ARG_STRING|ARG_UNIQUE, &global_realm,
#else
		ARG_IGNORED, NULL,
#endif
653
		"( OLcfgGlAt:54 NAME 'olcSaslRealm' "
654
			"EQUALITY caseExactMatch "
655
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
656
657
658
659
660
661
662
663
	{ "sasl-regexp", NULL, 3, 3, 0, ARG_MAGIC|CFG_AZREGEXP,
		&config_generic, NULL, NULL, NULL },
	{ "sasl-secprops", "properties", 2, 2, 0,
#ifdef HAVE_CYRUS_SASL
		ARG_MAGIC|CFG_SASLSECP, &config_generic,
#else
		ARG_IGNORED, NULL,
#endif
664
		"( OLcfgGlAt:56 NAME 'olcSaslSecProps' "
665
			"EQUALITY caseExactMatch "
666
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
667
668
	{ "saslRegexp",	NULL, 3, 3, 0, ARG_MAGIC|CFG_AZREGEXP,
		&config_generic, NULL, NULL, NULL },
Pierangelo Masarati's avatar
Pierangelo Masarati committed
669
	{ "schemadn", "dn", 2, 2, 0, ARG_MAY_DB|ARG_DN|ARG_QUOTE|ARG_MAGIC,
670
		&config_schema_dn, "( OLcfgGlAt:58 NAME 'olcSchemaDN' "
671
			"EQUALITY distinguishedNameMatch "
672
			"SYNTAX OMsDN SINGLE-VALUE )", NULL, NULL },
673
	{ "security", "factors", 2, 0, 0, ARG_MAY_DB|ARG_MAGIC,
674
		&config_security, "( OLcfgGlAt:59 NAME 'olcSecurity' "
675
			"EQUALITY caseIgnoreMatch "
676
			"SYNTAX OMsDirectoryString )", NULL, NULL },
677
678
679
680
	{ "serverID", "number> <[URI]", 2, 3, 0, ARG_MAGIC|CFG_SERVERID,
		&config_generic, "( OLcfgGlAt:81 NAME 'olcServerID' "
			"EQUALITY caseIgnoreMatch "
			"SYNTAX OMsDirectoryString )", NULL, NULL },
681
	{ "sizelimit", "limit",	2, 0, 0, ARG_MAY_DB|ARG_MAGIC,
682
		&config_sizelimit, "( OLcfgGlAt:60 NAME 'olcSizeLimit' "
683
			"EQUALITY caseExactMatch "
684
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
685
	{ "sockbuf_max_incoming", "max", 2, 2, 0, ARG_BER_LEN_T,
686
		&sockbuf_max_incoming, "( OLcfgGlAt:61 NAME 'olcSockbufMaxIncoming' "
687
			"EQUALITY integerMatch "
688
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
689
	{ "sockbuf_max_incoming_auth", "max", 2, 2, 0, ARG_BER_LEN_T,
690
		&sockbuf_max_incoming_auth, "( OLcfgGlAt:62 NAME 'olcSockbufMaxIncomingAuth' "
691
			"EQUALITY integerMatch "
692
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
Howard Chu's avatar
Howard Chu committed
693
694
695
696
697
	{ "sortvals", "attr", 2, 0, 0, ARG_MAGIC|CFG_SORTVALS,
		&config_generic, "( OLcfgGlAt:83 NAME 'olcSortVals' "
			"DESC 'Attributes whose values will always be sorted' "
			"EQUALITY caseIgnoreMatch "
			"SYNTAX OMsDirectoryString )", NULL, NULL },
698
	{ "subordinate", "[advertise]", 1, 2, 0, ARG_DB|ARG_MAGIC,
Howard Chu's avatar
Howard Chu committed
699
		&config_subordinate, "( OLcfgDbAt:0.15 NAME 'olcSubordinate' "
700
			"EQUALITY caseExactMatch "
701
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
Pierangelo Masarati's avatar
Pierangelo Masarati committed
702
	{ "suffix",	"suffix", 2, 2, 0, ARG_DB|ARG_DN|ARG_QUOTE|ARG_MAGIC,
703
		&config_suffix, "( OLcfgDbAt:0.10 NAME 'olcSuffix' "
704
			"EQUALITY distinguishedNameMatch "
705
			"SYNTAX OMsDN )", NULL, NULL },
Howard Chu's avatar
Howard Chu committed
706
	{ "sync_use_subentry", NULL, 0, 0, 0, ARG_ON_OFF|ARG_DB|ARG_MAGIC|CFG_SYNC_SUBENTRY,
707
708
		&config_generic, "( OLcfgDbAt:0.19 NAME 'olcSyncUseSubentry' "
			"DESC 'Store sync context in a subentry' "
709
			"EQUALITY booleanMatch "
710
			"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
711
	{ "syncrepl", NULL, 0, 0, 0, ARG_DB|ARG_MAGIC,
712
		&syncrepl_config, "( OLcfgDbAt:0.11 NAME 'olcSyncrepl' "
713
			"EQUALITY caseIgnoreMatch "
714
			"SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )", NULL, NULL },
715
716
717
718
719
720
721
	{ "tcp-buffer", "[listener=<listener>] [{read|write}=]size", 0, 0, 0,
#ifndef LDAP_TCP_BUFFER
		ARG_IGNORED, NULL,
#else /* LDAP_TCP_BUFFER */
		ARG_MAGIC, &config_tcp_buffer,
#endif /* LDAP_TCP_BUFFER */
			"( OLcfgGlAt:90 NAME 'olcTCPBuffer' "
722
			"EQUALITY caseExactMatch "
723
			"DESC 'Custom TCP buffer size' "
Pierangelo Masarati's avatar
Pierangelo Masarati committed
724
			"SYNTAX OMsDirectoryString )", NULL, NULL },
725
726
727
	{ "threads", "count", 2, 2, 0,
		ARG_INT|ARG_MAGIC|CFG_THREADS, &config_generic,
		"( OLcfgGlAt:66 NAME 'olcThreads' "
728
			"EQUALITY integerMatch "
729
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
Howard Chu's avatar
Howard Chu committed
730
731
732
	{ "threadqueues", "count", 2, 2, 0,
		ARG_INT|ARG_MAGIC|CFG_THREADQS, &config_generic,
		"( OLcfgGlAt:95 NAME 'olcThreadQueues' "
733
			"EQUALITY integerMatch "
Howard Chu's avatar
Howard Chu committed
734
			"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
735
	{ "timelimit", "limit", 2, 0, 0, ARG_MAY_DB|ARG_MAGIC,
736
		&config_timelimit, "( OLcfgGlAt:67 NAME 'olcTimeLimit' "
737
			"EQUALITY caseExactMatch "
738
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
739
740
741
742
743
744
745
746
	{ "TLSCACertificate", NULL, 2, 2, 0,
#ifdef HAVE_TLS
		CFG_TLS_CACERT|ARG_BINARY|ARG_MAGIC, &config_tls_option,
#else
		ARG_IGNORED, NULL,
#endif
		"( OLcfgGlAt:97 NAME 'olcTLSCACertificate' "
			"DESC 'X.509 certificate, must use ;binary' "
747
			"EQUALITY certificateExactMatch "
748
			"SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 SINGLE-VALUE )", NULL, NULL },
749
	{ "TLSCACertificateFile", NULL, 2, 2, 0,
750
751
752
753
754
#ifdef HAVE_TLS
		CFG_TLS_CA_FILE|ARG_STRING|ARG_MAGIC, &config_tls_option,
#else
		ARG_IGNORED, NULL,
#endif
755
		"( OLcfgGlAt:68 NAME 'olcTLSCACertificateFile' "
756
			"EQUALITY caseExactMatch "
757
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
758
	{ "TLSCACertificatePath", NULL,	2, 2, 0,
759
760
761
762
763
#ifdef HAVE_TLS
		CFG_TLS_CA_PATH|ARG_STRING|ARG_MAGIC, &config_tls_option,
#else
		ARG_IGNORED, NULL,
#endif
764
		"( OLcfgGlAt:69 NAME 'olcTLSCACertificatePath' "
765
			"EQUALITY caseExactMatch "
766
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
767
768
769
770
771
772
773
774
	{ "TLSCertificate", NULL, 2, 2, 0,
#ifdef HAVE_TLS
		CFG_TLS_CERT|ARG_BINARY|ARG_MAGIC, &config_tls_option,
#else
		ARG_IGNORED, NULL,
#endif
		"( OLcfgGlAt:98 NAME 'olcTLSCertificate' "
			"DESC 'X.509 certificate, must use ;binary' "
775
			"EQUALITY certificateExactMatch "
776
			"SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 SINGLE-VALUE )", NULL, NULL },
777
	{ "TLSCertificateFile", NULL, 2, 2, 0,
778
779
780
781
782
#ifdef HAVE_TLS
		CFG_TLS_CERT_FILE|ARG_STRING|ARG_MAGIC, &config_tls_option,
#else
		ARG_IGNORED, NULL,
#endif
783
		"( OLcfgGlAt:70 NAME 'olcTLSCertificateFile' "
784
			"EQUALITY caseExactMatch "
785
			"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
786
787
788
789
790
791
792
793
	{ "TLSCertificateKey", NULL, 2, 2, 0,
#ifdef HAVE_TLS
		CFG_TLS_KEY|ARG_BINARY|ARG_MAGIC, &config_tls_option,
#else
		ARG_IGNORED, NULL,
#endif
		"( OLcfgGlAt:99 NAME 'olcTLSCertificateKey' "
			"DESC 'X.509 privateKey, must use ;binary' "
Howard Chu's avatar
Howard Chu committed
794
795
			"EQUALITY privateKeyMatch "
			"SYNTAX 1.2.840.113549.1.8.1.1 SINGLE-VALUE )", NULL, NULL },
796
	{ "TLSCertificateKeyFile", NULL, 2, 2, 0,
797
798
799
800
801
#ifdef HAVE_TLS
		CFG_TLS_CERT_KEY|ARG_STRING|ARG_MAGIC, &config_tls_option,
#else
		ARG_IGNORED, NULL,
#endif