Patchwork [06/11] libnsdb: remove nsdb_split_nce_dn_s()

login
register
mail settings
Submitter Chuck Lever
Date Nov. 6, 2012, 5:33 p.m.
Message ID <20121106173351.26310.43432.stgit@seurat.1015granger.net>
Download mbox | patch
Permalink /patch/197520/
State Accepted
Headers show

Comments

Chuck Lever - Nov. 6, 2012, 5:33 p.m.
Since we now store the full NCE DN in the naming context,
nsdb_split_nce_dn_s() is no longer used.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 src/include/nsdb.h       |    3 -
 src/libnsdb/fileserver.c |  227 ----------------------------------------------
 2 files changed, 0 insertions(+), 230 deletions(-)

Patch

diff --git a/src/include/nsdb.h b/src/include/nsdb.h
index adb9bfb..859c726 100644
--- a/src/include/nsdb.h
+++ b/src/include/nsdb.h
@@ -323,9 +323,6 @@  FedFsStatus	 nsdb_get_nceprefix_s(nsdb_t host, const char *naming_context,
 				char **dn, unsigned int *ldap_err);
 FedFsStatus	 nsdb_get_naming_contexts_s(nsdb_t host, char ***contexts,
 				unsigned int *ldap_err);
-FedFsStatus	 nsdb_split_nce_dn_s(nsdb_t host, const char *nce,
-				char **context, char **prefix,
-				unsigned int *ldap_err);
 FedFsStatus	 nsdb_find_naming_context_s(nsdb_t host, const char *entry,
 				char **context, unsigned int *ldap_err);
 
