Hi,

While looking into the failure of test 48272 (addn), I realised that we
were using both target_address and target_spec in the operation struct.
The pblock is a bit inconsistent about their usage also.

I've attached a list of the places we use them. 

I think that this is a mistake, we really only need "one" target value
(probably target_spec). 

I want to propose that we drop target_address for target_spec, update
the pblock to use operation_set_target_spec as needed. 

However, I don't know the full history of these values, so I would like
your input to this design. Is there a difference between target_spec and
target_address?

Thanks,


-- 
Sincerely,

William Brown
Software Engineer
Red Hat, Brisbane
[william@rei 13:15] ~/development/389ds/ds I0> grep -r -n -e 'target_address' 
ldap/servers/plugins/replication/replutil.c:440:    if 
(op->target_address.uniqueid == NULL)
ldap/servers/plugins/replication/replutil.c:447:    if (op->target_address.sdn 
== NULL)
ldap/servers/plugins/replication/windows_inc_protocol.c:1099:    return (strcmp 
(op->target_address.uniqueid, START_ITERATION_ENTRY_UNIQUEID) == 0);
ldap/servers/plugins/replication/windows_inc_protocol.c:1341:                   
                                entry.op->target_address.uniqueid, csn_str,
ldap/servers/plugins/replication/windows_inc_protocol.c:1355:                   
                                entry.op->target_address.uniqueid, csn_str,
ldap/servers/plugins/replication/windows_inc_protocol.c:1366:                   
                                entry.op->target_address.uniqueid, csn_str,
ldap/servers/plugins/replication/windows_inc_protocol.c:1381:                   
                                entry.op->target_address.uniqueid, csn_str);
ldap/servers/plugins/replication/repl5_plugins.c:1136:                  
op_params->target_address.uniqueid = slapi_ch_strdup (uniqueid);
ldap/servers/plugins/replication/repl5_plugins.c:1167:                          
        REPL_GET_DN(&op_params->target_address),
ldap/servers/plugins/replication/repl5_plugins.c:1168:                          
        op_params->target_address.uniqueid,
ldap/servers/plugins/replication/repl5_plugins.c:1177:                  
slapi_ch_free((void**)&op_params->target_address.uniqueid);
ldap/servers/plugins/replication/repl5_plugins.c:1193:          const char *dn 
= op_params ? REPL_GET_DN(&op_params->target_address) : "unknown";
ldap/servers/plugins/replication/repl5_plugins.c:1194:          Slapi_DN *sdn = 
op_params ? (&op_params->target_address)->sdn : NULL;
ldap/servers/plugins/replication/repl5_plugins.c:1195:          char *uniqueid 
= op_params ? op_params->target_address.uniqueid : "unknown";
ldap/servers/plugins/replication/windows_protocol_util.c:1550:  local_dn = 
slapi_sdn_dup( op->target_address.sdn );
ldap/servers/plugins/replication/windows_protocol_util.c:1559:          rc = 
windows_get_local_entry_by_uniqueid(prp, op->target_address.uniqueid, 
&local_entry, 0);
ldap/servers/plugins/replication/windows_protocol_util.c:1561:          rc = 
windows_get_local_tombstone_by_uniqueid(prp, op->target_address.uniqueid, 
&local_entry);
ldap/servers/plugins/replication/windows_protocol_util.c:1570:                  
          op->target_address.uniqueid, &local_entry, 1 /* is_global */);
ldap/servers/plugins/replication/windows_protocol_util.c:1577:                  
                REPL_GET_DN(&op->target_address));
ldap/servers/plugins/replication/windows_protocol_util.c:1590:                  
                REPL_GET_DN(&op->target_address));
ldap/servers/plugins/replication/windows_protocol_util.c:1596:                  
                REPL_GET_DN(&op->target_address), "ours");
