Simplify nsdb_get_naming_contexts_s() by removing the *ldaperr argument. Instead, the ldaperr value can be extracted with the new nsdb_ldaperr() function when it is needed.
Signed-off-by: Chuck Lever <[email protected]> --- src/include/nsdb.h | 3 +-- src/libnsdb/fileserver.c | 52 +++++++++++++++++++++++++++------------------- src/nsdbc/nsdb-list.c | 8 ++++--- src/nsdbc/nsdb-nces.c | 7 +++--- 4 files changed, 40 insertions(+), 30 deletions(-) diff --git a/src/include/nsdb.h b/src/include/nsdb.h index 5709f0c..ae58397 100644 --- a/src/include/nsdb.h +++ b/src/include/nsdb.h @@ -379,8 +379,7 @@ FedFsStatus nsdb_annotation_delete_s(nsdb_t host, const char *dn, */ FedFsStatus nsdb_get_ncedn_s(nsdb_t host, const char *naming_context, char **dn); -FedFsStatus nsdb_get_naming_contexts_s(nsdb_t host, char ***contexts, - unsigned int *ldap_err); +FedFsStatus nsdb_get_naming_contexts_s(nsdb_t host, char ***contexts); 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 efb8c5a..8c451ee 100644 --- a/src/libnsdb/fileserver.c +++ b/src/libnsdb/fileserver.c @@ -701,7 +701,6 @@ nsdb_parse_naming_contexts_entry(LDAP *ld, LDAPMessage *entry, * * @param host an initialized and bound nsdb_t object * @param contexts OUT: pointer to an array of NUL-terminated C strings - * @param ldap_err OUT: possibly an LDAP error code * @return a FedFsStatus code * * Caller must free "contexts" with nsdb_free_string_array() @@ -716,13 +715,12 @@ nsdb_parse_naming_contexts_entry(LDAP *ld, LDAPMessage *entry, @endverbatim */ FedFsStatus -nsdb_get_naming_contexts_s(nsdb_t host, char ***contexts, - unsigned int *ldap_err) +nsdb_get_naming_contexts_s(nsdb_t host, char ***contexts) { LDAPMessage *response, *message; LDAP *ld = host->fn_ldap; FedFsStatus retval; - int rc, entries; + int entries; char **tmp; if (host == NULL) { @@ -735,14 +733,16 @@ nsdb_get_naming_contexts_s(nsdb_t host, char ***contexts, return FEDFS_ERR_INVAL; } - if (contexts == NULL || ldap_err == NULL) { + if (contexts == NULL) { xlog(L_ERROR, "%s: Invalid parameter", __func__); return FEDFS_ERR_INVAL; } - rc = nsdb_search_nsdb_attr_s(ld, LDAP_ROOT_DSE, "(objectClass=*)", - "namingContexts", &response); - switch (rc) { + host->fn_ldaperr = nsdb_search_nsdb_attr_s(ld, LDAP_ROOT_DSE, + "(objectClass=*)", + "namingContexts", + &response); + switch (host->fn_ldaperr) { case LDAP_SUCCESS: break; case LDAP_NO_SUCH_OBJECT: @@ -750,8 +750,7 @@ nsdb_get_naming_contexts_s(nsdb_t host, char ***contexts, return FEDFS_ERR_NSDB_FAULT; default: xlog(D_GENERAL, "%s: LDAP search failed: %s", - __func__, ldap_err2string(rc)); - *ldap_err = rc; + __func__, ldap_err2string(host->fn_ldaperr)); return FEDFS_ERR_NSDB_LDAP_VAL; } if (response == NULL) { @@ -785,7 +784,8 @@ nsdb_get_naming_contexts_s(nsdb_t host, char ***contexts, message, &tmp); break; case LDAP_RES_SEARCH_RESULT: - retval = nsdb_parse_result(ld, message, NULL, ldap_err); + retval = nsdb_parse_result(ld, message, NULL, + &host->fn_ldaperr); break; default: xlog(L_ERROR, "%s: Unrecognized LDAP message type", @@ -1312,9 +1312,11 @@ nsdb_resolve_fsn_s(nsdb_t host, const char *nce, const char *fsn_uuid, * Caller did not provide an nce. Generate a list * of the server's NSDB container entries. */ - retval = nsdb_get_naming_contexts_s(host, &contexts, ldap_err); - if (retval != FEDFS_OK) + retval = nsdb_get_naming_contexts_s(host, &contexts); + if (retval != FEDFS_OK) { + *ldap_err = (unsigned int)nsdb_ldaperr(host); return retval; + } for (i = 0; contexts[i] != NULL; i++); nce_list = calloc(i + 1, sizeof(char *)); @@ -1627,9 +1629,11 @@ nsdb_get_fsn_s(nsdb_t host, const char *nce, const char *fsn_uuid, * Caller did not provide an nce. Generate a list * of the server's NSDB container entries. */ - retval = nsdb_get_naming_contexts_s(host, &contexts, ldap_err); - if (retval != FEDFS_OK) + retval = nsdb_get_naming_contexts_s(host, &contexts); + if (retval != FEDFS_OK) { + *ldap_err = (unsigned int)nsdb_ldaperr(host); return retval; + } for (i = 0; contexts[i] != NULL; i++); nce_list = calloc(i + 1, sizeof(char *)); @@ -1885,9 +1889,11 @@ nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err) * container entry. List entries in all discovered NSDB * containers. */ - retval = nsdb_get_naming_contexts_s(host, &contexts, ldap_err); - if (retval != FEDFS_OK) + retval = nsdb_get_naming_contexts_s(host, &contexts); + if (retval != FEDFS_OK) { + *ldap_err = (unsigned int)nsdb_ldaperr(host); return retval; + } for (i = 0; contexts[i] != NULL; i++); nce_list = calloc(i + 1, sizeof(char *)); @@ -1990,9 +1996,11 @@ nsdb_ping_nsdb_s(nsdb_t host, unsigned int *ldap_err) return FEDFS_ERR_INVAL; } - retval = nsdb_get_naming_contexts_s(host, &contexts, ldap_err); - if (retval != FEDFS_OK) + retval = nsdb_get_naming_contexts_s(host, &contexts); + if (retval != FEDFS_OK) { + *ldap_err = (unsigned int)nsdb_ldaperr(host); return retval; + } retval = nsdb_ping_contexts_s(host, contexts, ldap_err); nsdb_free_string_array(contexts); @@ -2119,9 +2127,11 @@ nsdb_find_naming_context_s(nsdb_t host, const char *entry, char **context, return FEDFS_ERR_INVAL; } - retval = nsdb_get_naming_contexts_s(host, &contexts, ldap_err); - if (retval != FEDFS_OK) + retval = nsdb_get_naming_contexts_s(host, &contexts); + if (retval != FEDFS_OK) { + *ldap_err = (unsigned int)nsdb_ldaperr(host); return retval; + } retval = nsdb_match_root_suffix(entry, contexts, context, ldap_err); diff --git a/src/nsdbc/nsdb-list.c b/src/nsdbc/nsdb-list.c index 68a8d89..bfd15b1 100644 --- a/src/nsdbc/nsdb-list.c +++ b/src/nsdbc/nsdb-list.c @@ -204,13 +204,15 @@ nsdb_list_display_nce(nsdb_t host, const char *nce, unsigned int *ldap_err) static FedFsStatus nsdb_list_display_all_nces(nsdb_t host, unsigned int *ldap_err) { - FedFsStatus retval; char *dn, **contexts; + FedFsStatus retval; int i; - retval = nsdb_get_naming_contexts_s(host, &contexts, ldap_err); - if (retval != FEDFS_OK) + retval = nsdb_get_naming_contexts_s(host, &contexts); + if (retval != FEDFS_OK) { + *ldap_err = (unsigned int)nsdb_ldaperr(host); return retval; + } printf("NSDB: %s:%u\n\n", nsdb_hostname(host), nsdb_port(host)); diff --git a/src/nsdbc/nsdb-nces.c b/src/nsdbc/nsdb-nces.c index 1e3caf1..1b08ccc 100644 --- a/src/nsdbc/nsdb-nces.c +++ b/src/nsdbc/nsdb-nces.c @@ -96,7 +96,6 @@ main(int argc, char **argv) { char *progname, *nsdbname; unsigned short nsdbport; - unsigned int ldap_err; FedFsStatus retval; char **contexts; nsdb_t host; @@ -189,12 +188,12 @@ main(int argc, char **argv) goto out_free; } - retval = nsdb_get_naming_contexts_s(host, &contexts, &ldap_err); + retval = nsdb_get_naming_contexts_s(host, &contexts); switch (retval) { case FEDFS_OK: break; case FEDFS_ERR_NSDB_LDAP_VAL: - switch (ldap_err) { + switch (nsdb_ldaperr(host)) { case LDAP_REFERRAL: fprintf(stderr, "Encountered LDAP referral on %s:%u\n", nsdbname, nsdbport); @@ -205,7 +204,7 @@ main(int argc, char **argv) break; default: fprintf(stderr, "Failed to list NCEs: %s\n", - ldap_err2string(ldap_err)); + nsdb_ldaperr2string(host)); } goto out_close; default: _______________________________________________ fedfs-utils-devel mailing list [email protected] https://oss.oracle.com/mailman/listinfo/fedfs-utils-devel
