From: Howard Chu Date: Fri, 14 Jul 2006 22:19:00 +0000 (+0000) Subject: Resurrect special refint modifiersName X-Git-Tag: OPENLDAP_REL_ENG_2_4_3ALPHA~9^2~50 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=6d601637c712b85d0434d05629803a3b4483e523;p=openldap Resurrect special refint modifiersName --- diff --git a/servers/slapd/overlays/refint.c b/servers/slapd/overlays/refint.c index 5744ada497..ce4ecaa29c 100644 --- a/servers/slapd/overlays/refint.c +++ b/servers/slapd/overlays/refint.c @@ -43,6 +43,10 @@ static slap_overinst refint; +/* The DN to use in the ModifiersName for all refint updates */ +static BerValue refint_dn = BER_BVC("cn=Referential Integrity Overlay"); +static BerValue refint_ndn = BER_BVC("cn=referential integrity overlay"); + typedef struct refint_attrs_s { struct refint_attrs_s *next; AttributeDescription *attr; @@ -526,6 +530,25 @@ refint_qtask( void *ctx, void *arg ) rs.sr_type = REP_RESULT; for (ra = dp->attrs; ra; ra = dp->attrs) { dp->attrs = ra->next; + /* Set our ModifiersName */ + if ( SLAP_LASTMOD( op->o_bd )) { + m = op->o_tmpalloc( sizeof(Modifications) + + 4*sizeof(BerValue), op->o_tmpmemctx ); + m->sml_next = op->orm_modlist; + if ( !first ) + first = m; + op->orm_modlist = m; + m->sml_op = LDAP_MOD_REPLACE; + m->sml_flags = SLAP_MOD_INTERNAL; + m->sml_desc = slap_schema.si_ad_modifiersName; + m->sml_type = m->sml_desc->ad_cname; + m->sml_values = (BerVarray)(m+1); + m->sml_nvalues = m->sml_values+2; + BER_BVZERO( &m->sml_values[1] ); + BER_BVZERO( &m->sml_nvalues[1] ); + m->sml_values[0] = refint_dn; + m->sml_nvalues[0] = refint_ndn; + } if ( !BER_BVISEMPTY( &rq->newdn ) || ( ra->next && ra->attr == ra->next->attr )) { m = op->o_tmpalloc( sizeof(Modifications) +