diff --git a/src/libnsdb/fileserver.c b/src/libnsdb/fileserver.c
index ad53605..8ad4515 100644
--- a/src/libnsdb/fileserver.c
+++ b/src/libnsdb/fileserver.c
@@ -1428,233 +1428,6 @@  out_free:
 }
 
 /**
- * Get a structured DN for the "nce" on "host"
- *
- * @param host an initialized and bound nsdb_t object
- * @param nce a NUL-terminated C string containing the DN of the NSDB container
- * @param nce_dn OUT: a structured LDAPDN for "nce"
- * @param ldap_err OUT: possibly an LDAP error code
- * @return a FedFsStatus code
- *
- * This also tells us if the NCE exists on "host."  Caller must free
- * "nce_dn" with ldap_dnfree(3).
- *
- * ldapsearch equivalent:
- *
- * @verbatim
-
-   ldapsearch -b "nce" -s base "(objectClass=*)"
-   @endverbatim
- *
- */
-static FedFsStatus
-nsdb_get_nce_dn_s(nsdb_t host, const char *nce, LDAPDN *nce_dn,
-		unsigned int *ldap_err)
-{
-	static char *attrs[] = { LDAP_NO_ATTRS, NULL };
-	LDAPMessage *response = NULL;
-	LDAP *ld = host->fn_ldap;
-	FedFsStatus retval;
-	char *dn = NULL;
-	int rc;
-
-	rc = ldap_search_ext_s(ld, nce, LDAP_SCOPE_BASE,
-				"(objectClass=*)", attrs, 0, NULL, NULL,
-				NULL, LDAP_NO_LIMIT, &response);
-	switch (rc) {
-	case LDAP_SUCCESS:
-		break;
-	case LDAP_NO_SUCH_OBJECT:
-		xlog(D_GENERAL, "%s: No entry for NCE %s exists",
-			__func__, nce);
-		return FEDFS_ERR_NSDB_NONCE;
-	default:
-		xlog(D_GENERAL, "%s: LDAP search failed: %s",
-			__func__, ldap_err2string(rc));
-		*ldap_err = rc;
-		return FEDFS_ERR_NSDB_LDAP_VAL;
-	}
-	if (response == NULL) {
-		xlog(D_GENERAL, "%s: Empty LDAP response", __func__);
-		return FEDFS_ERR_NSDB_FAULT;
-	}
-
-	rc = ldap_count_messages(ld, response);
-	switch (rc) {
-	case -1:
-		xlog(D_GENERAL, "%s: Empty LDAP response", __func__);
-		retval = FEDFS_ERR_NSDB_RESPONSE;
-		goto out;
-	case 1:
-		xlog(D_GENERAL, "%s: No entry for NCE %s exists",
-			__func__, nce);
-		retval = FEDFS_ERR_NSDB_NONCE;
-		goto out;
-	default:
-		xlog(D_CALL, "%s: received %d messages", __func__, rc);
-	}
-
-	dn = ldap_get_dn(ld, response);
-	if (dn == NULL) {
-		ldap_get_option(ld, LDAP_OPT_RESULT_CODE, &rc);
-		xlog(D_GENERAL, "%s: Failed to parse DN: %s",
-			__func__, ldap_err2string(rc));
-		*ldap_err = rc;
-		retval = FEDFS_ERR_NSDB_LDAP_VAL;
-		goto out;
-	}
-
-	rc = ldap_str2dn(dn, nce_dn, LDAP_DN_FORMAT_LDAPV3);
-	if (rc != LDAP_SUCCESS) {
-		xlog(D_GENERAL, "%s: Failed to construct NCE DN", __func__);
-		*ldap_err = rc;
-		retval = FEDFS_ERR_NSDB_LDAP_VAL;
-		goto out;
-	}
-
-	retval = FEDFS_OK;
-	xlog(D_CALL, "%s: Found '%s'", __func__, dn);
-
-out:
-	ber_memfree(dn);
-	ldap_msgfree(response);
-	return retval;
-}
-
-/**
- * Peel off left-most RDN in "src" and stick it on right end of "dst"
- *
- * @param src IN/OUT: a structured LDAP distinguished name
- * @param dst IN/OUT: a structured LDAP distinguished name
- * @param ldap_err OUT: possibly an LDAP error code
- * @return a FedFsStatus code
- *
- * Caller must free "src" and "dst" with ldap_dnfree(3).
- */
-static FedFsStatus
-nsdb_move_one_rdn(LDAPDN *src, LDAPDN *dst, unsigned int *ldap_err)
-{
-	FedFsStatus retval;
-	LDAPDN dn;
-
-	dn = *src;
-	retval = nsdb_right_append_rdn(dst, dn[0], ldap_err);
-	if (retval != FEDFS_OK)
-		return retval;
-
-	return nsdb_left_remove_rdn(src, ldap_err);
-}
-
-/**
- * Split an NCE DN into a namingContext and a NCE prefix
- *
- * @param host an initialized and bound nsdb_t object
- * @param nce a NUL-terminated C string containing the DN of the NSDB container
- * @param context OUT: a NUL-terminated C string containing a namingContext DN
- * @param prefix OUT: a NUL-terminated C string containing an NCE prefix DN
- * @param ldap_err OUT: possibly an LDAP error code
- * @return a FedFsStatus code
- *
- * An entry at the NCE DN must already exist on this NSDB.  Caller must
- * free "prefix" and "context" with free(3).
- *
- * Strategy:
- *   1. Start with an empty DN as the prefix
- *   2. Retrieve the server's namingContexts list
- *   3. Check if the NCE exists on the NSDB
- *   4. Loop over the namingContexts, matching against the putative NCE DN
- *   4a. If a match is found, use the matched namingContext
- *       and the prefix formed so far
- *   4b. If no match was found, remove the left-most RDN from
- *       the NCE DN, and append it to right end of the prefix
- *       DN; then go back to 4.
- */
-FedFsStatus
-nsdb_split_nce_dn_s(nsdb_t host, const char *nce, char **context,
-		char **prefix, unsigned int *ldap_err)
-{
-	LDAPDN prefix_dn = NULL;
-	LDAPDN tmp_dn = NULL;
-	char **contexts = NULL;
-	char *tmp = NULL;
-	FedFsStatus retval;
-	int i, rc;
-
-	if (host->fn_ldap == NULL) {
-		xlog(L_ERROR, "%s: NSDB not open", __func__);
-		return FEDFS_ERR_INVAL;
-	}
-
-	if (context == NULL || prefix == NULL || ldap_err == NULL) {
-		xlog(L_ERROR, "%s: Invalid parameter", __func__);
-		return FEDFS_ERR_INVAL;
-	}
-
-	retval = nsdb_get_naming_contexts_s(host, &contexts, ldap_err);
-	if (retval != FEDFS_OK)
-		goto out;
-
-	retval = nsdb_get_nce_dn_s(host, nce, &tmp_dn, ldap_err);
-	if (retval != FEDFS_OK)
-		goto out;
-
-again:
-	for (i = 0; contexts[i] != NULL; i++) {
-		_Bool result;
-
-		result = nsdb_compare_dn_string(tmp_dn, contexts[i], ldap_err);
-		if (*ldap_err != LDAP_SUCCESS) {
-			retval = FEDFS_ERR_NSDB_LDAP_VAL;
-			goto out;
-		}
-		if (result)
-			goto match;
-	}
-
-	retval = nsdb_move_one_rdn(&tmp_dn, &prefix_dn, ldap_err);
-	if (retval != FEDFS_OK)
-		goto out;
-	if (tmp_dn == NULL) {
-		xlog(D_GENERAL, "%s: No matching namingContext found",
-			__func__);
-		/* Pretend user gave us a bogus "nce" string */
-		retval = FEDFS_ERR_INVAL;
-		goto out;
-	}
-	goto again;
-
-match:
-	rc = ldap_dn2str(prefix_dn, &tmp, LDAP_DN_FORMAT_LDAPV3);
-	if (rc != LDAP_SUCCESS) {
-		*ldap_err = rc;
-		retval = FEDFS_ERR_NSDB_LDAP_VAL;
-		goto out;
-	}
-
-	*context = strdup(contexts[i]);
-	*prefix = strdup(tmp);
-	ber_memfree(tmp);
-
-	if (*context == NULL || *prefix == NULL) {
-		free(*prefix);
-		free(*context);
-		xlog(D_GENERAL, "%s: No memory", __func__);
-		retval = FEDFS_ERR_SVRFAULT;
-		goto out;
-	}
-
-	retval = FEDFS_OK;
-
-out:
-	ldap_dnfree(tmp_dn);
-	ldap_dnfree(prefix_dn);
-	nsdb_free_string_array(contexts);
-	xlog(D_CALL, "%s: returning %s",
-		__func__, nsdb_display_fedfsstatus(retval));
-	return retval;
-}
-
-/**
  * See if "entry" ends with one of the items of "contexts"
  *
  * @param entry a NUL-terminated C string containing DN of some entry