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
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
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 {
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
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 */
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;
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;
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 */
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;
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 */