[fedfs-utils] [PATCH 09/17] libnsdb: Remove *ldaperr argument from nsdb_ping API

Chuck Lever chuck.lever at oracle.com
Thu Jan 2 12:28:10 PST 2014


Simplify the external libnsdb API by removing the *ldaperr argument
from nsdb_ping_s() and friends.  When it is needed, the ldaperr
value can be extracted with the new nsdb_ldaperr() function.

Signed-off-by: Chuck Lever <chuck.lever at oracle.com>
---
 src/fedfsd/svc.c         |    2 +-
 src/include/nsdb.h       |    4 ++--
 src/libnsdb/fileserver.c |   30 ++++++++++--------------------
 src/nsdbparams/update.c  |    2 +-
 4 files changed, 14 insertions(+), 24 deletions(-)

diff --git a/src/fedfsd/svc.c b/src/fedfsd/svc.c
index 3aa4314..e531f3f 100644
--- a/src/fedfsd/svc.c
+++ b/src/fedfsd/svc.c
@@ -978,8 +978,8 @@ out:
 static FedFsStatus
 fedfsd_test_nsdb(const char *hostname, unsigned short port)
 {
-	unsigned int ldap_err;
 	FedFsStatus retval;
+	int ldap_err;
 
 	xlog(D_CALL, "%s: pinging %s:%u", __func__, hostname, port);
 
diff --git a/src/include/nsdb.h b/src/include/nsdb.h
index c5c87dd..3a183c2 100644
--- a/src/include/nsdb.h
+++ b/src/include/nsdb.h
@@ -406,13 +406,13 @@ FedFsStatus	 nsdb_list_s(nsdb_t host, const char *nce, char ***fsns,
 /**
  * Ping an NSDB host
  */
-FedFsStatus	 nsdb_ping_nsdb_s(nsdb_t host, unsigned int *ldap_err);
+FedFsStatus	 nsdb_ping_nsdb_s(nsdb_t host);
 
 /**
  * Ping an LDAP server
  */
 FedFsStatus	 nsdb_ping_s(const char *hostname, const unsigned short port,
-				unsigned int *ldap_err);
+				int *ldap_err);
 
 /**
  * Enable LDAP debugging when contacting an NSDB
diff --git a/src/libnsdb/fileserver.c b/src/libnsdb/fileserver.c
index d97b5d6..0ad9a35 100644
--- a/src/libnsdb/fileserver.c
+++ b/src/libnsdb/fileserver.c
@@ -1931,14 +1931,13 @@ out:
  *
  * @param host an initialized, bound, and open nsdb_t object
  * @param contexts an array of NUL-terminated UTF-8 strings
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * Returns FEDFS_OK if "host" has at least one namingContext that
  * lists an NCE prefix.  Otherwise a FEDFS_ERR status code is returned.
  */
 static FedFsStatus
-nsdb_ping_contexts_s(nsdb_t host, char **contexts, unsigned int *ldap_err)
+nsdb_ping_contexts_s(nsdb_t host, char **contexts)
 {
 	FedFsStatus retval;
 	char *dn;
@@ -1954,8 +1953,6 @@ nsdb_ping_contexts_s(nsdb_t host, char **contexts, unsigned int *ldap_err)
 		case FEDFS_ERR_NSDB_LDAP_VAL:
 			if (nsdb_ldaperr(host) == LDAP_CONFIDENTIALITY_REQUIRED)
 				retval = FEDFS_ERR_NSDB_AUTH;
-			else
-				*ldap_err = (unsigned int)nsdb_ldaperr(host);
 			goto out;
 		default:
 			retval = FEDFS_ERR_NSDB_NONCE;
@@ -1969,14 +1966,13 @@ out:
  * Ping an NSDB
  *
  * @param host an initialized and bound nsdb_t object
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * Returns FEDFS_OK if "host" is up and has at least one namingContext
  * that lists an NCE prefix.  Otherwise a FEDFS_ERR status code is returned.
  */
 FedFsStatus
-nsdb_ping_nsdb_s(nsdb_t host, unsigned int *ldap_err)
+nsdb_ping_nsdb_s(nsdb_t host)
 {
 	FedFsStatus retval;
 	char **contexts = NULL;
@@ -1991,18 +1987,11 @@ nsdb_ping_nsdb_s(nsdb_t host, unsigned int *ldap_err)
 		return FEDFS_ERR_INVAL;
 	}
 
-	if (ldap_err == NULL) {
-		xlog(L_ERROR, "%s: Invalid parameter", __func__);
-		return FEDFS_ERR_INVAL;
-	}
-
 	retval = nsdb_get_naming_contexts_s(host, &contexts);
-	if (retval != FEDFS_OK) {
-		*ldap_err = (unsigned int)nsdb_ldaperr(host);
+	if (retval != FEDFS_OK)
 		return retval;
-	}
 
-	retval = nsdb_ping_contexts_s(host, contexts, ldap_err);
+	retval = nsdb_ping_contexts_s(host, contexts);
 	nsdb_free_string_array(contexts);
 
 	return retval;
@@ -2022,7 +2011,7 @@ nsdb_ping_nsdb_s(nsdb_t host, unsigned int *ldap_err)
  */
 FedFsStatus
 nsdb_ping_s(const char *hostname, const unsigned short port,
-		unsigned int *ldap_err)
+		int *ldap_err)
 {
 	FedFsStatus retval;
 	nsdb_t host;
@@ -2037,12 +2026,13 @@ nsdb_ping_s(const char *hostname, const unsigned short port,
 		return retval;
 
 	retval = nsdb_open_nsdb(host, NULL, NULL);
-	if (retval != FEDFS_OK) {
-		*ldap_err = (unsigned int)nsdb_ldaperr(host);
+	if (retval != FEDFS_OK)
 		goto out_free;
-	}
 
-	retval = nsdb_ping_nsdb_s(host, ldap_err);
+	retval = nsdb_ping_nsdb_s(host);
+	if (retval != FEDFS_OK)
+		*ldap_err = nsdb_ldaperr(host);
+
 	nsdb_close_nsdb(host);
 
 out_free:
diff --git a/src/nsdbparams/update.c b/src/nsdbparams/update.c
index ef0ceb0..f17da36 100644
--- a/src/nsdbparams/update.c
+++ b/src/nsdbparams/update.c
@@ -102,8 +102,8 @@ nsdbparams_update_usage(const char *progname)
 static FedFsStatus
 nsdbparams_test_nsdb(const char *nsdbname, unsigned short nsdbport)
 {
-	unsigned int ldap_err;
 	FedFsStatus retval;
+	int ldap_err;
 
 	printf("Pinging NSDB %s:%u...\n", nsdbname, nsdbport);
 	fflush(stdout);




More information about the fedfs-utils-devel mailing list