1/* slapcommon.h - common definitions for the slap tools */
2/* $OpenLDAP$ */
3/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 *
5 * Copyright 1998-2011 The OpenLDAP Foundation.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted only as authorized by the OpenLDAP
10 * Public License.
11 *
12 * A copy of this license is available in the file LICENSE in the
13 * top-level directory of the distribution or, alternatively, at
14 * <http://www.OpenLDAP.org/license.html>.
15 */
16
17#ifndef SLAPCOMMON_H_
18#define SLAPCOMMON_H_ 1
19
20#define SLAPD_TOOLS 1
21#include "slap.h"
22
23enum slaptool {
24	SLAPADD=1,	/* LDIF -> database tool */
25	SLAPCAT,	/* database -> LDIF tool */
26	SLAPDN,		/* DN check w/ syntax tool */
27	SLAPINDEX,	/* database index tool */
28	SLAPPASSWD,	/* password generation tool */
29	SLAPSCHEMA,	/* schema checking tool */
30	SLAPTEST,	/* slapd.conf test tool */
31	SLAPAUTH,	/* test authz-regexp and authc/authz stuff */
32	SLAPACL,	/* test acl */
33	SLAPLAST
34};
35
36typedef struct tool_vars {
37	Backend *tv_be;
38	int tv_dbnum;
39	int tv_verbose;
40	int tv_quiet;
41	int tv_update_ctxcsn;
42	int tv_continuemode;
43	int tv_nosubordinates;
44	int tv_dryrun;
45	int tv_jumpline;
46	struct berval tv_sub_ndn;
47	int tv_scope;
48	Filter *tv_filter;
49	struct LDIFFP	*tv_ldiffp;
50	struct berval tv_baseDN;
51	struct berval tv_authcDN;
52	struct berval tv_authzDN;
53	struct berval tv_authcID;
54	struct berval tv_authzID;
55	struct berval tv_mech;
56	char	*tv_realm;
57	struct berval tv_listener_url;
58	struct berval tv_peer_domain;
59	struct berval tv_peer_name;
60	struct berval tv_sock_name;
61	slap_ssf_t tv_ssf;
62	slap_ssf_t tv_transport_ssf;
63	slap_ssf_t tv_tls_ssf;
64	slap_ssf_t tv_sasl_ssf;
65	unsigned tv_dn_mode;
66	unsigned int tv_csnsid;
67	ber_len_t tv_ldif_wrap;
68	char tv_maxcsnbuf[ LDAP_PVT_CSNSTR_BUFSIZE * ( SLAP_SYNC_SID_MAX + 1 ) ];
69	struct berval tv_maxcsn[ SLAP_SYNC_SID_MAX + 1 ];
70} tool_vars;
71
72extern tool_vars tool_globals;
73
74#define	be tool_globals.tv_be
75#define	dbnum tool_globals.tv_dbnum
76#define verbose tool_globals.tv_verbose
77#define quiet tool_globals.tv_quiet
78#define jumpline tool_globals.tv_jumpline
79#define update_ctxcsn tool_globals.tv_update_ctxcsn
80#define continuemode tool_globals.tv_continuemode
81#define nosubordinates tool_globals.tv_nosubordinates
82#define dryrun tool_globals.tv_dryrun
83#define sub_ndn tool_globals.tv_sub_ndn
84#define scope tool_globals.tv_scope
85#define filter tool_globals.tv_filter
86#define ldiffp tool_globals.tv_ldiffp
87#define baseDN tool_globals.tv_baseDN
88#define authcDN tool_globals.tv_authcDN
89#define authzDN tool_globals.tv_authzDN
90#define authcID tool_globals.tv_authcID
91#define authzID tool_globals.tv_authzID
92#define mech tool_globals.tv_mech
93#define realm tool_globals.tv_realm
94#define listener_url tool_globals.tv_listener_url
95#define peer_domain tool_globals.tv_peer_domain
96#define peer_name tool_globals.tv_peer_name
97#define sock_name tool_globals.tv_sock_name
98#define ssf tool_globals.tv_ssf
99#define transport_ssf tool_globals.tv_transport_ssf
100#define tls_ssf tool_globals.tv_tls_ssf
101#define sasl_ssf tool_globals.tv_sasl_ssf
102#define dn_mode tool_globals.tv_dn_mode
103#define csnsid tool_globals.tv_csnsid
104#define ldif_wrap tool_globals.tv_ldif_wrap
105#define maxcsn tool_globals.tv_maxcsn
106#define maxcsnbuf tool_globals.tv_maxcsnbuf
107
108#define SLAP_TOOL_LDAPDN_PRETTY		SLAP_LDAPDN_PRETTY
109#define SLAP_TOOL_LDAPDN_NORMAL		(SLAP_LDAPDN_PRETTY << 1)
110
111void slap_tool_init LDAP_P((
112	const char* name,
113	int tool,
114	int argc, char **argv ));
115
116int slap_tool_destroy LDAP_P((void));
117
118int slap_tool_update_ctxcsn LDAP_P((
119	const char *progname,
120	unsigned long sid,
121	struct berval *bvtext ));
122
123unsigned long slap_tool_update_ctxcsn_check LDAP_P((
124	const char *progname,
125	Entry *e ));
126
127int slap_tool_update_ctxcsn_init LDAP_P((void));
128
129int slap_tool_entry_check LDAP_P((
130	const char *progname,
131	Operation *op,
132	Entry *e,
133	int lineno,
134	const char **text,
135	char *textbuf,
136	size_t textlen ));
137
138#endif /* SLAPCOMMON_H_ */
139