- be = glue_back_select (b0, ndn->bv_val);
-
- if (be && be->be_compare) {
- rc = be->be_compare (be, conn, op, dn, ndn, ava);
- } else {
- rc = LDAP_UNWILLING_TO_PERFORM;
- send_ldap_result (conn, op, rc, NULL, "No compare target found",
- NULL, NULL);
- }
- return rc;
-}
-
-static int
-glue_back_modify (
- BackendDB *b0,
- Connection *conn,
- Operation *op,
- struct berval *dn,
- struct berval *ndn,
- Modifications *mod
-)
-{
- BackendDB *be;
- int rc;
-
- be = glue_back_select (b0, ndn->bv_val);
-
- if (be && be->be_modify) {
- rc = be->be_modify (be, conn, op, dn, ndn, mod);
- } else {
- rc = LDAP_UNWILLING_TO_PERFORM;
- send_ldap_result (conn, op, rc, NULL,
- "No modify target found", NULL, NULL);
- }
- return rc;
-}
-
-static int
-glue_back_modrdn (
- BackendDB *b0,
- Connection *conn,
- Operation *op,
- struct berval *dn,
- struct berval *ndn,
- struct berval *newrdn,
- struct berval *nnewrdn,
- int del,
- struct berval *newsup,
- struct berval *nnewsup
-)
-{
- BackendDB *be;
- int rc;
-
- be = glue_back_select (b0, ndn->bv_val);
-
- if (be && be->be_modrdn) {
- rc = be->be_modrdn (be, conn, op, dn, ndn,
- newrdn, nnewrdn, del, newsup, nnewsup );
- } else {
- rc = LDAP_UNWILLING_TO_PERFORM;
- send_ldap_result (conn, op, rc, NULL,
- "No modrdn target found", NULL, NULL);
- }
- return rc;
-}
-
-static int
-glue_back_add (
- BackendDB *b0,
- Connection *conn,
- Operation *op,
- Entry *e
-)
-{
- BackendDB *be;
- int rc;
-
- be = glue_back_select (b0, e->e_ndn);
-
- if (be && be->be_add) {
- rc = be->be_add (be, conn, op, e);
- } else {
- rc = LDAP_UNWILLING_TO_PERFORM;
- send_ldap_result (conn, op, rc, NULL, "No add target found",
- NULL, NULL);
- }
- return rc;
-}
-
-static int
-glue_back_delete (
- BackendDB *b0,
- Connection *conn,
- Operation *op,
- struct berval *dn,
- struct berval *ndn
-)
-{
- BackendDB *be;
- int rc;
-
- be = glue_back_select (b0, ndn->bv_val);
-
- if (be && be->be_delete) {
- rc = be->be_delete (be, conn, op, dn, ndn);
- } else {
- rc = LDAP_UNWILLING_TO_PERFORM;
- send_ldap_result (conn, op, rc, NULL, "No delete target found",
- NULL, NULL);
- }
- return rc;
-}
-
-static int
-glue_back_release_rw (
- BackendDB *b0,
- Connection *conn,
- Operation *op,
- Entry *e,
- int rw
-)
-{
- BackendDB *be;
- int rc;
-
- be = glue_back_select (b0, e->e_ndn);
-
- if (be && be->be_release) {
- rc = be->be_release (be, conn, op, e, rw);
- } else {
- entry_free (e);
- rc = 0;