summaryrefslogtreecommitdiffstats
path: root/clients/tools/common.h
blob: c4377da171b2f5f8b331aa71a8ab2d1d0deb7386 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/* common.h - common definitions for the ldap client tools */
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
 *
 * Copyright 1998-2022 The OpenLDAP Foundation.
 * 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 file was initially created by Hallvard B. Furuseth based (in
 * part) upon argument parsing code for individual tools located in
 * this directory. 
 */

#ifndef _CLIENT_TOOLS_COMMON_H_
#define _CLIENT_TOOLS_COMMON_H_

LDAP_BEGIN_DECL

typedef enum tool_type_t {
	TOOL_SEARCH	= 0x01U,
	TOOL_COMPARE	= 0x02U,
	TOOL_ADD	= 0x04U,
	TOOL_DELETE	= 0x08U,
	TOOL_MODIFY	= 0x10U,
	TOOL_MODRDN	= 0x20U,

	TOOL_EXOP	= 0x40U,

	TOOL_WHOAMI	= TOOL_EXOP | 0x100U,
	TOOL_PASSWD	= TOOL_EXOP | 0x200U,
	TOOL_VC		= TOOL_EXOP | 0x400U,

	TOOL_WRITE	= (TOOL_ADD|TOOL_DELETE|TOOL_MODIFY|TOOL_MODRDN),
	TOOL_READ	= (TOOL_SEARCH|TOOL_COMPARE),

	TOOL_ALL	= 0xFFU
} tool_type_t;


/* input-related vars */

/* misc. parameters */
extern tool_type_t	tool_type;
extern int		contoper;
extern int		debug;
extern char		*infile;
extern int		dont;
extern int		referrals;
extern int		verbose;
extern int		ldif;
extern ber_len_t	ldif_wrap;
extern char		*prog;

/* connection */
extern char		*ldapuri;
extern int		use_tls;
extern int		protocol;
extern int		version;

/* authc/authz */
extern int		authmethod;
extern char		*binddn;
extern int		want_bindpw;
extern struct berval	passwd;
extern char		*pw_file;
#ifdef HAVE_CYRUS_SASL
extern unsigned		sasl_flags;
extern char		*sasl_realm;
extern char		*sasl_authc_id;
extern char		*sasl_authz_id;
extern char		*sasl_mech;
extern char		*sasl_secprops;
#endif

/* controls */
extern char		*assertion;
extern char		*authzid;
extern int		manageDIT;
extern int		manageDSAit;
extern int		noop;
extern int		ppolicy;
extern int		preread, postread;
extern ber_int_t	pr_morePagedResults;
extern struct berval	pr_cookie;
#ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR
extern int		chaining;
#endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
extern ber_int_t	vlvPos;
extern ber_int_t	vlvCount;
extern struct berval	*vlvContext;

/* features */
extern int		backlog;

/* options */
extern struct timeval	nettimeout;

/* Defined in common.c, set in main() */
extern const char	__Version[];

/* Defined in main program */
extern const char	options[];

void usage LDAP_P(( void )) LDAP_GCCATTR((noreturn));
int handle_private_option LDAP_P(( int i ));

/* Defined in common.c */
void tool_init LDAP_P(( tool_type_t type ));
void tool_common_usage LDAP_P(( void ));
void tool_args LDAP_P(( int, char ** ));
LDAP *tool_conn_setup LDAP_P(( int dont, void (*private_setup)( LDAP * ) ));
void tool_bind LDAP_P(( LDAP * ));
void tool_unbind LDAP_P(( LDAP * ));
void tool_destroy LDAP_P(( void ));
void tool_exit LDAP_P(( LDAP *ld, int status )) LDAP_GCCATTR((noreturn));
void tool_server_controls LDAP_P(( LDAP *, LDAPControl *, int ));
int tool_check_abandon LDAP_P(( LDAP *ld, int msgid ));
void tool_perror LDAP_P((
	const char *func,
	int err,
	const char *extra,
	const char *matched,
	const char *info,
	char **refs ));
void tool_print_ctrls LDAP_P(( LDAP *ld, LDAPControl **ctrls ));
int tool_write_ldif LDAP_P(( int type, char *name, char *value, ber_len_t vallen ));
int tool_is_oid LDAP_P(( const char *s ));


LDAP_END_DECL

#endif /* _CLIENT_TOOLS_COMMON_H_ */