-/* Copyright 2004, Symas Corporation.
- * All Rights Reserved.
+/* translucent.c - translucent proxy module */
+/* $OpenLDAP$ */
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 2004-2005 The OpenLDAP Foundation.
+ * Portions Copyright 2005 Symas Corporation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+/* ACKNOWLEDGEMENTS:
+ * This work was initially developed by Symas Corp. for inclusion in
+ * OpenLDAP Software. This work was sponsored by Hewlett-Packard.
*/
#include "portable.h"
Operation nop = *op;
slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
struct berval dn = { 0, NULL };
- char *odn = op->o_req_ndn.bv_val;
Attribute *a;
Entry *e;
- int idn, ldn;
+ struct berval pdn;
- /* tis more work to use strchr() for a berval... */
- for(idn = 0; odn[idn] && odn[idn] != ','; idn++);
- if(!idn || !odn[idn]) return; /* because you never know */
- idn++;
- ldn = dn.bv_len = op->o_req_ndn.bv_len - idn;
- dn.bv_val = ch_malloc(ldn + 1);
- strcpy(dn.bv_val, odn + idn);
+ dnParent( &op->o_req_ndn, &pdn );
+ ber_dupbv( &dn, &pdn );
Debug(LDAP_DEBUG_TRACE, "=> glue_parent: fabricating glue for <%s>\n", dn.bv_val, 0, 0);
slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
overlay_stack *ov = on->on_bi.bi_private;
- translucent_configuration *cf = ov->config;
void *private = op->o_bd->be_private;
Entry ne, *e, *re = NULL;
Attribute *a, *ax;
mm = m;
m = m->sml_next;
mm->sml_next = NULL; /* hack */
- slap_mods_free(mm);
+ slap_mods_free(mm, 1);
if(m) continue;
}
m->sml_op = LDAP_MOD_ADD;
slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
overlay_stack *ov = on->on_bi.bi_private;
void *private = op->o_bd->be_private;
- translucent_configuration *cf = ov->config;
AttributeAssertion *ava = op->orc_ava;
- Attribute *a, *an, *ra, *as = NULL;
- Entry *e, *ee, *re;
+ Entry *e;
int rc;
Debug(LDAP_DEBUG_TRACE, "==> translucent_compare: <%s> %s:%s\n",
slap_overinst *on;
Entry *e, *re = NULL;
Attribute *a, *ax, *an, *as = NULL;
- BerVarray b, bx;
void *private;
- int i, rc, size;
+ int rc;
if(!op || !rs || rs->sr_type != REP_SEARCH || !rs->sr_entry)
return(SLAP_CB_CONTINUE);
slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
slap_callback cb = { NULL, NULL, NULL, NULL };
overlay_stack *ov = on->on_bi.bi_private;
- translucent_configuration *cf = ov->config;
void *private = op->o_bd->be_private;
int rc;
slap_overinst *on = (slap_overinst *) be->bd_info;
overlay_stack *ov = on->on_bi.bi_private;
void *private = be->be_private;
+ void *be_cf_ocs = be->be_cf_ocs;
int rc;
/* "this should never happen" */
}
be->be_private = ov->private;
+ be->be_cf_ocs = ov->info->bi_cf_ocs;
rc = ov->info->bi_db_config ? ov->info->bi_db_config(be, fname, lineno, argc, argv) : 0;
be->be_private = private;
+ be->be_cf_ocs = be_cf_ocs;
/* pass okay or error up, SLAP_CONF_UNKNOWN might be ours */
if(rc == 0 || rc == 1) return(rc);
static int translucent_close(BackendDB *be) {
slap_overinst *on = (slap_overinst *) be->bd_info;
overlay_stack *ov = on->on_bi.bi_private;
- translucent_configuration *cf = ov->config;
void *private = be->be_private;
int rc;