- if ( SLAP_LASTMOD( op->o_bd ) ) {
- mod = *modtail;
- if ( get_manageDIT( op ) ) {
- for ( mod = mods; mod != *modtail; mod = mod->sml_next ) {
- if ( mod->sml_desc == slap_schema.si_ad_entryUUID ) {
- break;
- }
- }
- }
-
- if ( mod == *modtail ) {
- char uuidbuf[ LDAP_LUTIL_UUIDSTR_BUFSIZE ];
-
- tmpval.bv_len = lutil_uuidstr( uuidbuf, sizeof( uuidbuf ) );
- tmpval.bv_val = uuidbuf;
-
- mod = (Modifications *) ch_malloc( sizeof( Modifications ) );
- mod->sml_op = mop;
- mod->sml_flags = SLAP_MOD_INTERNAL;
- mod->sml_next = NULL;
- BER_BVZERO( &mod->sml_type );
- mod->sml_desc = slap_schema.si_ad_entryUUID;
- mod->sml_values =
- (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
- ber_dupbv( &mod->sml_values[0], &tmpval );
- BER_BVZERO( &mod->sml_values[1] );
- assert( !BER_BVISNULL( &mod->sml_values[0] ) );
- mod->sml_nvalues =
- (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
- (*mod->sml_desc->ad_type->sat_equality->smr_normalize)(
- SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
- mod->sml_desc->ad_type->sat_syntax,
- mod->sml_desc->ad_type->sat_equality,
- mod->sml_values, mod->sml_nvalues, NULL );
- BER_BVZERO( &mod->sml_nvalues[1] );
- *modtail = mod;
- modtail = &mod->sml_next;
- }
-
- mod = *modtail;
- if ( get_manageDIT( op ) ) {
- for ( mod = mods; mod != *modtail; mod = mod->sml_next ) {
- if ( mod->sml_desc == slap_schema.si_ad_creatorsName ) {
- break;
- }
- }
- }
-
- if ( mod == *modtail ) {
- mod = (Modifications *) ch_malloc( sizeof( Modifications ) );
- mod->sml_op = mop;
- mod->sml_flags = SLAP_MOD_INTERNAL;
- mod->sml_next = NULL;
- BER_BVZERO( &mod->sml_type );
- mod->sml_desc = slap_schema.si_ad_creatorsName;
- mod->sml_values =
- (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
- ber_dupbv( &mod->sml_values[0], &name );
- BER_BVZERO( &mod->sml_values[1] );
- assert( !BER_BVISNULL( &mod->sml_values[0] ) );
- mod->sml_nvalues =
- (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
- ber_dupbv( &mod->sml_nvalues[0], &nname );
- BER_BVZERO( &mod->sml_nvalues[1] );
- assert( !BER_BVISNULL( &mod->sml_nvalues[0] ) );
- *modtail = mod;
- modtail = &mod->sml_next;
- }
-
- mod = *modtail;
- if ( get_manageDIT( op ) ) {
- for ( mod = mods; mod != *modtail; mod = mod->sml_next ) {
- if ( mod->sml_desc == slap_schema.si_ad_createTimestamp ) {
- break;
- }
- }
- }
-
- if ( mod == *modtail ) {
- mod = (Modifications *) ch_malloc( sizeof( Modifications ) );
- mod->sml_op = mop;
- mod->sml_flags = SLAP_MOD_INTERNAL;
- mod->sml_next = NULL;
- BER_BVZERO( &mod->sml_type );
- mod->sml_desc = slap_schema.si_ad_createTimestamp;
- mod->sml_values =
- (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
- ber_dupbv( &mod->sml_values[0], ×tamp );
- BER_BVZERO( &mod->sml_values[1] );
- assert( !BER_BVISNULL( &mod->sml_values[0] ) );
- mod->sml_nvalues = NULL;
- *modtail = mod;
- modtail = &mod->sml_next;
- }
- }
- }
-
- if ( SLAP_LASTMOD( op->o_bd ) ) {
- mod = (Modifications *) ch_malloc( sizeof( Modifications ) );
- mod->sml_op = mop;
- mod->sml_flags = SLAP_MOD_INTERNAL;
- mod->sml_next = NULL;
- BER_BVZERO( &mod->sml_type );
- mod->sml_desc = slap_schema.si_ad_entryCSN;
- mod->sml_values = (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
- ber_dupbv( &mod->sml_values[0], &csn );
- BER_BVZERO( &mod->sml_values[1] );
- assert( !BER_BVISNULL( &mod->sml_values[0] ) );
- mod->sml_nvalues = NULL;
- *modtail = mod;
- modtail = &mod->sml_next;
-
- mod = *modtail;
- if ( get_manageDIT( op ) ) {
- for ( mod = mods; mod != *modtail; mod = mod->sml_next ) {
- if ( mod->sml_desc == slap_schema.si_ad_modifiersName ) {
- break;
- }
- }
- }
-
- if ( mod == *modtail ) {