ldap/servers/plugins/replication/windows_protocol_util.c:1615:          
REPL_GET_DN(&op->target_address), is_ours ? "ours" : "not ours", 
ldap/servers/plugins/replication/windows_protocol_util.c:1629:                  
        REPL_GET_DN(&op->target_address),
ldap/servers/plugins/replication/windows_protocol_util.c:1637:                  
REPL_GET_DN(&op->target_address), slapi_sdn_get_dn(remote_dn));
ldap/servers/plugins/replication/repl5_inc_protocol.c:1339:     if 
(create_NSDS50ReplUpdateInfoControl(op->target_address.uniqueid,
ldap/servers/plugins/replication/repl5_inc_protocol.c:1353:                     
                                op2string(op->operation_type), 
REPL_GET_DN(&op->target_address),
ldap/servers/plugins/replication/repl5_inc_protocol.c:1387:                     
                                                        
REPL_GET_DN(&op->target_address),
ldap/servers/plugins/replication/repl5_inc_protocol.c:1392:                     
                return_value = conn_send_add(prp->conn, 
REPL_GET_DN(&op->target_address),
ldap/servers/plugins/replication/repl5_inc_protocol.c:1412:                     
                                                
REPL_GET_DN(&op->target_address),
ldap/servers/plugins/replication/repl5_inc_protocol.c:1417:                     
        return_value = conn_send_modify(prp->conn, 
REPL_GET_DN(&op->target_address),
ldap/servers/plugins/replication/repl5_inc_protocol.c:1422:                     
return_value = conn_send_delete(prp->conn, REPL_GET_DN(&op->target_address),
ldap/servers/plugins/replication/repl5_inc_protocol.c:1427:                     
return_value = conn_send_rename(prp->conn, REPL_GET_DN(&op->target_address),
ldap/servers/plugins/replication/repl5_inc_protocol.c:1464:    return (strcmp 
(op->target_address.uniqueid, START_ITERATION_ENTRY_UNIQUEID) == 0);
ldap/servers/plugins/replication/repl5_inc_protocol.c:1810:                     
                                entry.op->target_address.uniqueid, csn_str,
ldap/servers/plugins/replication/repl5_inc_protocol.c:1824:                     
                                entry.op->target_address.uniqueid, csn_str,
ldap/servers/plugins/replication/repl5_inc_protocol.c:1835:                     
                                entry.op->target_address.uniqueid, csn_str,
ldap/servers/plugins/replication/repl5_inc_protocol.c:1850:                     
                                entry.op->target_address.uniqueid, csn_str);
ldap/servers/plugins/replication/repl5_inc_protocol.c:1861:                     
                uniqueid = entry.op->target_address.uniqueid;
ldap/servers/plugins/replication/repl5_inc_protocol.c:1899:                     
                                entry.op->target_address.uniqueid, csn_str);
ldap/servers/plugins/replication/cl5_api.c:1057:                        
op.operation_type, REPL_GET_DN(&op.target_address));
ldap/servers/plugins/replication/cl5_api.c:1077:                        
op.operation_type, REPL_GET_DN(&op.target_address));
ldap/servers/plugins/replication/cl5_api.c:2158:        PR_ASSERT 
(op->target_address.uniqueid);
ldap/servers/plugins/replication/cl5_api.c:2162:        size += strlen 
(op->target_address.uniqueid) + 1;
ldap/servers/plugins/replication/cl5_api.c:2182:                        size += 
REPL_GET_DN_LEN(&op->target_address) + 1;
ldap/servers/plugins/replication/cl5_api.c:2192:                        size += 
REPL_GET_DN_LEN(&op->target_address) + 1;
ldap/servers/plugins/replication/cl5_api.c:2212:                        size += 
REPL_GET_DN_LEN(&op->target_address) + 1;
ldap/servers/plugins/replication/cl5_api.c:2240:        _cl5WriteString 
(op->target_address.uniqueid, &pos);
ldap/servers/plugins/replication/cl5_api.c:2252:                case 
SLAPI_OPERATION_MODIFY:    _cl5WriteString (REPL_GET_DN(&op->target_address), 
&pos);
ldap/servers/plugins/replication/cl5_api.c:2256:                case 
SLAPI_OPERATION_MODRDN:    _cl5WriteString (REPL_GET_DN(&op->target_address), 
&pos);
ldap/servers/plugins/replication/cl5_api.c:2265:                case 
SLAPI_OPERATION_DELETE:    _cl5WriteString (REPL_GET_DN(&op->target_address), 
&pos);
ldap/servers/plugins/replication/cl5_api.c:2345:        _cl5ReadString 
(&op->target_address.uniqueid, &pos);    
ldap/servers/plugins/replication/cl5_api.c:2354:                        
op->target_address.sdn = slapi_sdn_new_dn_passin(rawDN);
ldap/servers/plugins/replication/cl5_api.c:2363:                        
op->target_address.sdn = slapi_sdn_new_dn_passin(rawDN);
ldap/servers/plugins/replication/cl5_api.c:2369:                        
op->target_address.sdn = slapi_sdn_new_dn_passin(rawDN);
ldap/servers/plugins/replication/cl5_api.c:2381:                        
op->target_address.sdn = slapi_sdn_new_dn_passin(rawDN);
ldap/servers/plugins/replication/cl5_api.c:4749:        len += 
LDIF_SIZE_NEEDED(strlen (T_UNIQUEIDSTR), strlen (op->target_address.uniqueid));
ldap/servers/plugins/replication/cl5_api.c:4774:                        len += 
LDIF_SIZE_NEEDED(strlen (T_DNSTR), REPL_GET_DN_LEN(&op->target_address));
ldap/servers/plugins/replication/cl5_api.c:4785:                        len += 
LDIF_SIZE_NEEDED(strlen (T_DNSTR), REPL_GET_DN_LEN(&op->target_address));
ldap/servers/plugins/replication/cl5_api.c:4801:                        if 
(NULL == REPL_GET_DN(&op->target_address)) {
ldap/servers/plugins/replication/cl5_api.c:4806:                        len += 
LDIF_SIZE_NEEDED(strlen (T_DNSTR), REPL_GET_DN_LEN(&op->target_address));
ldap/servers/plugins/replication/cl5_api.c:4829:        
slapi_ldif_put_type_and_value_with_options(&buff, T_UNIQUEIDSTR, 
op->target_address.uniqueid, 
ldap/servers/plugins/replication/cl5_api.c:4830:                                
                        strlen (op->target_address.uniqueid), 0);
ldap/servers/plugins/replication/cl5_api.c:4844:                        
slapi_ldif_put_type_and_value_with_options(&buff, T_DNSTR, 
REPL_GET_DN(&op->target_address), 
ldap/servers/plugins/replication/cl5_api.c:4845:                                
                                        REPL_GET_DN_LEN(&op->target_address), 
0);
ldap/servers/plugins/replication/cl5_api.c:4850:                        
slapi_ldif_put_type_and_value_with_options(&buff, T_DNSTR, 
REPL_GET_DN(&op->target_address), 
ldap/servers/plugins/replication/cl5_api.c:4851:                                
                                        REPL_GET_DN_LEN(&op->target_address), 
0);
ldap/servers/plugins/replication/cl5_api.c:4868:                        
slapi_ldif_put_type_and_value_with_options(&buff, T_DNSTR, 
REPL_GET_DN(&op->target_address), 
ldap/servers/plugins/replication/cl5_api.c:4869:                                
REPL_GET_DN_LEN(&op->target_address), 0);
ldap/servers/plugins/replication/cl5_api.c:4937:                        
op->target_address.uniqueid = slapi_ch_strdup (value.bv_val);
ldap/servers/plugins/replication/cl5_api.c:4946:                                
op->target_address.sdn = slapi_sdn_new_dn_byval(rawDN);
ldap/servers/plugins/replication/cl5_api.c:4949:                                
op->target_address.sdn = slapi_sdn_new_dn_byval(value.bv_val);
ldap/servers/plugins/replication/cl5_api.c:5080:                                
                REPL_GET_DN(&op->target_address));
ldap/servers/plugins/replication/cl5_api.c:5489:                                
csnStr, REPL_GET_DN(&op->target_address));
ldap/servers/plugins/replication/cl5_api.c:6690:    sdn = 
op->target_address.sdn;
ldap/servers/plugins/replication/repl5_replica.c:3805:    
op_params.target_address.sdn = 
slapi_sdn_new_ndn_byval(START_ITERATION_ENTRY_DN);
ldap/servers/plugins/replication/repl5_replica.c:3806:    
op_params.target_address.uniqueid = START_ITERATION_ENTRY_UNIQUEID;
ldap/servers/plugins/replication/repl5_replica.c:3814:    
slapi_sdn_free(&op_params.target_address.sdn);
ldap/servers/plugins/replication/cl4_api.c:244:     
csn_as_string(op->csn,PR_FALSE,s), op->target_address.dn);
ldap/servers/plugins/replication/cl4_api.c:290:         
slapi_entry_attr_set_charptr (e, attr_targetdn, op->target_address.dn);
ldap/servers/plugins/replication/cl4_api.c:348:                 "Logging of 
changes is disabled.\n", csn_as_string(op->csn,PR_FALSE,s), 
op->target_address.dn, 
ldap/servers/plugins/replication/cl5_test.c:488:                
op.target_address.uniqueid = uniqueid;
ldap/servers/plugins/replication/cl5_test.c:489:                
op.target_address.dn = slapi_ch_strdup ("cn=entry,dc=example,dc=com");
ldap/servers/plugins/replication/cl5_test.c:508:                        
slapi_entry_set_dn (op.p.p_add.target_entry, 
slapi_ch_strdup(op.target_address.dn));
ldap/servers/plugins/replication/cl5_test.c:509:                        
slapi_entry_set_uniqueid (op.p.p_add.target_entry, 
slapi_ch_strdup(op.target_address.uniqueid));
ldap/servers/slapd/operation.c:467:     if(sop->target_address.uniqueid!=NULL)
ldap/servers/slapd/operation.c:469:             
sop_new->target_address.uniqueid= 
slapi_ch_strdup(sop->target_address.uniqueid); 
ldap/servers/slapd/operation.c:471:     if(sop->target_address.sdn != NULL)
ldap/servers/slapd/operation.c:473:             sop_new->target_address.sdn = 
slapi_sdn_dup(sop->target_address.sdn);
ldap/servers/slapd/operation.c:528:             slapi_ch_free((void 
**)&sop->target_address.uniqueid);
ldap/servers/slapd/operation.c:529:             
slapi_sdn_free(&sop->target_address.sdn);
ldap/servers/slapd/pblock.c:1145:                       (*(entry_address 
**)value) = &(pblock->pb_op->o_params.target_address);
ldap/servers/slapd/pblock.c:1153:                       Slapi_DN *sdn = 
pblock->pb_op->o_params.target_address.sdn;
ldap/servers/slapd/pblock.c:1168:                       (*(Slapi_DN **)value) = 
pblock->pb_op->o_params.target_address.sdn;
ldap/servers/slapd/pblock.c:1178:                       (*(char **)value) = 
pblock->pb_op->o_params.target_address.udn;
ldap/servers/slapd/pblock.c:1184:                       (*(char **)value) = 
pblock->pb_op->o_params.target_address.uniqueid;
ldap/servers/slapd/pblock.c:2893:                       Slapi_DN *sdn = 
pblock->pb_op->o_params.target_address.sdn;
ldap/servers/slapd/pblock.c:2895:                       
pblock->pb_op->o_params.target_address.sdn =
ldap/servers/slapd/pblock.c:2906:                       
pblock->pb_op->o_params.target_address.sdn = (Slapi_DN *)value;
ldap/servers/slapd/pblock.c:2916:                       
pblock->pb_op->o_params.target_address.udn = (char *)value;
ldap/servers/slapd/pblock.c:2922:                       
pblock->pb_op->o_params.target_address.uniqueid = (char *) value;
ldap/servers/slapd/slapi-private.h:541: entry_address target_address;   /* 
address of target entry */
[william@rei 13:15] ~/development/389ds/ds I0> grep -r -n -e 'target_spec'   
ldap/servers/plugins/retrocl/retrocl.c:202:    
operation_set_target_spec_str(op,RETROCL_CHANGELOG_DN);
ldap/servers/slapd/abandon.c:95:                ts = operation_get_target_spec 
(o);
ldap/servers/slapd/abandon.c:97:                        
operation_set_target_spec (pb->pb_op, ts);
ldap/servers/slapd/operation.c:222:             
slapi_sdn_free(&(*op)->o_target_spec);
ldap/servers/slapd/operation.c:373:operation_get_target_spec (Slapi_Operation 
*op)
ldap/servers/slapd/operation.c:375:     return op->o_target_spec;
ldap/servers/slapd/operation.c:379:operation_set_target_spec (Slapi_Operation 
*op, const Slapi_DN *target_spec)
ldap/servers/slapd/operation.c:382:     PR_ASSERT (target_spec);
ldap/servers/slapd/operation.c:384:     op->o_target_spec = 
slapi_sdn_dup(target_spec);
ldap/servers/slapd/operation.c:388:operation_set_target_spec_str 
(Slapi_Operation *op, const char *target_spec)
ldap/servers/slapd/operation.c:392:     op->o_target_spec = 
slapi_sdn_new_dn_byval (target_spec);
ldap/servers/slapd/add.c:443:   operation_set_target_spec (operation, 
slapi_entry_get_sdn (e));
ldap/servers/slapd/add.c:509:           slapi_pblock_set(pb, SLAPI_TARGET_SDN, 
(void*)operation_get_target_spec (operation));
ldap/servers/slapd/opshared.c:371:  operation_set_target_spec (pb->pb_op, 
basesdn);
ldap/servers/slapd/opshared.c:592:              basesdn = 
operation_get_target_spec(pb->pb_op);
ldap/servers/slapd/opshared.c:595:              operation_set_target_spec 
(pb->pb_op, basesdn);
ldap/servers/slapd/proto-slap.h:897:Slapi_DN* operation_get_target_spec 
(Slapi_Operation *op);
ldap/servers/slapd/proto-slap.h:898:void operation_set_target_spec 
(Slapi_Operation *op, const Slapi_DN *target_spec);
ldap/servers/slapd/proto-slap.h:899:void operation_set_target_spec_str 
(Slapi_Operation *op, const char *target_spec);
ldap/servers/slapd/proto-slap.h:922:                                 
Slapi_PBlock *pb, Slapi_DN *target_spec);
ldap/servers/slapd/saslbind.c:564:        operation_set_target_spec(op, sdn);
ldap/servers/slapd/bind.c:138:    operation_set_target_spec (pb->pb_op, sdn);
ldap/servers/slapd/compare.c:108:       operation_set_target_spec (pb->pb_op, 
&sdn);
ldap/servers/slapd/passwd_extop.c:723:  operation_set_target_spec (pb->pb_op, 
slapi_entry_get_sdn(targetEntry));
ldap/servers/slapd/plugin_internal_op.c:391:    operation_set_target_spec (op, 
sdn);
ldap/servers/slapd/delete.c:249:        operation_set_target_spec (operation, 
sdn);
ldap/servers/slapd/modify.c:667:        operation_set_target_spec (pb->pb_op, 
sdn);
ldap/servers/slapd/unbind.c:77: operation_set_target_spec_str (operation, 
pb->pb_conn->c_dn);
ldap/servers/slapd/defbackend.c:239:            sdn = 
operation_get_target_spec(pb->pb_op);
ldap/servers/slapd/modrdn.c:556:        operation_set_target_spec (pb->pb_op, 
sdn);
ldap/servers/slapd/plugin.c:50:static PRBool plugin_matches_operation (Slapi_DN 
*target_spec, PluginTargetData *ptd, 
ldap/servers/slapd/plugin.c:3715:       Slapi_DN *target_spec;
ldap/servers/slapd/plugin.c:3734:       target_spec = operation_get_target_spec 
(pb->pb_op);
ldap/servers/slapd/plugin.c:3736:       rc = plugin_invoke_plugin_sdn (plugin, 
operation, pb, target_spec);
ldap/servers/slapd/plugin.c:3742:plugin_invoke_plugin_sdn (struct slapdplugin 
*plugin, int operation, Slapi_PBlock *pb, Slapi_DN *target_spec)
ldap/servers/slapd/plugin.c:3816:       if (plugin_matches_operation 
(target_spec, excludedPtd, bindop, isroot, islocal, method) == PR_TRUE) {
ldap/servers/slapd/plugin.c:3820:       return plugin_matches_operation 
(target_spec, ptd, bindop, isroot, islocal, method);
ldap/servers/slapd/plugin.c:3881:PRBool plugin_allow_internal_op (Slapi_DN 
*target_spec, struct slapdplugin *plugin)
ldap/servers/slapd/plugin.c:3897:       be = slapi_be_select(target_spec);
ldap/servers/slapd/plugin.c:3910:       if (plugin_matches_operation 
(target_spec, &config->plgc_excluded_target_subtrees,
ldap/servers/slapd/plugin.c:3915:       return plugin_matches_operation 
(target_spec, &config->plgc_target_subtrees,
ldap/servers/slapd/plugin.c:3919:static PRBool plugin_matches_operation 
(Slapi_DN *target_spec, PluginTargetData *ptd, 
ldap/servers/slapd/plugin.c:3932:        if (bindop && target_spec && 
(slapi_sdn_get_dn (target_spec) == NULL || 
ldap/servers/slapd/plugin.c:3933:            slapi_sdn_get_dn (target_spec)[0] 
== '\0'))
ldap/servers/slapd/plugin.c:3960:               if (slapi_sdn_issuffix 
(target_spec, subtree))
ldap/servers/slapd/plugin.c:4060:static void trace_plugin_invocation (Slapi_DN 
*target_spec, PluginTargetData *ptd, 
ldap/servers/slapd/plugin.c:4068:                                        
"Invocation parameters: target_spec = %s, bindop = %d, isroot=%d, islocal=%d\n"
ldap/servers/slapd/plugin.c:4070:                                        
slapi_sdn_get_ndn (target_spec), bindop, isroot, islocal, ptd->special_data[0],
ldap/servers/slapd/slap.h:1518: Slapi_DN *o_target_spec; /* used to decide 
which plugins should be called for the operation */
ldap/servers/slapd/mapping_tree.c:2045:    operation_set_target_spec(op, sdn);
ldap/servers/slapd/mapping_tree.c:2175:    target_sdn = 
operation_get_target_spec (op);
ldap/servers/slapd/mapping_tree.c:2286:    target_sdn = 
operation_get_target_spec (op);
ldap/servers/slapd/mapping_tree.c:2458:    target_sdn = 
operation_get_target_spec (op);
ldap/servers/slapd/mapping_tree.c:2645:    target_sdn = 
operation_get_target_spec (op);
ldap/servers/slapd/mapping_tree.c:3168:    target_sdn = 
operation_get_target_spec (op);

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
389-devel mailing list -- 389-devel@lists.fedoraproject.org
To unsubscribe send an email to 389-devel-le...@lists.fedoraproject.org

Reply via email to