1/* common.h - common definitions for the ldap client 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/* ACKNOWLEDGEMENTS:
17 * This file was initially created by Hallvard B. Furuseth based (in
18 * part) upon argument parsing code for individual tools located in
19 * this directory.
20 */
21
22#ifndef _CLIENT_TOOLS_COMMON_H_
23#define _CLIENT_TOOLS_COMMON_H_
24
25LDAP_BEGIN_DECL
26
27typedef enum tool_type_t {
28	TOOL_SEARCH	= 0x01U,
29	TOOL_COMPARE	= 0x02U,
30	TOOL_ADD	= 0x04U,
31	TOOL_DELETE	= 0x08U,
32	TOOL_MODIFY	= 0x10U,
33	TOOL_MODRDN	= 0x20U,
34
35	TOOL_EXOP	= 0x40U,
36
37	TOOL_WHOAMI	= TOOL_EXOP | 0x100U,
38	TOOL_PASSWD	= TOOL_EXOP | 0x200U,
39
40	TOOL_WRITE	= (TOOL_ADD|TOOL_DELETE|TOOL_MODIFY|TOOL_MODRDN),
41	TOOL_READ	= (TOOL_SEARCH|TOOL_COMPARE),
42
43	TOOL_ALL	= 0xFFU
44} tool_type_t;
45
46
47/* input-related vars */
48
49/* misc. parameters */
50extern tool_type_t	tool_type;
51extern int		contoper;
52extern int		debug;
53extern char		*infile;
54extern int		dont;
55extern int		referrals;
56extern int		verbose;
57extern int		ldif;
58extern ber_len_t	ldif_wrap;
59extern char		*prog;
60
61/* connection */
62extern char		*ldapuri;
63extern char		*ldaphost;
64extern int		ldapport;
65extern int		use_tls;
66extern int		protocol;
67extern int		version;
68
69/* authc/authz */
70extern int		authmethod;
71extern char		*binddn;
72extern int		want_bindpw;
73extern struct berval	passwd;
74extern char		*pw_file;
75#ifdef HAVE_CYRUS_SASL
76extern unsigned		sasl_flags;
77extern char		*sasl_realm;
78extern char		*sasl_authc_id;
79extern char		*sasl_authz_id;
80extern char		*sasl_mech;
81extern char		*sasl_secprops;
82#endif
83
84/* controls */
85extern char		*assertion;
86extern char		*authzid;
87extern int		manageDIT;
88extern int		manageDSAit;
89extern int		noop;
90extern int		ppolicy;
91extern int		preread, postread;
92extern ber_int_t	pr_morePagedResults;
93extern struct berval	pr_cookie;
94#ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR
95extern int		chaining;
96#endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
97extern ber_int_t	vlvPos;
98extern ber_int_t	vlvCount;
99extern struct berval	*vlvContext;
100
101/* options */
102extern struct timeval	nettimeout;
103
104/* Defined in common.c, set in main() */
105extern const char	__Version[];
106
107/* Defined in main program */
108extern const char	options[];
109
110void usage LDAP_P(( void )) LDAP_GCCATTR((noreturn));
111int handle_private_option LDAP_P(( int i ));
112
113/* Defined in common.c */
114void tool_init LDAP_P(( tool_type_t type ));
115void tool_common_usage LDAP_P(( void ));
116void tool_args LDAP_P(( int, char ** ));
117LDAP *tool_conn_setup LDAP_P(( int dont, void (*private_setup)( LDAP * ) ));
118void tool_bind LDAP_P(( LDAP * ));
119void tool_unbind LDAP_P(( LDAP * ));
120void tool_destroy LDAP_P(( void ));
121void tool_exit LDAP_P(( LDAP *ld, int status )) LDAP_GCCATTR((noreturn));
122void tool_server_controls LDAP_P(( LDAP *, LDAPControl *, int ));
123int tool_check_abandon LDAP_P(( LDAP *ld, int msgid ));
124void tool_perror LDAP_P((
125	const char *func,
126	int err,
127	const char *extra,
128	const char *matched,
129	const char *info,
130	char **refs ));
131void tool_print_ctrls LDAP_P(( LDAP *ld, LDAPControl **ctrls ));
132int tool_write_ldif LDAP_P(( int type, char *name, char *value, ber_len_t vallen ));
133int tool_is_oid LDAP_P(( const char *s ));
134
135
136LDAP_END_DECL
137
138#endif /* _CLIENT_TOOLS_COMMON_H_ */
139