]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
typo in comment
[openldap] / servers / slapd / slap.h
index 2eb949d8c6bda446988c6a696f9b4426de4f6949..4b16ae14d97b6e9b1dba2aaac46bd07560e9c2fb 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2010 The OpenLDAP Foundation.
+ * Copyright 1998-2011 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -65,6 +65,9 @@ LDAP_BEGIN_DECL
 #define SLAP_CONTROL_X_SESSION_TRACKING
 #define SLAP_CONTROL_X_WHATFAILED
 #define SLAP_CONFIG_DELETE
+#ifndef SLAP_SCHEMA_EXPOSE
+#define SLAP_SCHEMA_EXPOSE
+#endif
 #endif
 
 #define LDAP_DYNAMIC_OBJECTS
@@ -107,12 +110,25 @@ LDAP_BEGIN_DECL
 # define SLAP_STRING_UNKNOWN   "unknown"
 #endif /* ! TCP Wrappers */
 
-/* LDAPMod.mod_op value ===> Must be kept in sync with ldap.h!
- * This is a value used internally by the backends. It is needed to allow
- * adding values that already exist without getting an error as required by
- * modrdn when the new rdn was already an attribute value itself.
+/* LDAPMod.mod_op value ===> Must be kept in sync with ldap.h! */
+/* These values are used internally by the backends. */
+/* SLAP_MOD_SOFTADD allows adding values that already exist without getting
+ * an error as required by modrdn when the new rdn was already an attribute
+ * value itself.
+ */
+#define SLAP_MOD_SOFTADD               0x1000
+/* SLAP_MOD_SOFTDEL allows deleting values if they exist without getting
+ * an error otherwise.
+ */
+#define SLAP_MOD_SOFTDEL               0x1001
+/* SLAP_MOD_ADD_IF_NOT_PRESENT allows adding values unless the attribute
+ * is already present without getting an error.
+ */
+#define SLAP_MOD_ADD_IF_NOT_PRESENT    0x1002
+/* SLAP_MOD_DEL_IF_PRESENT allows deleting values if the attribute
+ * is present, without getting an error otherwise.
+ * The semantics can be obtained using SLAP_MOD_SOFTDEL with NULL values.
  */
-#define SLAP_MOD_SOFTADD       0x1000
 
 #define MAXREMATCHES (100)
 
@@ -126,10 +142,10 @@ LDAP_BEGIN_DECL
 
 #define SLAP_TEXT_BUFLEN (256)
 
-/* psuedo error code indicating abandoned operation */
+/* pseudo error code indicating abandoned operation */
 #define SLAPD_ABANDON (-1024)
 
-/* psuedo error code indicating disconnect */
+/* pseudo error code indicating disconnect */
 #define SLAPD_DISCONNECT (-1025)
 
 /* unknown config file directive */
