Skip to content

Commit

Permalink
Trac Ticket 139 - eliminate the use of char *dn in favor of Slapi_DN *dn
Browse files Browse the repository at this point in the history
https://fedorahosted.org/389/ticket/139

Fix description: The oritinal RFE had been already implemented in
the commit f639711:
    Reduce the number of DN normalization
In this patch, the Slapi_DN creation (slapi_sdn_{new,set,init}_dn_*)
are replaced with corresponding _normdn_ or _ndn_ APIs which takes
advantage of the knowledge that the DN is already optimized or not.
  • Loading branch information
nhosoi committed Jan 24, 2012
1 parent 9760c1c commit 04dd396
Show file tree
Hide file tree
Showing 21 changed files with 66 additions and 63 deletions.
2 changes: 1 addition & 1 deletion ldap/servers/plugins/acctpolicy/acct_config.c
Expand Up @@ -42,7 +42,7 @@ acct_policy_load_config_startup( Slapi_PBlock* pb, void* plugin_id ) {
int rc;

/* Retrieve the config entry */
config_sdn = slapi_sdn_new_dn_byref( PLUGIN_CONFIG_DN );
config_sdn = slapi_sdn_new_normdn_byref( PLUGIN_CONFIG_DN );
rc = slapi_search_internal_get_entry( config_sdn, NULL, &config_entry,
plugin_id);
slapi_sdn_free( &config_sdn );
Expand Down
2 changes: 1 addition & 1 deletion ldap/servers/plugins/acctpolicy/acct_plugin.c
Expand Up @@ -274,7 +274,7 @@ acct_bind_postop( Slapi_PBlock *pb )
/* We're not always tracking logins, so check whether the entry is
covered by an account policy to decide whether we should track */
if( tracklogin == 0 ) {
sdn = slapi_sdn_new_dn_byref( dn );
sdn = slapi_sdn_new_normdn_byref( dn );
ldrc = slapi_search_internal_get_entry_ext( sdn, NULL, &target_entry,
plugin_id, txn );

Expand Down
2 changes: 1 addition & 1 deletion ldap/servers/plugins/acl/acleffectiverights.c
Expand Up @@ -376,7 +376,7 @@ _ger_new_gerpb (
*/
gerop->o_extension = factory_create_extension ( get_operation_object_type(), (void *)gerop, (void *)conn );
slapi_pblock_set ( *gerpb, SLAPI_OPERATION, gerop );
slapi_sdn_set_dn_byval ( &gerop->o_sdn, subjectndn );
slapi_sdn_set_ndn_byval ( &gerop->o_sdn, subjectndn );
geraclpb = acl_get_ext ( ACL_EXT_OPERATION, (void *)gerop);
acl_init_aclpb ( *gerpb, geraclpb, subjectndn, 0 );
geraclpb->aclpb_res_type |= ACLPB_EFFECTIVE_RIGHTS;
Expand Down
2 changes: 1 addition & 1 deletion ldap/servers/plugins/acl/aclinit.c
Expand Up @@ -156,7 +156,7 @@ aclinit_main()
* rootdse entry so we search for acis in there explicitly here.
*/

sdn = slapi_sdn_new_dn_byval("");
sdn = slapi_sdn_new_ndn_byval("");
slapi_log_error ( SLAPI_LOG_ACL, plugin_name,
"Searching for all acis(scope base) at suffix ''\n");
aclinit_search_and_update_aci ( 0, /* thisbeonly */
Expand Down
6 changes: 3 additions & 3 deletions ldap/servers/plugins/automember/automember.c
Expand Up @@ -349,7 +349,7 @@ automember_start(Slapi_PBlock * pb)
/* Set the alternate config area if one is defined. */
slapi_pblock_get(pb, SLAPI_PLUGIN_CONFIG_AREA, &config_area);
if (config_area) {
automember_set_config_area(slapi_sdn_new_dn_byval(config_area));
automember_set_config_area(slapi_sdn_new_normdn_byval(config_area));
}

/*
Expand Down Expand Up @@ -1025,7 +1025,7 @@ automember_parse_regex_entry(struct configEntry *config, Slapi_Entry *e)

if (rule) {
/* Fill in the target group. */
rule->target_group_dn = slapi_sdn_new_dn_byval(target_group);
rule->target_group_dn = slapi_sdn_new_normdn_byval(target_group);

if (!PR_CLIST_IS_EMPTY((PRCList *)config->inclusive_rules)) {
list = PR_LIST_HEAD((PRCList *)config->inclusive_rules);
Expand Down Expand Up @@ -1079,7 +1079,7 @@ automember_parse_regex_entry(struct configEntry *config, Slapi_Entry *e)

if (rule) {
/* Fill in the target group. */
rule->target_group_dn = slapi_sdn_new_dn_byval(target_group);
rule->target_group_dn = slapi_sdn_new_normdn_byval(target_group);

if (!PR_CLIST_IS_EMPTY((PRCList *)config->exclusive_rules)) {
list = PR_LIST_HEAD((PRCList *)config->exclusive_rules);
Expand Down
15 changes: 9 additions & 6 deletions ldap/servers/plugins/dna/dna.c
Expand Up @@ -1236,7 +1236,7 @@ dna_load_host_port()
attrs[2] = "nsslapd-secureport";
attrs[3] = NULL;

config_dn = slapi_sdn_new_dn_byref("cn=config");
config_dn = slapi_sdn_new_ndn_byref("cn=config");
if (config_dn) {
slapi_search_internal_get_entry(config_dn, attrs, &e, getPluginID());
slapi_sdn_free(&config_dn);
Expand Down Expand Up @@ -1506,7 +1506,7 @@ dna_get_shared_servers(struct configEntry *config_entry, PRCList **servers, void
Slapi_DN *cfg_sdn = NULL;
int i;

cfg_sdn = slapi_sdn_new_dn_byref(config_entry->shared_cfg_dn);
cfg_sdn = slapi_sdn_new_normdn_byref(config_entry->shared_cfg_dn);

/* We found some entries. Go through them and
* order them based off of remaining values. */
Expand Down Expand Up @@ -2206,11 +2206,14 @@ dna_update_shared_config(struct configEntry * config_entry, void *txn)
* already exist, we add it. */
if (ret == LDAP_NO_SUCH_OBJECT) {
Slapi_Entry *e = NULL;
Slapi_DN *sdn =
slapi_sdn_new_normdn_byref(config_entry->shared_cfg_dn);

/* Set up the new shared config entry */
e = slapi_entry_alloc();
/* the entry now owns the dup'd dn */
slapi_entry_init(e, slapi_ch_strdup(config_entry->shared_cfg_dn), NULL);
slapi_entry_init_ext(e, sdn, NULL); /* sdn is copied into e */
slapi_sdn_free(&sdn);

slapi_entry_add_string(e, SLAPI_ATTR_OBJECTCLASS, "extensibleObject");
slapi_entry_add_string(e, DNA_HOSTNAME, hostname);
Expand Down Expand Up @@ -2434,7 +2437,7 @@ static int dna_is_replica_bind_dn(char *range_dn, char *bind_dn)
ret = 1;
goto done;
}
replica_sdn = slapi_sdn_new_dn_passin(replica_dn);
replica_sdn = slapi_sdn_new_normdn_passin(replica_dn);

attrs[0] = DNA_REPL_BIND_DN;
attrs[1] = 0;
Expand Down Expand Up @@ -2479,7 +2482,7 @@ static int dna_get_replica_bind_creds(char *range_dn, struct dnaServer *server,
int ret = LDAP_OPERATIONS_ERROR;

/* Find the backend suffix where the shared config is stored. */
range_sdn = slapi_sdn_new_dn_byref(range_dn);
range_sdn = slapi_sdn_new_normdn_byref(range_dn);
if ((be = slapi_be_select(range_sdn)) != NULL) {
be_suffix = slapi_sdn_get_dn(slapi_be_getsuffix(be, 0));
}
Expand Down Expand Up @@ -3398,7 +3401,7 @@ dna_release_range(char *range_dn, PRUint64 *lower, PRUint64 *upper)
list = PR_LIST_HEAD(dna_global_config);
while ((list != dna_global_config) && match != 1) {
config_entry = (struct configEntry *)list;
cfg_base_sdn = slapi_sdn_new_dn_byref(config_entry->shared_cfg_base);
cfg_base_sdn = slapi_sdn_new_normdn_byref(config_entry->shared_cfg_base);

if (slapi_sdn_compare(cfg_base_sdn, range_sdn) == 0) {
/* We found a match. Set match flag to
Expand Down
4 changes: 2 additions & 2 deletions ldap/servers/plugins/linkedattrs/fixup_task.c
Expand Up @@ -369,7 +369,7 @@ linked_attrs_add_backlinks_callback(Slapi_Entry *e, void *callback_data)
for (i = 0; targets && targets[i]; ++i) {
char *targetdn = (char *)targets[i];
int perform_update = 0;
Slapi_DN *targetsdn = slapi_sdn_new_dn_byref(targetdn);
Slapi_DN *targetsdn = slapi_sdn_new_normdn_byref(targetdn);

if (g_get_shutdown()) {
return -1;
Expand All @@ -382,7 +382,7 @@ linked_attrs_add_backlinks_callback(Slapi_Entry *e, void *callback_data)
/* Find out the root suffix that the linkdn is in
* and see if the target is in the same backend. */
Slapi_Backend *be = NULL;
Slapi_DN *linksdn = slapi_sdn_new_dn_byref(linkdn);
Slapi_DN *linksdn = slapi_sdn_new_normdn_byref(linkdn);

if ((be = slapi_be_select(linksdn))) {
perform_update = slapi_sdn_issuffix(targetsdn, slapi_be_getsuffix(be, 0));
Expand Down
2 changes: 1 addition & 1 deletion ldap/servers/plugins/linkedattrs/linked_attrs.c
Expand Up @@ -1472,7 +1472,7 @@ linked_attrs_mod_backpointers(char *linkdn, char *type,
perform_update = slapi_dn_issuffix(targetdn, scope);
} else {
Slapi_Backend *be = NULL;
Slapi_DN *linksdn = slapi_sdn_new_dn_byref(linkdn);
Slapi_DN *linksdn = slapi_sdn_new_normdn_byref(linkdn);

if ((be = slapi_be_select(linksdn))) {
perform_update = slapi_sdn_issuffix(targetsdn, slapi_be_getsuffix(be, 0));
Expand Down
38 changes: 19 additions & 19 deletions ldap/servers/plugins/memberof/memberof.c
Expand Up @@ -382,7 +382,7 @@ int memberof_postop_del(Slapi_PBlock *pb)
{
int ret = 0;
MemberOfConfig configCopy = {0, 0, 0, 0};
char *dn;
char *normdn;
void *caller_id = NULL;

slapi_log_error( SLAPI_LOG_TRACE, MEMBEROF_PLUGIN_SUBSYSTEM,
Expand All @@ -396,7 +396,7 @@ int memberof_postop_del(Slapi_PBlock *pb)
return 0;
}

if(memberof_oktodo(pb) && (dn = memberof_getdn(pb)))
if(memberof_oktodo(pb) && (normdn = memberof_getdn(pb)))
{
struct slapi_entry *e = NULL;
void *txn = NULL;
Expand All @@ -418,7 +418,7 @@ int memberof_postop_del(Slapi_PBlock *pb)
/* remove this DN from the
* membership lists of groups
*/
memberof_del_dn_from_groups(pb, &configCopy, dn, txn);
memberof_del_dn_from_groups(pb, &configCopy, normdn, txn);

/* is the entry of interest as a group? */
if(e && configCopy.group_filter && !slapi_filter_test_simple(e, configCopy.group_filter))
Expand All @@ -431,7 +431,7 @@ int memberof_postop_del(Slapi_PBlock *pb)
{
if (0 == slapi_entry_attr_find(e, configCopy.groupattrs[i], &attr))
{
memberof_del_attr_list(pb, &configCopy, dn, attr, txn);
memberof_del_attr_list(pb, &configCopy, normdn, attr, txn);
}
}
}
Expand Down Expand Up @@ -536,7 +536,7 @@ int memberof_call_foreach_dn(Slapi_PBlock *pb, char *dn,
(we don't support having members and groups in
different backends - issues with offline / read only backends)
*/
sdn = slapi_sdn_new_dn_byref(dn);
sdn = slapi_sdn_new_normdn_byref(dn);
be = slapi_be_select(sdn);
if(be)
{
Expand Down Expand Up @@ -789,7 +789,7 @@ int memberof_replace_dn_type_callback(Slapi_Entry *e, void *callback_data)
int memberof_postop_modify(Slapi_PBlock *pb)
{
int ret = 0;
char *dn = 0;
char *normdn = 0;
Slapi_Mods *smods = 0;
Slapi_Mod *smod = 0;
LDAPMod **mods;
Expand All @@ -807,8 +807,7 @@ int memberof_postop_modify(Slapi_PBlock *pb)
return 0;
}

if(memberof_oktodo(pb) &&
(dn = memberof_getdn(pb)))
if(memberof_oktodo(pb) && (normdn = memberof_getdn(pb)))
{
int config_copied = 0;
MemberOfConfig *mainConfig = 0;
Expand Down Expand Up @@ -866,7 +865,7 @@ int memberof_postop_modify(Slapi_PBlock *pb)
case LDAP_MOD_ADD:
{
/* add group DN to targets */
memberof_add_smod_list(pb, &configCopy, dn, smod, txn);
memberof_add_smod_list(pb, &configCopy, normdn, smod, txn);
break;
}

Expand All @@ -878,20 +877,20 @@ int memberof_postop_modify(Slapi_PBlock *pb)
* entry, which the replace code deals with. */
if (slapi_mod_get_num_values(smod) == 0)
{
memberof_replace_list(pb, &configCopy, dn, txn);
memberof_replace_list(pb, &configCopy, normdn, txn);
}
else
{
/* remove group DN from target values in smod*/
memberof_del_smod_list(pb, &configCopy, dn, smod, txn);
memberof_del_smod_list(pb, &configCopy, normdn, smod, txn);
}
break;
}

case LDAP_MOD_REPLACE:
{
/* replace current values */
memberof_replace_list(pb, &configCopy, dn, txn);
memberof_replace_list(pb, &configCopy, normdn, txn);
break;
}

Expand Down Expand Up @@ -937,7 +936,7 @@ int memberof_postop_add(Slapi_PBlock *pb)
{
int ret = 0;
int interested = 0;
char *dn = 0;
char *normdn = 0;
void *caller_id = NULL;

slapi_log_error( SLAPI_LOG_TRACE, MEMBEROF_PLUGIN_SUBSYSTEM,
Expand All @@ -951,7 +950,7 @@ int memberof_postop_add(Slapi_PBlock *pb)
return 0;
}

if(memberof_oktodo(pb) && (dn = memberof_getdn(pb)))
if(memberof_oktodo(pb) && (normdn = memberof_getdn(pb)))
{
MemberOfConfig *mainConfig = 0;
MemberOfConfig configCopy = {0, 0, 0, 0};
Expand Down Expand Up @@ -984,7 +983,7 @@ int memberof_postop_add(Slapi_PBlock *pb)
{
if(0 == slapi_entry_attr_find(e, configCopy.groupattrs[i], &attr))
{
memberof_add_attr_list(pb, &configCopy, dn, attr, txn);
memberof_add_attr_list(pb, &configCopy, normdn, attr, txn);
}
}

Expand Down Expand Up @@ -1049,6 +1048,7 @@ int memberof_oktodo(Slapi_PBlock *pb)
* memberof_getdn()
*
* Get dn of target entry
* Note: slapi_sdn_get_dn returns normalized dn.
*
*/
char *memberof_getdn(Slapi_PBlock *pb)
Expand All @@ -1057,7 +1057,7 @@ char *memberof_getdn(Slapi_PBlock *pb)
Slapi_DN *sdn = NULL;

slapi_pblock_get(pb, SLAPI_TARGET_SDN, &sdn);
dn = slapi_sdn_get_dn(sdn);
dn = slapi_sdn_get_dn(sdn); /* returns norm dn */

return (char *)dn;
}
Expand Down Expand Up @@ -1124,7 +1124,7 @@ int memberof_modop_one_replace_r(Slapi_PBlock *pb, MemberOfConfig *config,
}

/* determine if this is a group op or single entry */
op_to_sdn = slapi_sdn_new_dn_byref(op_to);
op_to_sdn = slapi_sdn_new_normdn_byref(op_to);
slapi_search_internal_get_entry_ext( op_to_sdn, config->groupattrs,
&e, memberof_get_plugin_id(), txn);
if(!e)
Expand Down Expand Up @@ -1157,7 +1157,7 @@ int memberof_modop_one_replace_r(Slapi_PBlock *pb, MemberOfConfig *config,
if(base_sdn)
{
filter_str = slapi_ch_smprintf("(%s=%s)",
config->memberof_attr, op_to);
config->memberof_attr, op_to);
}

if(filter_str)
Expand Down Expand Up @@ -1748,7 +1748,7 @@ int memberof_is_direct_member(MemberOfConfig *config, Slapi_Value *groupdn,
Slapi_Attr *attr = 0;
int i = 0;

sdn = slapi_sdn_new_dn_byref(slapi_value_get_string(groupdn));
sdn = slapi_sdn_new_normdn_byref(slapi_value_get_string(groupdn));

slapi_search_internal_get_entry_ext(sdn, config->groupattrs,
&group_e, memberof_get_plugin_id(), txn);
Expand Down
12 changes: 6 additions & 6 deletions ldap/servers/plugins/mep/mep.c
Expand Up @@ -365,7 +365,7 @@ mep_start(Slapi_PBlock * pb)
/* Set the alternate config area if one is defined. */
slapi_pblock_get(pb, SLAPI_PLUGIN_CONFIG_AREA, &config_area);
if (config_area) {
mep_set_config_area(slapi_sdn_new_dn_byval(config_area));
mep_set_config_area(slapi_sdn_new_normdn_byval(config_area));
}

/*
Expand Down Expand Up @@ -2182,7 +2182,7 @@ mep_pre_op(Slapi_PBlock * pb, int modop)
/* Fetch the origin entry so we can locate the config template. */
origin_dn = slapi_entry_attr_get_charptr(e, MEP_MANAGED_BY_TYPE);
if (origin_dn) {
origin_sdn = slapi_sdn_new_dn_byref(origin_dn);
origin_sdn = slapi_sdn_new_normdn_byref(origin_dn);
slapi_search_internal_get_entry_ext(origin_sdn, 0,
&origin_e, mep_get_plugin_id(), txn);
slapi_sdn_free(&origin_sdn);
Expand Down Expand Up @@ -2419,8 +2419,8 @@ mep_mod_post_op(Slapi_PBlock *pb)

/* Check if we need to rename the managed entry. */
if (mapped_dn) {
mapped_sdn = slapi_sdn_new_dn_passin(mapped_dn);
managed_sdn = slapi_sdn_new_dn_byref(managed_dn);
mapped_sdn = slapi_sdn_new_normdn_passin(mapped_dn);
managed_sdn = slapi_sdn_new_normdn_byref(managed_dn);

if (slapi_sdn_compare(managed_sdn, mapped_sdn) != 0) {
mep_rename_managed_entry(e, mapped_sdn, managed_sdn, txn);
Expand Down Expand Up @@ -2739,14 +2739,14 @@ mep_modrdn_post_op(Slapi_PBlock *pb)
* it has already been renamed by another plug-in. If it
* has already been renamed, we need to use the new DN to
* perform our updates. */
managed_sdn = slapi_sdn_new_dn_byref(managed_dn);
managed_sdn = slapi_sdn_new_normdn_byref(managed_dn);

if (slapi_search_internal_get_entry_ext(managed_sdn, 0,
NULL, mep_get_plugin_id(), txn) == LDAP_NO_SUCH_OBJECT) {
slapi_ch_free_string(&managed_dn);
/* This DN is not a copy, so we don't want to free it later. */
managed_dn = slapi_entry_get_dn(new_managed_entry);
slapi_sdn_set_dn_byref(managed_sdn, managed_dn);
slapi_sdn_set_normdn_byref(managed_sdn, managed_dn);
free_managed_dn = 0;
}

Expand Down
4 changes: 2 additions & 2 deletions ldap/servers/plugins/referint/referint.c
Expand Up @@ -971,7 +971,7 @@ referint_thread_func(void *arg)

while( GetNextLine(thisline, MAX_LINE, prfd) ){
ptoken = ldap_utf8strtok_r(thisline, delimiter, &iter);
sdn = slapi_sdn_new_dn_byref(ptoken);
sdn = slapi_sdn_new_normdn_byref(ptoken);

ptoken = ldap_utf8strtok_r (NULL, delimiter, &iter);
if(!strcasecmp(ptoken, "NULL")) {
Expand All @@ -984,7 +984,7 @@ referint_thread_func(void *arg)
if (!strcasecmp(ptoken, "NULL")) {
tmpsuperior = NULL;
} else {
tmpsuperior = slapi_sdn_new_dn_byref(ptoken);
tmpsuperior = slapi_sdn_new_normdn_byref(ptoken);
}

update_integrity(plugin_argv, sdn, tmprdn,
Expand Down
2 changes: 1 addition & 1 deletion ldap/servers/plugins/replication/repl5_replica.c
Expand Up @@ -3132,7 +3132,7 @@ replica_log_ruv_elements_nolock (const Replica *r)
special target dn */
memset (&op_params, 0, sizeof (op_params));
op_params.operation_type = SLAPI_OPERATION_DELETE;
op_params.target_address.sdn = slapi_sdn_new_dn_byval(START_ITERATION_ENTRY_DN);
op_params.target_address.sdn = slapi_sdn_new_ndn_byval(START_ITERATION_ENTRY_DN);
op_params.target_address.uniqueid = START_ITERATION_ENTRY_UNIQUEID;
op_params.csn = csn;
repl_gen = ruv_get_replica_generation (ruv);
Expand Down

0 comments on commit 04dd396

Please sign in to comment.