-#ifdef NEW_LOGGING
- LDAP_LOG( OPERATION, ARGS,
- "do_compare: dn (%s) attr(%s) value (%s)\n",
- pdn.bv_val, ava.aa_desc->ad_cname.bv_val, ava.aa_value.bv_val );
-#else
- Debug( LDAP_DEBUG_ARGS, "do_compare: dn (%s) attr (%s) value (%s)\n",
- pdn.bv_val, ava.aa_desc->ad_cname.bv_val, ava.aa_value.bv_val );
-#endif
-
- Statslog( LDAP_DEBUG_STATS, "conn=%lu op=%lu CMP dn=\"%s\" attr=\"%s\"\n",
- op->o_connid, op->o_opid, pdn.bv_val,
- ava.aa_desc->ad_cname.bv_val, 0 );
-
-
- /* deref suffix alias if appropriate */
- suffix_alias( be, &ndn );
-
-#if defined( LDAP_SLAPI )
- slapi_pblock_set( pb, SLAPI_BACKEND, (void *)be );
- slapi_pblock_set( pb, SLAPI_CONNECTION, (void *)conn );
- slapi_pblock_set( pb, SLAPI_OPERATION, (void *)op );
- slapi_pblock_set( pb, SLAPI_BIND_TARGET, (void *)dn.bv_val );
- slapi_pblock_set( pb, SLAPI_MANAGEDSAIT, (void *)(1) );
- slapi_pblock_set( pb, SLAPI_REQCONTROLS, (void *)op->o_ctrls );
- slapi_pblock_set( pb, SLAPI_COMPARE_TYPE, (void *)desc.bv_val );
- slapi_pblock_set( pb, SLAPI_COMPARE_VALUE, (void *)&value );
-
- rc = doPluginFNs( be, SLAPI_PLUGIN_PRE_COMPARE_FN, pb );
- if ( rc != 0 && rc != LDAP_OTHER ) {
- /*
- * either there is no preOp (compare) plugins
- * or a plugin failed. Just log it
- *
- * FIXME: is this correct?
- */
-#ifdef NEW_LOGGING
- LDAP_LOG(( "operation", LDAP_LEVEL_INFO, "do_compare: compare preOps failed\n"));
-#else
- Debug (LDAP_DEBUG_TRACE, " compare preOps failed.\n", 0, 0, 0);
-#endif
- }
-#endif /* defined( LDAP_SLAPI ) */
+ if ( SLAP_SHADOW(op->o_bd) && get_dontUseCopy(op) ) {
+ /* don't use shadow copy */
+ send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
+ "copy not used" );
+
+ } else if ( ava->aa_desc == slap_schema.si_ad_entryDN ) {
+ send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
+ "entryDN compare not supported" );