@@ -412,12 +428,13 @@ struct Syntax {
 #define SLAP_SYNTAX_BLOB       0x0001U /* syntax treated as blob (audio) */
 #define SLAP_SYNTAX_BINARY     0x0002U /* binary transfer required (certificate) */
 #define SLAP_SYNTAX_BER                0x0004U /* stored in BER encoding (certificate) */
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_SYNTAX_HIDE       0x0000U /* publish everything */
 #else
 #define SLAP_SYNTAX_HIDE       0x8000U /* hide (do not publish) */
 #endif
 #define        SLAP_SYNTAX_HARDCODE    0x10000U        /* This is hardcoded schema */
+#define        SLAP_SYNTAX_DN          0x20000U        /* Treat like a DN */
 
        Syntax                          **ssyn_sups;
 
@@ -519,7 +536,7 @@ struct MatchingRule {
 
        slap_mask_t                     smr_usage;
 
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_MR_HIDE                   0x0000U
 #else
 #define SLAP_MR_HIDE                   0x8000U
@@ -690,7 +707,7 @@ struct AttributeType {
 #define SLAP_AT_NONE                   0x0000U
 #define SLAP_AT_ABSTRACT               0x0100U /* cannot be instantiated */
 #define SLAP_AT_FINAL                  0x0200U /* cannot be subtyped */
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_AT_HIDE                   0x0000U /* publish everything */
 #else
 #define SLAP_AT_HIDE                   0x8000U /* hide attribute */
@@ -788,7 +805,7 @@ struct ObjectClass {
 #define        SLAP_OC__MASK           0x00FF
 #define        SLAP_OC__END            0x0100
 #define SLAP_OC_OPERATIONAL    0x4000
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_OC_HIDE           0x0000
 #else
 #define SLAP_OC_HIDE           0x8000
@@ -1282,7 +1299,9 @@ typedef enum slap_style_e {
        ACL_STYLE_SELF,
        ACL_STYLE_IP,
        ACL_STYLE_IPV6,
-       ACL_STYLE_PATH
+       ACL_STYLE_PATH,
+
+       ACL_STYLE_NONE
 } slap_style_t;
 
 typedef struct AuthorizationInformation {
@@ -1537,6 +1556,7 @@ typedef struct AccessControlState {
 
        /* Value dependent acl where processing can restart */
        AccessControl  *as_vd_acl;
+       int as_vd_acl_present;
        int as_vd_acl_count;
        slap_mask_t             as_vd_mask;
 
@@ -1547,7 +1567,7 @@ typedef struct AccessControlState {
        /* True if started to process frontend ACLs */
        int as_fe_done;
 } AccessControlState;
-#define ACL_STATE_INIT { NULL, ACL_NONE, NULL, 0, ACL_PRIV_NONE, -1, 0 }
+#define ACL_STATE_INIT { NULL, ACL_NONE, NULL, 0, 0, ACL_PRIV_NONE, -1, 0 }
 
 typedef struct AclRegexMatches {        
        int dn_count;
@@ -1581,12 +1601,19 @@ LDAP_SLAPD_V (int) slapMode;
 #define        SLAP_TOOL_READONLY      0x0400
 #define        SLAP_TOOL_QUICK         0x0800
 #define SLAP_TOOL_NO_SCHEMA_CHECK      0x1000
+#define SLAP_TOOL_VALUE_CHECK  0x2000
 
 #define SB_TLS_DEFAULT         (-1)
 #define SB_TLS_OFF             0
 #define SB_TLS_ON              1
 #define SB_TLS_CRITICAL                2
 
+typedef struct slap_keepalive {
+       int sk_idle;
+       int sk_probes;
+       int sk_interval;
+} slap_keepalive;
+
 typedef struct slap_bindconf {
        struct berval sb_uri;
        int sb_version;
@@ -1601,6 +1628,7 @@ typedef struct slap_bindconf {
        struct berval sb_realm;
        struct berval sb_authcId;
        struct berval sb_authzId;
+       slap_keepalive sb_keepalive;
 #ifdef HAVE_TLS
        void *sb_tls_ctx;
        char *sb_tls_cert;
@@ -1721,12 +1749,12 @@ struct syncinfo_s;
 #define SLAP_SYNCUUID_SET_SIZE 256
 
 struct sync_cookie {
-       struct berval *ctxcsn;
-       struct berval octet_str;
+       BerVarray ctxcsn;
+       int *sids;
+       int numcsns;
        int rid;
+       struct berval octet_str;
        int sid;
-       int numcsns;
-       int *sids;
        LDAP_STAILQ_ENTRY(sync_cookie) sc_next;
 };
 
@@ -1785,6 +1813,7 @@ struct BackendDB {
 #define                be_entry_open bd_info->bi_tool_entry_open
 #define                be_entry_close bd_info->bi_tool_entry_close
 #define                be_entry_first bd_info->bi_tool_entry_first
+#define                be_entry_first_x bd_info->bi_tool_entry_first_x
 #define                be_entry_next bd_info->bi_tool_entry_next
 #define                be_entry_reindex bd_info->bi_tool_entry_reindex
 #define                be_entry_get bd_info->bi_tool_entry_get
@@ -1923,6 +1952,7 @@ struct BackendDB {
        struct slap_limits **be_limits; /* regex-based size and time limits */
        AccessControl *be_acl;  /* access control list for this backend    */
        slap_access_t   be_dfltaccess;  /* access given if no acl matches          */
+       AttributeName   *be_extra_anlist;       /* attributes that need to be added to search requests (ITS#6513) */
 
        /* Replica Information */
        struct berval be_update_ndn;    /* allowed to make changes (in replicas) */
@@ -2011,7 +2041,7 @@ typedef struct req_abandon_s {
        ber_int_t rs_msgid;
 } req_abandon_s;
 
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_EXOP_HIDE 0x0000
 #else
 #define SLAP_EXOP_HIDE 0x8000
@@ -2086,22 +2116,23 @@ struct SlapReply {
                rep_extended_s sru_extended;
        } sr_un;
        slap_mask_t sr_flags;
-#define REP_ENTRY_MODIFIABLE   0x0001U
-#define REP_ENTRY_MUSTBEFREED  0x0002U
-#define REP_ENTRY_MUSTRELEASE  0x0004U
-#define        REP_ENTRY_MASK          (REP_ENTRY_MODIFIABLE|REP_ENTRY_MUSTBEFREED|REP_ENTRY_MUSTRELEASE)
+#define        REP_ENTRY_MODIFIABLE    ((slap_mask_t) 0x0001U)
+#define        REP_ENTRY_MUSTBEFREED   ((slap_mask_t) 0x0002U)
+#define        REP_ENTRY_MUSTRELEASE   ((slap_mask_t) 0x0004U)
+#define        REP_ENTRY_MASK          (REP_ENTRY_MODIFIABLE|REP_ENTRY_MUSTFLUSH)
+#define        REP_ENTRY_MUSTFLUSH     (REP_ENTRY_MUSTBEFREED|REP_ENTRY_MUSTRELEASE)
 
-#define REP_MATCHED_MUSTBEFREED        0x0010U
+#define        REP_MATCHED_MUSTBEFREED ((slap_mask_t) 0x0010U)
 #define        REP_MATCHED_MASK        (REP_MATCHED_MUSTBEFREED)
 
-#define REP_REF_MUSTBEFREED    0x0020U
+#define REP_REF_MUSTBEFREED    ((slap_mask_t) 0x0020U)
 #define REP_REF_MASK           (REP_REF_MUSTBEFREED)
 
-#define REP_CTRLS_MUSTBEFREED  0x0040U
+#define REP_CTRLS_MUSTBEFREED  ((slap_mask_t) 0x0040U)
 #define REP_CTRLS_MASK         (REP_CTRLS_MUSTBEFREED)
 
-#define        REP_NO_ENTRYDN          0x1000U
-#define        REP_NO_SUBSCHEMA        0x2000U
+#define        REP_NO_ENTRYDN          ((slap_mask_t) 0x1000U)
+#define        REP_NO_SUBSCHEMA        ((slap_mask_t) 0x2000U)
 #define        REP_NO_OPERATIONALS     (REP_NO_ENTRYDN|REP_NO_SUBSCHEMA)
 };
 
@@ -2154,6 +2185,7 @@ typedef BI_conn_func BI_connection_destroy;
 typedef int (BI_tool_entry_open) LDAP_P(( BackendDB *be, int mode ));
 typedef int (BI_tool_entry_close) LDAP_P(( BackendDB *be ));
 typedef ID (BI_tool_entry_first) LDAP_P(( BackendDB *be ));
+typedef ID (BI_tool_entry_first_x) LDAP_P(( BackendDB *be, struct berval *base, int scope, Filter *f ));
 typedef ID (BI_tool_entry_next) LDAP_P(( BackendDB *be ));
 typedef Entry* (BI_tool_entry_get) LDAP_P(( BackendDB *be, ID id ));
 typedef ID (BI_tool_entry_put) LDAP_P(( BackendDB *be, Entry *e, 
@@ -2253,7 +2285,8 @@ struct BackendInfo {
        /* hooks for slap tools */
        BI_tool_entry_open      *bi_tool_entry_open;
        BI_tool_entry_close     *bi_tool_entry_close;
-       BI_tool_entry_first     *bi_tool_entry_first;
+       BI_tool_entry_first     *bi_tool_entry_first;   /* deprecated */
+       BI_tool_entry_first_x   *bi_tool_entry_first_x;
        BI_tool_entry_next      *bi_tool_entry_next;
        BI_tool_entry_get       *bi_tool_entry_get;
        BI_tool_entry_put       *bi_tool_entry_put;
@@ -2969,7 +3002,7 @@ struct Listener {
 /* number of response controls supported */
 #define SLAP_MAX_RESPONSE_CONTROLS   6
 
-#ifdef LDAP_DEVEL
+#ifdef SLAP_SCHEMA_EXPOSE
 #define SLAP_CTRL_HIDE                         0x00000000U
 #else
 #define SLAP_CTRL_HIDE                         0x80000000U