/* slap.h - stand alone ldap server include file */
+/*
+ * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
#ifndef _SLDAPD_H_
#define _SLDAPD_H_
#include <ac/socket.h>
#include <ac/time.h>
+#ifdef HAVE_CYRUS_SASL
+#include <sasl.h>
+#endif
+
#include "avl.h"
#ifndef ldap_debug
#include "ldap_log.h"
-#include "lber.h"
-#include "ldap.h"
-
-#include "ldap_schema.h"
+#include <ldap.h>
+#include <ldap_schema.h>
#include "ldap_pvt_thread.h"
#include "ldif.h"
#define MAXREMATCHES 10
+/* XXYYZ: these macros assume 'x' is an ASCII x */
#define DNSEPARATOR(c) ((c) == ',' || (c) == ';')
#define SEPARATOR(c) ((c) == ',' || (c) == ';' || (c) == '+')
#define SPACE(c) ((c) == ' ' || (c) == '\n')
+
+#define ASCII_LOWER(c) ( (c) >= 'a' && (c) <= 'z' )
+#define ASCII_UPPER(c) ( (c) >= 'A' && (c) <= 'Z' )
+#define ASCII_ALPHA(c) ( ASCII_LOWER(c) || ASCII_UPPER(c) )
+#define ASCII_DIGIT(c) ( (c) >= '0' && (c) <= '9' )
+#define ASCII_ALNUM(c) ( ASCII_ALPHA(c) || ASCII_DIGIT(c) )
+
+#define LEADKEYCHAR(c) ( ASCII_ALPHA(c) )
+#define KEYCHAR(c) ( ASCII_ALNUM(c) || (c) == '-' )
+#define LEADOIDCHAR(c) ( ASCII_DIGIT(c) )
+#define OIDCHAR(c) ( ASCII_DIGIT(c) || (c) == '.' )
+
+#define LEADATTRCHAR(c) ( LEADKEYCHAR(c) || LEADOIDCHAR(c) )
+#define ATTRCHAR(c) ( KEYCHAR((c)) || (c) == '.' )
+
#define NEEDSESCAPE(c) ((c) == '\\' || (c) == '"')
#define SLAP_SCHERR_OUTOFMEM 1
struct slap_op;
struct slap_conn;
+struct replog_moddn {
+ char *newrdn;
+ int deloldrdn;
+ char *newsup;
+};
+
/*
* represents an attribute value assertion (i.e., attr=value)
*/
char *f_un_sub_final;
} f_un_sub;
} f_un;
+
+#define f_dn f_un.f_un_type /* used for DN indices */
#define f_type f_un.f_un_type
#define f_ava f_un.f_un_ava
#define f_avtype f_un.f_un_ava.ava_type
/* these should be renamed from be_ to bd_ */
char **be_suffix; /* the DN suffixes of data in this backend */
char **be_nsuffix; /* the normalized DN suffixes in this backend */
+ char **be_suffixAlias; /* pairs of DN suffix aliases and deref values */
char *be_root_dn; /* the magic "root" dn for this db */
char *be_root_ndn; /* the magic "root" normalized dn for this db */
char *be_root_pw; /* the magic "root" password for this db */
char *c_peer_name; /* peer name (trans=addr:port) */
char *c_sock_name; /* sock name (trans=addr:port) */
+#ifdef HAVE_CYRUS_SASL
+ sasl_conn_t *c_sasl_context;
+#endif
+
/* only can be changed by binding thread */
int c_bind_in_progress; /* multi-op bind in progress */