]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
uses URL extensions to set socket permissions other than default
[openldap] / servers / slapd / slap.h
index e4c5abce4202a0aa385b5e3c458b1af5caca0439..b821ecc38e79db106ee6200232e45f4d8a59637b 100644 (file)
@@ -69,14 +69,13 @@ LDAP_BEGIN_DECL
  */
 #define SLAP_MOD_SOFTADD       0x1000
 
-#define ON     (1)
-#define OFF    (-1)
-#define UNDEFINED (0)
-
 #define MAXREMATCHES (10)
 
 #define SLAP_MAX_WORKER_THREADS                (32)
 
+#define SLAP_SB_MAX_INCOMING_DEFAULT ((1<<18) - 1)
+#define SLAP_SB_MAX_INCOMING_AUTH ((1<<24) - 1)
+
 #define SLAP_TEXT_BUFLEN (256)
 
 /* psuedo error code indicating abandoned operation */
@@ -176,7 +175,7 @@ typedef struct slap_ssf_set {
 
 #define SLAP_INDEX_DEFAULT        SLAP_INDEX_EQUALITY
 
-#define IS_SLAP_INDEX(mask, type)      (((mask) & (type)) == (type) )
+#define IS_SLAP_INDEX(mask, type)      (((mask) & (type)) == (type))
 
 #define SLAP_INDEX_SUBSTR_TYPE    0x0F00UL
 
@@ -196,7 +195,6 @@ typedef struct slap_ssf_set {
 #define SLAP_INDEX_FLAGS         0xF000UL
 #define SLAP_INDEX_NOSUBTYPES    0x1000UL /* don't use index w/ subtypes */
 #define SLAP_INDEX_NOLANG        0x2000UL /* don't use index w/ lang */
-#define SLAP_INDEX_AUTO_SUBTYPES 0x4000UL /* use mask with lang subtypes */
 
 /*
  * there is a single index for each attribute.  these prefixes ensure
@@ -329,8 +327,8 @@ typedef int slap_mr_indexer_func LDAP_P((
        struct slap_syntax *syntax,     /* syntax of stored value */
        struct slap_matching_rule *mr,
        struct berval *prefix,
-       BVarray values,
-       BVarray *keys ));
+       BerVarray values,
+       BerVarray *keys ));
 
 /* Filter index function */
 typedef int slap_mr_filter_func LDAP_P((
@@ -340,11 +338,11 @@ typedef int slap_mr_filter_func LDAP_P((
        struct slap_matching_rule *mr,
        struct berval *prefix,
        void * assertValue,
-       BVarray *keys ));
+       BerVarray *keys ));
 
 typedef struct slap_matching_rule {
        LDAPMatchingRule                smr_mrule;
-       ber_len_t                       smr_oidlen;
+       ber_len_t                               smr_oidlen;
        slap_mask_t                             smr_usage;
 
 #define SLAP_MR_HIDE                   0x8000U
@@ -434,11 +432,11 @@ typedef struct slap_attribute_type {
 
        struct slap_attribute_type      *sat_next;
 
-#define sat_oid                        sat_atype.at_oid
-#define sat_names              sat_atype.at_names
-#define sat_desc               sat_atype.at_desc
+#define sat_oid                                sat_atype.at_oid
+#define sat_names                      sat_atype.at_names
+#define sat_desc                       sat_atype.at_desc
 #define sat_obsolete           sat_atype.at_obsolete
-#define sat_sup_oid            sat_atype.at_sup_oid
+#define sat_sup_oid                    sat_atype.at_sup_oid
 #define sat_equality_oid       sat_atype.at_equality_oid
 #define sat_ordering_oid       sat_atype.at_ordering_oid
 #define sat_substr_oid         sat_atype.at_substr_oid
@@ -446,7 +444,7 @@ typedef struct slap_attribute_type {
 #define sat_single_value       sat_atype.at_single_value
 #define sat_collective         sat_atype.at_collective
 #define sat_no_user_mod                sat_atype.at_no_user_mod
-#define sat_usage              sat_atype.at_usage
+#define sat_usage                      sat_atype.at_usage
 #define sat_extensions         sat_atype.at_extensions
 
        struct slap_attr_desc           *sat_ad;
@@ -473,8 +471,8 @@ typedef struct slap_object_class {
        struct slap_object_class        **soc_sups;
        AttributeType                           **soc_required;
        AttributeType                           **soc_allowed;
-       ObjectClassSchemaCheckFN        *sco_check;
-       slap_mask_t                                     sco_flags;
+       ObjectClassSchemaCheckFN        *soc_check;
+       slap_mask_t                                     soc_flags;
 #define soc_oid                                soc_oclass.oc_oid
 #define soc_names                      soc_oclass.oc_names
 #define soc_desc                       soc_oclass.oc_desc
@@ -488,6 +486,14 @@ typedef struct slap_object_class {
        struct slap_object_class        *soc_next;
 } ObjectClass;
 
+#define        SLAP_OC_ALIAS           0x01
+#define        SLAP_OC_REFERRAL        0x02
+#define        SLAP_OC_SUBENTRY        0x04
+#define        SLAP_OC_DYNAMICOBJECT   0x08
+#define        SLAP_OC_COLLECTIVEATTRIBUTESUBENTRY     0x10
+#define        SLAP_OC__MASK           0x1F
+#define        SLAP_OC__END            0x20
+
 #ifdef LDAP_EXTENDED_SCHEMA
 /*
  * DIT content rule
@@ -519,8 +525,9 @@ typedef struct slap_attr_desc {
        struct berval ad_cname;         /* canonical name, must be specified */
        struct berval ad_lang;          /* empty if no language tags */
        unsigned ad_flags;
-#define SLAP_DESC_NONE         0x0U
-#define SLAP_DESC_BINARY       0x1U
+#define SLAP_DESC_NONE                 0x00U
+#define SLAP_DESC_BINARY               0x01U
+#define SLAP_DESC_LANG_RANGE   0x80U
 } AttributeDescription;
 
 typedef struct slap_attr_name {
@@ -529,8 +536,11 @@ typedef struct slap_attr_name {
        ObjectClass *an_oc;
 } AttributeName;
 
-#define slap_ad_is_lang(ad)            ( (ad)->ad_lang.bv_len != 0 )
-#define slap_ad_is_binary(ad)  ( (int)((ad)->ad_flags & SLAP_DESC_BINARY) ? 1 : 0 )
+#define slap_ad_is_lang(ad)                    ( (ad)->ad_lang.bv_len != 0 )
+#define slap_ad_is_binary(ad)          \
+       ( ((ad)->ad_flags & SLAP_DESC_LANG_RANGE) ? 1 : 0 )
+#define slap_ad_is_lang_range(ad)      \
+       ( ((ad)->ad_flags & SLAP_DESC_BINARY) ? 1 : 0 )
 
 /*
  * pointers to schema elements used internally
@@ -545,7 +555,7 @@ struct slap_internal_schema {
        ObjectClass *si_oc_subentry;
        ObjectClass *si_oc_subschema;
        ObjectClass *si_oc_monitor;
-       ObjectClass *si_oc_collectiveAttributes;
+       ObjectClass *si_oc_collectiveAttributeSubentry;
        ObjectClass *si_oc_dynamicObject;
 
        /* objectClass attribute descriptions */
@@ -559,7 +569,7 @@ struct slap_internal_schema {
        AttributeDescription *si_ad_modifyTimestamp;
        AttributeDescription *si_ad_hasSubordinates;
        AttributeDescription *si_ad_subschemaSubentry;
-       AttributeDescription *si_ad_collectiveSubentry;
+       AttributeDescription *si_ad_collectiveSubentries;
        AttributeDescription *si_ad_collectiveExclusions;
        AttributeDescription *si_ad_entryUUID;
        AttributeDescription *si_ad_entryCSN;
@@ -714,8 +724,11 @@ typedef struct slap_filter {
  */
 typedef struct slap_attr {
        AttributeDescription *a_desc;
-       BVarray a_vals;
+       BerVarray       a_vals;
        struct slap_attr        *a_next;
+       unsigned a_flags;
+#define SLAP_ATTR_IXADD                0x1U
+#define SLAP_ATTR_IXDEL                0x2U
 } Attribute;
 
 
@@ -745,6 +758,10 @@ typedef struct slap_entry {
 
        Attribute       *e_attrs;       /* list of attributes + values */
 
+       slap_mask_t     e_ocflags;
+
+       struct berval   e_bv;           /* For entry_encode/entry_decode */
+
        /* for use by the backend for any purpose */
        void*   e_private;
 } Entry;
@@ -756,7 +773,7 @@ typedef struct slap_mod {
        int sm_op;
        AttributeDescription *sm_desc;
        struct berval sm_type;
-       BVarray sm_bvalues;
+       BerVarray sm_bvalues;
 } Modification;
 
 typedef struct slap_mod_list {
@@ -811,7 +828,7 @@ typedef enum slap_style_e {
 
 typedef struct slap_authz_info {
        ber_tag_t       sai_method;             /* LDAP_AUTH_* from <ldap.h> */
-       char *          sai_mech;               /* SASL Mechanism */
+       struct berval   sai_mech;               /* SASL Mechanism */
        struct berval   sai_dn;                 /* DN for reporting purposes */
        struct berval   sai_ndn;                /* Normalized DN */
 
@@ -893,14 +910,14 @@ typedef struct slap_access {
        int                     a_dn_self;
 
        slap_style_t a_peername_style;
-       char            *a_peername_pat;
+       struct berval   a_peername_pat;
        slap_style_t a_sockname_style;
-       char            *a_sockname_pat;
+       struct berval   a_sockname_pat;
 
        slap_style_t a_domain_style;
-       char            *a_domain_pat;
+       struct berval   a_domain_pat;
        slap_style_t a_sockurl_style;
-       char            *a_sockurl_pat;
+       struct berval   a_sockurl_pat;
        slap_style_t a_set_style;
        struct berval   a_set_pat;
 
@@ -1119,7 +1136,7 @@ struct slap_backend_db {
        struct slap_replica_info **be_replica;  /* replicas of this backend (in master) */
        char    *be_replogfile; /* replication log file (in master)        */
        struct berval be_update_ndn;    /* allowed to make changes (in replicas) */
-       BVarray be_update_refs; /* where to refer modifying clients to */
+       BerVarray       be_update_refs; /* where to refer modifying clients to */
        char    *be_realm;
 
        void    *be_private;    /* anything the backend database needs     */
@@ -1192,7 +1209,7 @@ typedef int (BI_op_extended) LDAP_P((
     struct berval ** rspdata,
        LDAPControl *** rspctrls,
        const char **   text,
-       BVarray *refs ));
+       BerVarray *refs ));
 
 typedef int (BI_entry_release_rw) LDAP_P((BackendDB *bd,
                struct slap_conn *c, struct slap_op *o,
@@ -1215,7 +1232,7 @@ typedef int (BI_acl_attribute)  LDAP_P((Backend *bd,
                struct slap_conn *c, struct slap_op *o,
                Entry *e, struct berval *edn,
                AttributeDescription *entry_at,
-               BVarray *vals ));
+               BerVarray *vals ));
 
 typedef int (BI_operational)  LDAP_P((Backend *bd,
                struct slap_conn *c, struct slap_op *o,
@@ -1355,16 +1372,13 @@ struct slap_backend_info {
 #define o_tls_ssf              o_authz.sai_tls_ssf
 #define o_sasl_ssf             o_authz.sai_sasl_ssf
 
-struct slap_op;
-struct slap_conn;
-
 typedef void (slap_response)( struct slap_conn *, struct slap_op *,
        ber_tag_t, ber_int_t, ber_int_t, const char *, const char *,
-       BVarray, const char *, struct berval *,
+       BerVarray, const char *, struct berval *,
        struct berval *, LDAPControl ** );
 
 typedef void (slap_sresult)( struct slap_conn *, struct slap_op *,
-       ber_int_t, const char *, const char *, BVarray,
+       ber_int_t, const char *, const char *, BerVarray,
        LDAPControl **, int nentries);
 
 typedef int (slap_sendentry)( BackendDB *, struct slap_conn *,
@@ -1395,6 +1409,7 @@ typedef struct slap_op {
        char o_managedsait;
        char o_subentries;
        char o_subentries_visibility;
+       char o_noop;
 
        int             o_abandon;      /* abandon flag */
        ldap_pvt_thread_mutex_t o_abandonmutex; /* protects o_abandon  */
@@ -1445,14 +1460,14 @@ typedef struct slap_conn {
        time_t          c_activitytime; /* when the connection was last used */
        unsigned long           c_connid;       /* id of this connection for stats*/
 
-       char            *c_listener_url;        /* listener URL */
-       char            *c_peer_domain; /* DNS name of client */
-       char            *c_peer_name;   /* peer name (trans=addr:port) */
-       char            *c_sock_name;   /* sock name (trans=addr:port) */
+       struct berval   c_listener_url; /* listener URL */
+       struct berval   c_peer_domain;  /* DNS name of client */
+       struct berval   c_peer_name;    /* peer name (trans=addr:port) */
+       struct berval   c_sock_name;    /* sock name (trans=addr:port) */
 
        /* only can be changed by binding thread */
        int             c_sasl_bind_in_progress;        /* multi-op bind in progress */
-       char    *c_sasl_bind_mech;                      /* mech in progress */
+       struct berval   c_sasl_bind_mech;                       /* mech in progress */
        struct berval   c_cdn;
 
        /* authentication backend */
@@ -1522,11 +1537,6 @@ typedef struct sasl_regexp {
   int offset[SASLREGEX_REPLACE+2];        /* offsets of $1,$2... in *replace */
 } SaslRegexp_t;
 
-/* Flags for telling slap_sasl_getdn() what type of identity is being passed */
-#define FLAG_GETDN_FINAL   1
-#define FLAG_GETDN_AUTHCID 2
-#define FLAG_GETDN_AUTHZID 4
-
 /*
  * listener; need to access it from monitor backend
  */