typedef struct slap_attribute_type {
LDAPAttributeType sat_atype;
- char *sat_cname;
+ struct berval sat_cname;
struct slap_attribute_type *sat_sup;
struct slap_attribute_type **sat_subtypes;
MatchingRule *sat_equality;
Syntax *sat_syntax;
struct slap_attr_desc *sat_ad;
struct slap_attribute_type *sat_next;
+ ldap_pvt_thread_mutex_t sat_ad_mutex;
#define sat_oid sat_atype.at_oid
#define sat_names sat_atype.at_names
#define sat_desc sat_atype.at_desc
void *o_private; /* anything the backend needs */
} Operation;
+/*
+ * Caches the result of a backend_group check for ACL evaluation
+ */
+typedef struct slap_gacl {
+ struct slap_gacl *next;
+ Backend *be;
+ ObjectClass *oc;
+ AttributeDescription *at;
+ int res;
+ int len;
+ char ndn[1];
+} GroupAssertion;
+
/*
* represents a connection from an ldap client
*/
Backend *c_authz_backend;
AuthorizationInformation c_authz;
+ GroupAssertion *c_groups;
ber_int_t c_protocol; /* version of the LDAP protocol used by client */