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