[fedfs-utils] [PATCH 10/17] libnsdb: Remove *ldaperr argument from nsdb_list API
Chuck Lever
chuck.lever at oracle.com
Thu Jan 2 12:28:18 PST 2014
Simplify the external libnsdb API by removing the *ldaperr argument
from nsdb_list_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/include/nsdb.h | 3 +--
src/libnsdb/fileserver.c | 29 +++++++++++------------------
src/nsdbc/nsdb-list.c | 28 +++++++++++-----------------
3 files changed, 23 insertions(+), 37 deletions(-)
diff --git a/src/include/nsdb.h b/src/include/nsdb.h
index 3a183c2..2aafcb5 100644
--- a/src/include/nsdb.h
+++ b/src/include/nsdb.h
@@ -400,8 +400,7 @@ FedFsStatus nsdb_get_fsn_s(nsdb_t host, const char *nce,
/**
* Enumerate FSNs
*/
-FedFsStatus nsdb_list_s(nsdb_t host, const char *nce, char ***fsns,
- unsigned int *ldap_err);
+FedFsStatus nsdb_list_s(nsdb_t host, const char *nce, char ***fsns);
/**
* Ping an NSDB host
diff --git a/src/libnsdb/fileserver.c b/src/libnsdb/fileserver.c
index 0ad9a35..222b47a 100644
--- a/src/libnsdb/fileserver.c
+++ b/src/libnsdb/fileserver.c
@@ -1754,7 +1754,6 @@ nsdb_parse_fsn_entry(LDAP *ld, LDAPMessage *entry, char ***fsns)
* @param host an initialized and bound nsdb_t object
* @param nce a NUL-terminated C string containing the DN of the NSDB container
* @param fsns OUT: pointer to an array of NUL-terminated C strings containing FSN UUIDs
- * @param ldap_err OUT: possibly an LDAP error code
* @return a FedFsStatus code
*
* ldapsearch equivalent:
@@ -1765,18 +1764,17 @@ nsdb_parse_fsn_entry(LDAP *ld, LDAPMessage *entry, char ***fsns)
@endverbatim
*/
static FedFsStatus
-nsdb_list_find_entries_s(nsdb_t host, const char *nce, char ***fsns,
- unsigned int *ldap_err)
+nsdb_list_find_entries_s(nsdb_t host, const char *nce, char ***fsns)
{
LDAPMessage *response, *message;
LDAP *ld = host->fn_ldap;
FedFsStatus retval;
- int rc, entries;
+ int entries;
char **tmp;
- rc = nsdb_search_nsdb_all_s(ld, nce, LDAP_SCOPE_ONE,
+ host->fn_ldaperr = nsdb_search_nsdb_all_s(ld, nce, LDAP_SCOPE_ONE,
"(objectClass=fedfsFsn)", &response);
- switch (rc) {
+ switch (host->fn_ldaperr) {
case LDAP_SUCCESS:
case LDAP_REFERRAL:
break;
@@ -1786,8 +1784,7 @@ nsdb_list_find_entries_s(nsdb_t host, const char *nce, char ***fsns,
return FEDFS_ERR_NSDB_NOFSN;
default:
xlog(D_GENERAL, "%s: LDAP search failed: %s\n",
- __func__, ldap_err2string(rc));
- *ldap_err = rc;
+ __func__, ldap_err2string(host->fn_ldaperr));
return FEDFS_ERR_NSDB_LDAP_VAL;
}
if (response == NULL) {
@@ -1822,7 +1819,7 @@ nsdb_list_find_entries_s(nsdb_t host, const char *nce, char ***fsns,
case LDAP_RES_SEARCH_RESULT:
retval = nsdb_parse_result(ld, message,
&host->fn_referrals,
- ldap_err);
+ &host->fn_ldaperr);
break;
default:
xlog(L_ERROR, "%s: Unrecognized LDAP message type",
@@ -1854,13 +1851,12 @@ out:
* @param host an initialized and bound nsdb_t object
* @param nce a NUL-terminated C string containing DN of NSDB container entry
* @param fsns OUT: pointer to an array of NUL-terminated C strings containing FSN UUIDs
- * @param ldap_err OUT: possibly an LDAP error code
* @return a FedFsStatus code
*
* If caller did not provide an NCE, discover one by querying the NSDB.
*/
FedFsStatus
-nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err)
+nsdb_list_s(nsdb_t host, const char *nce, char ***fsns)
{
char **contexts, **nce_list;
FedFsStatus retval;
@@ -1876,13 +1872,13 @@ nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err)
return FEDFS_ERR_INVAL;
}
- if (fsns == NULL || ldap_err == NULL) {
+ if (fsns == NULL) {
xlog(L_ERROR, "%s: Invalid parameter", __func__);
return FEDFS_ERR_INVAL;
}
if (nce != NULL)
- return nsdb_list_find_entries_s(host, nce, fsns, ldap_err);
+ return nsdb_list_find_entries_s(host, nce, fsns);
/*
* Caller did not provide an nce. Discover the server's NSDB
@@ -1890,10 +1886,8 @@ nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err)
* containers.
*/
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;
- }
for (i = 0; contexts[i] != NULL; i++);
nce_list = calloc(i + 1, sizeof(char *));
@@ -1914,8 +1908,7 @@ nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err)
goto out;
for (j = 0; nce_list[j] != NULL; j++) {
- retval = nsdb_list_find_entries_s(host, nce_list[j],
- fsns, ldap_err);
+ retval = nsdb_list_find_entries_s(host, nce_list[j], fsns);
if (retval == FEDFS_OK)
break;
}
diff --git a/src/nsdbc/nsdb-list.c b/src/nsdbc/nsdb-list.c
index bfd15b1..43f3410 100644
--- a/src/nsdbc/nsdb-list.c
+++ b/src/nsdbc/nsdb-list.c
@@ -145,17 +145,16 @@ nsdb_list_resolve_and_display_fsn(nsdb_t host, const char *nce, const char *fsn_
*
* @param host an initialized and bound nsdb_t object
* @param nce a NUL-terminated C string containing DN of NSDB container entry
- * @param ldap_err OUT: possibly an LDAP error code
* @return a FedFsStatus code
*/
static FedFsStatus
-nsdb_list_display_one_nce(nsdb_t host, const char *nce, unsigned int *ldap_err)
+nsdb_list_display_one_nce(nsdb_t host, const char *nce)
{
FedFsStatus retval;
char **fsns;
int i;
- retval = nsdb_list_s(host, nce, &fsns, ldap_err);
+ retval = nsdb_list_s(host, nce, &fsns);
switch (retval) {
case FEDFS_OK:
printf(" NCE: %s\n\n", nce);
@@ -183,14 +182,13 @@ nsdb_list_display_one_nce(nsdb_t host, const char *nce, unsigned int *ldap_err)
*
* @param host an initialized and bound nsdb_t object
* @param nce a NUL-terminated C string containing DN of NSDB container entry
- * @param ldap_err OUT: possibly an LDAP error code
* @return a FedFsStatus code
*/
static FedFsStatus
-nsdb_list_display_nce(nsdb_t host, const char *nce, unsigned int *ldap_err)
+nsdb_list_display_nce(nsdb_t host, const char *nce)
{
printf("NSDB: %s:%u\n\n", nsdb_hostname(host), nsdb_port(host));
- return nsdb_list_display_one_nce(host, nce, ldap_err);
+ return nsdb_list_display_one_nce(host, nce);
}
@@ -198,21 +196,18 @@ nsdb_list_display_nce(nsdb_t host, const char *nce, unsigned int *ldap_err)
* Display FSNs under all NCEs, with header
*
* @param host an initialized and bound nsdb_t object
- * @param ldap_err OUT: possibly an LDAP error code
* @return a FedFsStatus code
*/
static FedFsStatus
-nsdb_list_display_all_nces(nsdb_t host, unsigned int *ldap_err)
+nsdb_list_display_all_nces(nsdb_t host)
{
char *dn, **contexts;
FedFsStatus retval;
int i;
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;
- }
printf("NSDB: %s:%u\n\n", nsdb_hostname(host), nsdb_port(host));
@@ -220,7 +215,7 @@ nsdb_list_display_all_nces(nsdb_t host, unsigned int *ldap_err)
for (i = 0; contexts[i] != NULL; i++) {
retval = nsdb_get_ncedn_s(host, contexts[i], &dn);
if (retval == FEDFS_OK) {
- retval = nsdb_list_display_one_nce(host, dn, ldap_err);
+ retval = nsdb_list_display_one_nce(host, dn);
free(dn);
if (retval != FEDFS_OK)
break;
@@ -289,7 +284,6 @@ main(int argc, char **argv)
{
char *progname, *nsdbname;
unsigned short nsdbport;
- unsigned int ldap_err;
FedFsStatus retval;
nsdb_t host;
char *nce;
@@ -387,11 +381,11 @@ again:
}
if (nce != NULL)
- retval = nsdb_list_display_nce(host, nce, &ldap_err);
+ retval = nsdb_list_display_nce(host, nce);
else
- retval = nsdb_list_display_all_nces(host, &ldap_err);
+ retval = nsdb_list_display_all_nces(host);
if (retval == FEDFS_ERR_NSDB_LDAP_VAL) {
- switch (ldap_err) {
+ switch (nsdb_ldaperr(host)) {
case LDAP_REFERRAL:
retval = nsdb_list_follow_ldap_referral(&host);
if (retval == FEDFS_OK)
@@ -403,7 +397,7 @@ again:
break;
default:
fprintf(stderr, "Failed to list FSNs: %s\n",
- ldap_err2string(ldap_err));
+ nsdb_ldaperr2string(host));
}
}
More information about the fedfs-utils-devel
mailing list