Simplify the libnsdb API by removing the *ldaperr argument from
the NSDB 5.1.* functions.  When it is needed, the ldaperr value can
be extracted with the new nsdb_ldaperr() function.

Signed-off-by: Chuck Lever <[email protected]>
---
 src/include/nsdb.h          |   15 +-
 src/libnsdb/administrator.c |  267 +++++++++++++++++++------------------------
 src/nfsref/add.c            |   14 +-
 src/nfsref/remove.c         |    7 -
 src/nsdbc/nsdb-create-fsl.c |    7 -
 src/nsdbc/nsdb-create-fsn.c |    8 +
 src/nsdbc/nsdb-delete-fsl.c |    7 -
 src/nsdbc/nsdb-delete-fsn.c |    7 -
 src/nsdbc/nsdb-update-fsl.c |    8 -
 9 files changed, 145 insertions(+), 195 deletions(-)

diff --git a/src/include/nsdb.h b/src/include/nsdb.h
index bad3e83..4636f1f 100644
--- a/src/include/nsdb.h
+++ b/src/include/nsdb.h
@@ -296,29 +296,25 @@ void               nsdb_env(char **nsdbname, unsigned 
short *nsdbport,
  */
 FedFsStatus     nsdb_create_fsn_s(nsdb_t host, const char *nce,
                                const char *fsn_uuid,
-                               const unsigned int ttl,
-                               unsigned int *ldap_err);
+                               const unsigned int ttl);
 
 /**
  * Delete an FSN (5.1.2)
  */
 FedFsStatus     nsdb_delete_fsn_s(nsdb_t host, const char *nce,
-                               const char *fsn_uuid, _Bool leave_fsn,
-                               unsigned int *ldap_err);
+                               const char *fsn_uuid, _Bool leave_fsn);
 
 /**
  * Create one or more FSLs (5.1.3)
  */
 FedFsStatus     nsdb_create_fsls_s(nsdb_t host, const char *nce,
-                               struct fedfs_fsl *fsls,
-                               unsigned int *ldap_err);
+                               struct fedfs_fsl *fsls);
 
 /**
  * Delete an FSL (5.1.4)
  */
 FedFsStatus     nsdb_delete_fsl_s(nsdb_t host, const char *nce,
-                               const char *fsl_uuid,
-                               unsigned int *ldap_err);
+                               const char *fsl_uuid);
 
 /**
  * Update an FSL (5.1.5)
@@ -326,8 +322,7 @@ FedFsStatus  nsdb_delete_fsl_s(nsdb_t host, const char *nce,
 FedFsStatus     nsdb_update_fsl_s(nsdb_t host, const char *nce,
                                const char *fsl_uuid,
                                const char *attribute,
-                               const void *value,
-                               unsigned int *ldap_err);
+                               const void *value);
 
 /**
  ** NSDB administrative operations defined by this implementation
diff --git a/src/libnsdb/administrator.c b/src/libnsdb/administrator.c
index c813afa..86d85cf 100644
--- a/src/libnsdb/administrator.c
+++ b/src/libnsdb/administrator.c
@@ -52,7 +52,7 @@
  * Invoke ldap_search_ext_s(3), requesting no attributes
  *
  * @param func NUL-terminated C string containing name of calling function
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param base NUL-terminated C string containing search base
  * @param scope LDAP scope
  * @param filter NUL-terminated C string containing search filter
@@ -61,10 +61,11 @@
  *
  */
 static int
-__nsdb_search_nsdb_none_s(const char *func, LDAP *ld, const char *base,
+__nsdb_search_nsdb_none_s(const char *func, nsdb_t host, const char *base,
                int scope, char *filter, LDAPMessage **response)
 {
        static char *attrs[] = { LDAP_NO_ATTRS, NULL };
+       LDAP *ld = host->fn_ldap;
        char *uri;
 
        if (ldap_get_option(ld, LDAP_OPT_URI, &uri) == LDAP_OPT_SUCCESS) {
@@ -84,24 +85,25 @@ __nsdb_search_nsdb_none_s(const char *func, LDAP *ld, const 
char *base,
 /**
  * Hide the __func__ argument at call sites
  */
-#define nsdb_search_nsdb_none_s(ld, base, scope, filter, response) \
-       __nsdb_search_nsdb_none_s(__func__, ld, base, scope, filter, response)
+#define nsdb_search_nsdb_none_s(host, base, scope, filter, response) \
+       __nsdb_search_nsdb_none_s(__func__, host, base, scope, filter, response)
 
 /**
  * Invoke ldap_search_ext_s(3), requesting no attributes, no filter
  *
  * @param func NUL-terminated C string containing name of calling function
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param base NUL-terminated C string containing search base
  * @param response OUT: list of LDAP responses
  * @return an LDAP result code
  *
  */
 static int
-__nsdb_search_nsdb_nofilter_s(const char *func, LDAP *ld, const char *base,
+__nsdb_search_nsdb_nofilter_s(const char *func, nsdb_t host, const char *base,
                LDAPMessage **response)
 {
        static char *attrs[] = { LDAP_NO_ATTRS, NULL };
+       LDAP *ld = host->fn_ldap;
        char *uri;
 
        if (ldap_get_option(ld, LDAP_OPT_URI, &uri) == LDAP_OPT_SUCCESS) {
@@ -121,8 +123,8 @@ __nsdb_search_nsdb_nofilter_s(const char *func, LDAP *ld, 
const char *base,
 /**
  * Hide the __func__ argument at call sites
  */
-#define nsdb_search_nsdb_nofilter_s(ld, base, response) \
-       __nsdb_search_nsdb_nofilter_s(__func__, ld, base, response)
+#define nsdb_search_nsdb_nofilter_s(host, base, response) \
+       __nsdb_search_nsdb_nofilter_s(__func__, host, base, response)
 
 /**
  * Modify a FedFS-related record on an NSDB
@@ -199,11 +201,10 @@ nsdb_construct_fsn_dn(const char *nce, const char 
*fsn_uuid)
 /**
  * Add a new FSN entry under "nce"
  *
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param nce a NUL-terminated C string containing DN of NSDB container entry
  * @param fsn_uuid a NUL-terminated C string containing FSN UUID
  * @param ttl number of seconds fileservers may cache this FSN
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * LDIF equivalent:
@@ -218,16 +219,15 @@ nsdb_construct_fsn_dn(const char *nce, const char 
*fsn_uuid)
    @endverbatim
  */
 static FedFsStatus
-nsdb_create_fsn_add_entry(LDAP *ld, const char *nce,
-               const char *fsn_uuid, const unsigned int ttl,
-               unsigned int *ldap_err)
+nsdb_create_fsn_add_entry(nsdb_t host, const char *nce,
+               const char *fsn_uuid, const unsigned int ttl)
 {
        char *ocvals[2], *uuidvals[2], *ttlvals[2];
        LDAPMod *attrs[5];
        LDAPMod attr[4];
        char ttlbuf[16];
-       int i, rc;
        char *dn;
+       int i;
 
        for (i = 0; i < 4; i++)
                attrs[i] = &attr[i];
@@ -247,12 +247,12 @@ nsdb_create_fsn_add_entry(LDAP *ld, const char *nce,
        if (dn == NULL)
                return FEDFS_ERR_SVRFAULT;
 
-       rc = ldap_add_ext_s(ld, dn, attrs, NULL, NULL);
+       host->fn_ldaperr = ldap_add_ext_s(host->fn_ldap, dn,
+                                               attrs, NULL, NULL);
        ber_memfree(dn);
-       if (rc != LDAP_SUCCESS) {
+       if (host->fn_ldaperr != LDAP_SUCCESS) {
                xlog(L_ERROR, "Failed to add new FSN entry: %s",
-                               ldap_err2string(rc));
-               *ldap_err = rc;
+                               ldap_err2string(host->fn_ldaperr));
                return FEDFS_ERR_NSDB_LDAP_VAL;
        }
 
@@ -267,12 +267,11 @@ nsdb_create_fsn_add_entry(LDAP *ld, const char *nce,
  * @param nce a NUL-terminated C string containing DN of NSDB container entry
  * @param fsn_uuid a NUL-terminated C string containing FSN UUID
  * @param ttl number of seconds fileservers may cache this FSN
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  */
 FedFsStatus
 nsdb_create_fsn_s(nsdb_t host, const char *nce, const char *fsn_uuid,
-               const unsigned int ttl, unsigned int *ldap_err)
+               const unsigned int ttl)
 {
        if (host == NULL) {
                xlog(L_ERROR, "%s: Invalid host parameter", __func__);
@@ -284,35 +283,34 @@ nsdb_create_fsn_s(nsdb_t host, const char *nce, const 
char *fsn_uuid,
                return FEDFS_ERR_INVAL;
        }
 
-       if (nce == NULL || fsn_uuid == NULL || ldap_err == NULL) {
+       if (nce == NULL || fsn_uuid == NULL) {
                xlog(L_ERROR, "%s: Invalid parameter", __func__);
                return FEDFS_ERR_INVAL;
        }
 
-       return nsdb_create_fsn_add_entry(host->fn_ldap, nce, fsn_uuid,
-                                                       ttl, ldap_err);
+       return nsdb_create_fsn_add_entry(host, nce, fsn_uuid, ttl);
 }
 
 /**
  * Discover the DN for an FSN record
  *
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param nce a NUL-terminated C string containing DN of NSDB container entry
  * @param fsn_uuid a NUL-terminated C string containing FSL UUID
  * @param dn OUT: a NUL-terminated C string containing DN of FSL record
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * Caller must free "dn" with ber_memfree(3).
  */
 static FedFsStatus
-nsdb_search_fsn_dn_s(LDAP *ld, const char *nce, const char *fsn_uuid,
-               char **dn, unsigned int *ldap_err)
+nsdb_search_fsn_dn_s(nsdb_t  host, const char *nce, const char *fsn_uuid,
+               char **dn)
 {
+       LDAP *ld = host->fn_ldap;
        LDAPMessage *response;
-       int len, rc, entries;
        FedFsStatus retval;
        char filter[128];
+       int len, entries;
 
        /* watch out for buffer overflow */
        len = snprintf(filter, sizeof(filter),
@@ -322,9 +320,9 @@ nsdb_search_fsn_dn_s(LDAP *ld, const char *nce, const char 
*fsn_uuid,
                return FEDFS_ERR_INVAL;
        }
 
-       rc = nsdb_search_nsdb_none_s(ld, nce, LDAP_SCOPE_ONELEVEL,
+       host->fn_ldaperr = nsdb_search_nsdb_none_s(host, nce, 
LDAP_SCOPE_ONELEVEL,
                                        filter, &response);
-       switch (rc) {
+       switch (host->fn_ldaperr) {
        case LDAP_SUCCESS:
                break;
        case LDAP_NO_SUCH_OBJECT:
@@ -333,8 +331,7 @@ nsdb_search_fsn_dn_s(LDAP *ld, const char *nce, const char 
*fsn_uuid,
                return FEDFS_ERR_NSDB_NOFSN;
        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) {
@@ -359,10 +356,9 @@ nsdb_search_fsn_dn_s(LDAP *ld, const char *nce, const char 
*fsn_uuid,
 
        *dn = ldap_get_dn(ld, response);
        if (*dn == NULL) {
-               ldap_get_option(ld, LDAP_OPT_RESULT_CODE, &rc);
+               ldap_get_option(ld, LDAP_OPT_RESULT_CODE, &host->fn_ldap);
                xlog(D_GENERAL, "%s: Failed to parse DN: %s",
-                       __func__, ldap_err2string(rc));
-               *ldap_err = rc;
+                       __func__, ldap_err2string(host->fn_ldaperr));
                retval = FEDFS_ERR_NSDB_LDAP_VAL;
                goto out;
        }
@@ -377,38 +373,34 @@ out:
 /**
  * Delete one FSL child
  *
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param entry an LDAP_RES_SEARCH_ENTRY message
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  */
 static FedFsStatus
-nsdb_parse_delete_fsn_fsls_entry_s(LDAP *ld, LDAPMessage *entry,
-               unsigned int *ldap_err)
+nsdb_parse_delete_fsn_fsls_entry_s(nsdb_t host, LDAPMessage *entry)
 {
+       LDAP *ld = host->fn_ldap;
        char *dn;
-       int rc;
 
        dn = ldap_get_dn(ld, entry);
        if (dn == NULL) {
-               ldap_get_option(ld, LDAP_OPT_RESULT_CODE, &rc);
+               ldap_get_option(ld, LDAP_OPT_RESULT_CODE, &host->fn_ldaperr);
                xlog(D_GENERAL, "%s: Failed to parse entry: %s",
-                       __func__, ldap_err2string(rc));
-               *ldap_err = rc;
+                       __func__, ldap_err2string(host->fn_ldaperr));
                return FEDFS_ERR_NSDB_LDAP_VAL;
        }
 
        xlog(D_CALL, "%s: deleting %s", __func__, dn);
-       rc = ldap_delete_ext_s(ld, dn, NULL, NULL);
-       if (rc != LDAP_SUCCESS) {
+       host->fn_ldaperr = ldap_delete_ext_s(ld, dn, NULL, NULL);
+       if (host->fn_ldaperr != LDAP_SUCCESS) {
                xlog(D_GENERAL, "%s: Failed to delete FSL entry %s: %s",
-                       __func__, dn, ldap_err2string(rc));
+                       __func__, dn, ldap_err2string(host->fn_ldaperr));
                ber_memfree(dn);
-               switch (rc) {
+               switch (host->fn_ldaperr) {
                case LDAP_NO_SUCH_OBJECT:
                        return FEDFS_ERR_NSDB_NOFSL;
                default:
-                       *ldap_err = rc;
                        return FEDFS_ERR_NSDB_LDAP_VAL;
                }
        }
@@ -422,23 +414,23 @@ nsdb_parse_delete_fsn_fsls_entry_s(LDAP *ld, LDAPMessage 
*entry,
 /**
  * Delete all existing FSL entries under "fsn_uuid"
  *
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param dn a NUL-terminated C string containing DN of FSN entry
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  */
 static FedFsStatus
-nsdb_delete_fsn_fsls_s(LDAP *ld, const char *dn, unsigned int *ldap_err)
+nsdb_delete_fsn_fsls_s(nsdb_t host, const char *dn)
 {
        LDAPMessage *message, *response;
+       LDAP *ld = host->fn_ldap;
        FedFsStatus retval;
-       int entries, rc;
+       int entries;
 
        xlog(D_CALL, "%s: searching for children of %s", __func__, dn);
 
 again:
-       rc = nsdb_search_nsdb_nofilter_s(ld, dn, &response);
-       switch (rc) {
+       host->fn_ldaperr = nsdb_search_nsdb_nofilter_s(host, dn, &response);
+       switch (host->fn_ldaperr) {
        case LDAP_SUCCESS:
        case LDAP_SIZELIMIT_EXCEEDED:
                break;
@@ -448,8 +440,7 @@ again:
                return FEDFS_OK;
        default:
                xlog(D_GENERAL, "%s: Failed to retrieve entries for %s: %s",
-                       __func__, dn, ldap_err2string(rc));
-               *ldap_err = rc;
+                       __func__, dn, ldap_err2string(host->fn_ldaperr));
                return FEDFS_ERR_NSDB_LDAP_VAL;
        }
        if (response == NULL) {
@@ -472,11 +463,12 @@ again:
             message = ldap_next_message(ld, message)) {
                switch (ldap_msgtype(message)) {
                case LDAP_RES_SEARCH_ENTRY:
-                       retval = nsdb_parse_delete_fsn_fsls_entry_s(ld, message,
-                                                               ldap_err);
+                       retval = nsdb_parse_delete_fsn_fsls_entry_s(host,
+                                                               message);
                        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",
@@ -487,7 +479,8 @@ again:
 
 out:
        ldap_msgfree(response);
-       if (rc == LDAP_SIZELIMIT_EXCEEDED && retval == FEDFS_OK)
+       if (host->fn_ldaperr == LDAP_SIZELIMIT_EXCEEDED &&
+           retval == FEDFS_OK)
                goto again;
        return retval;
 }
@@ -495,9 +488,8 @@ out:
 /**
  * Delete an existing FSN entry under "nce"
  *
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param dn a NUL-terminated C string containing DN of entry to remove
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * LDIF equivalent:
@@ -509,15 +501,13 @@ out:
    @endverbatim
  */
 static FedFsStatus
-nsdb_delete_fsn_entry_s(LDAP *ld, const char *dn, unsigned int *ldap_err)
+nsdb_delete_fsn_entry_s(nsdb_t host, const char *dn)
 {
-       int rc;
-
-       rc = ldap_delete_ext_s(ld, dn, NULL, NULL);
-       if (rc != LDAP_SUCCESS) {
+       host->fn_ldaperr = ldap_delete_ext_s(host->fn_ldap, dn, NULL, NULL);
+       if (host->fn_ldaperr != LDAP_SUCCESS) {
                xlog(D_GENERAL, "%s: Failed to delete FSN entry %s: %s",
-                       __func__, dn, ldap_err2string(rc));
-               switch (rc) {
+                       __func__, dn, ldap_err2string(host->fn_ldaperr));
+               switch (host->fn_ldaperr) {
                case LDAP_NO_SUCH_OBJECT:
                        return FEDFS_ERR_NSDB_NOFSN;
                case LDAP_NOT_ALLOWED_ON_NONLEAF:
@@ -525,7 +515,6 @@ nsdb_delete_fsn_entry_s(LDAP *ld, const char *dn, unsigned 
int *ldap_err)
                        /* XXX: spec provides no error code for this case */
                        return FEDFS_ERR_NSDB_NOFSL;
                default:
-                       *ldap_err = rc;
                        return FEDFS_ERR_NSDB_LDAP_VAL;
                }
        }
@@ -542,12 +531,11 @@ nsdb_delete_fsn_entry_s(LDAP *ld, const char *dn, 
unsigned int *ldap_err)
  * @param nce a NUL-terminated C string containing DN of NSDB container entry
  * @param fsn_uuid a NUL-terminated C string containing FSN UUID
  * @param leave_fsn if true, delete FSL children only
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  */
 FedFsStatus
 nsdb_delete_fsn_s(nsdb_t host, const char *nce, const char *fsn_uuid,
-               _Bool leave_fsn, unsigned int *ldap_err)
+               _Bool leave_fsn)
 {
        FedFsStatus retval;
        char *dn;
@@ -562,22 +550,21 @@ nsdb_delete_fsn_s(nsdb_t host, const char *nce, const 
char *fsn_uuid,
                return FEDFS_ERR_INVAL;
        }
 
-       if (nce == NULL || fsn_uuid == NULL || ldap_err == NULL) {
+       if (nce == NULL || fsn_uuid == NULL) {
                xlog(L_ERROR, "%s: Invalid parameter", __func__);
                return FEDFS_ERR_INVAL;
        }
 
-       retval = nsdb_search_fsn_dn_s(host->fn_ldap, nce, fsn_uuid,
-                                               &dn, ldap_err);
+       retval = nsdb_search_fsn_dn_s(host, nce, fsn_uuid, &dn);
        if (retval != FEDFS_OK)
                return retval;
 
-       retval = nsdb_delete_fsn_fsls_s(host->fn_ldap, dn, ldap_err);
+       retval = nsdb_delete_fsn_fsls_s(host, dn);
        if (retval != FEDFS_OK)
                goto out;
 
        if (!leave_fsn)
-               retval = nsdb_delete_fsn_entry_s(host->fn_ldap, dn, ldap_err);
+               retval = nsdb_delete_fsn_entry_s(host, dn);
 
 out:
        ber_memfree(dn);
@@ -705,10 +692,9 @@ static const char *nsdb_ldap_false = "FALSE";
 /**
  * Add a new NFS FSN entry under "nce"
  *
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param nce a NUL-terminated C string containing DN of NSDB container entry
  * @param fsl an initialized struct fedfs_fsl of type FEDFS_NFS_FSL
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * The new entry is set up as an NFSv4.0 FSL, and can be subsequently modified
@@ -752,8 +738,8 @@ static const char *nsdb_ldap_false  = "FALSE";
    @endverbatim
  */
 static FedFsStatus
-nsdb_create_nfs_fsl_entry_s(LDAP *ld, const char *nce, struct fedfs_fsl *fsl,
-               unsigned int *ldap_err)
+nsdb_create_nfs_fsl_entry_s(nsdb_t host, const char *nce,
+               struct fedfs_fsl *fsl)
 {
        struct fedfs_nfs_fsl *nfsfsl = &fsl->fl_u.fl_nfsfsl;
        char *ocvals[3], *fsluuidvals[2], *fsnuuidvals[2];
@@ -780,8 +766,8 @@ nsdb_create_nfs_fsl_entry_s(LDAP *ld, const char *nce, 
struct fedfs_fsl *fsl,
        FedFsStatus retval;
        LDAPMod *attrs[30];
        LDAPMod attr[29];
-       int i, rc;
        char *dn;
+       int i;
 
        for (i = 0; i < 30; i++)
                attrs[i] = &attr[i];
@@ -861,12 +847,12 @@ nsdb_create_nfs_fsl_entry_s(LDAP *ld, const char *nce, 
struct fedfs_fsl *fsl,
                goto out;
        }
 
-       rc = ldap_add_ext_s(ld, dn, attrs, NULL, NULL);
+       host->fn_ldaperr = ldap_add_ext_s(host->fn_ldap, dn,
+                                               attrs, NULL, NULL);
        ber_memfree(dn);
-       if (rc != LDAP_SUCCESS) {
+       if (host->fn_ldaperr != LDAP_SUCCESS) {
                xlog(D_GENERAL, "%s: Failed to add new FSL entry: %s\n",
-                       __func__, ldap_err2string(rc));
-               *ldap_err = rc;
+                       __func__, ldap_err2string(host->fn_ldaperr));
                retval = FEDFS_ERR_NSDB_LDAP_VAL;
                goto out;
        }
@@ -886,15 +872,13 @@ out:
  * @param host an initialized and bound nsdb_t object
  * @param nce a NUL-terminated C string containing DN of NSDB container entry
  * @param fsls a list of one or more initialized struct fedfs_fsls
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * If creating one of the FSLs fails, we attempt to clean up by
  * deleting the FSLs that have already been created.
  */
 FedFsStatus
-nsdb_create_fsls_s(nsdb_t host, const char *nce, struct fedfs_fsl *fsls,
-               unsigned int *ldap_err)
+nsdb_create_fsls_s(nsdb_t host, const char *nce, struct fedfs_fsl *fsls)
 {
        struct fedfs_fsl *fsl, *progress;
        FedFsStatus retval;
@@ -919,8 +903,7 @@ nsdb_create_fsls_s(nsdb_t host, const char *nce, struct 
fedfs_fsl *fsls,
             progress = fsl, fsl = fsl->fl_next) {
                switch (fsl->fl_type) {
                case FEDFS_NFS_FSL:
-                       retval = nsdb_create_nfs_fsl_entry_s(host->fn_ldap, nce,
-                                                               fsl, ldap_err);
+                       retval = nsdb_create_nfs_fsl_entry_s(host, nce, fsl);
                        break;
                default:
                        xlog(D_GENERAL, "%s: Unrecognized FSL type", __func__);
@@ -935,10 +918,8 @@ nsdb_create_fsls_s(nsdb_t host, const char *nce, struct 
fedfs_fsl *fsls,
 out_delete:
        if (progress != NULL) {
                for (fsl = fsls; fsl != NULL; fsl = fsl->fl_next) {
-                       unsigned int dummy_ldap_err;
                        FedFsStatus status;
-                       status = nsdb_delete_fsl_s(host, nce, fsl->fl_fsluuid,
-                                                       &dummy_ldap_err);
+                       status = nsdb_delete_fsl_s(host, nce, fsl->fl_fsluuid);
                        if (status != FEDFS_OK)
                                xlog(D_GENERAL, "%s: Recovery deletion of %s 
failed",
                                        __func__, fsl->fl_fsluuid);
@@ -952,23 +933,23 @@ out_delete:
 /**
  * Discover the DN for an FSL record
  *
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param nce a NUL-terminated C string containing DN of NSDB container entry
  * @param fsl_uuid a NUL-terminated C string containing FSL UUID
  * @param dn OUT: a NUL-terminated C string containing DN of FSL record
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * Caller must free "dn" with ber_memfree(3).
  */
 static FedFsStatus
-nsdb_search_fsl_dn_s(LDAP *ld, const char *nce, const char *fsl_uuid,
-               char **dn, unsigned int *ldap_err)
+nsdb_search_fsl_dn_s(nsdb_t host, const char *nce, const char *fsl_uuid,
+               char **dn)
 {
+       LDAP *ld = host->fn_ldap;
        LDAPMessage *response;
-       int len, rc, entries;
        FedFsStatus retval;
        char filter[128];
+       int len, entries;
 
        /* watch out for buffer overflow */
        len = snprintf(filter, sizeof(filter),
@@ -978,9 +959,9 @@ nsdb_search_fsl_dn_s(LDAP *ld, const char *nce, const char 
*fsl_uuid,
                return FEDFS_ERR_INVAL;
        }
 
-       rc = nsdb_search_nsdb_none_s(ld, nce, LDAP_SCOPE_SUBTREE,
-                                       filter, &response);
-       switch (rc) {
+       host->fn_ldaperr = nsdb_search_nsdb_none_s(host, nce, 
LDAP_SCOPE_SUBTREE,
+                                                       filter, &response);
+       switch (host->fn_ldaperr) {
        case LDAP_SUCCESS:
                break;
        case LDAP_NO_SUCH_OBJECT:
@@ -989,8 +970,7 @@ nsdb_search_fsl_dn_s(LDAP *ld, const char *nce, const char 
*fsl_uuid,
                return FEDFS_ERR_NSDB_NOFSL;
        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) {
@@ -1015,10 +995,9 @@ nsdb_search_fsl_dn_s(LDAP *ld, const char *nce, const 
char *fsl_uuid,
 
        *dn = ldap_get_dn(ld, response);
        if (*dn == NULL) {
-               ldap_get_option(ld, LDAP_OPT_RESULT_CODE, &rc);
+               ldap_get_option(ld, LDAP_OPT_RESULT_CODE, &host->fn_ldaperr);
                xlog(D_GENERAL, "%s: Failed to parse DN: %s",
-                       __func__, ldap_err2string(rc));
-               *ldap_err = rc;
+                       __func__, ldap_err2string(host->fn_ldaperr));
                retval = FEDFS_ERR_NSDB_LDAP_VAL;
                goto out;
        }
@@ -1033,9 +1012,8 @@ out:
 /**
  * Delete an existing FSL entry
  *
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param dn a NUL-terminated C string containing DN of FSL record to delete
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * LDIF equivalent:
@@ -1047,19 +1025,16 @@ out:
    @endverbatim
  */
 static FedFsStatus
-nsdb_delete_fsl_entry_s(LDAP *ld, const char *dn, unsigned int *ldap_err)
+nsdb_delete_fsl_entry_s(nsdb_t host, const char *dn)
 {
-       int rc;
-
-       rc = ldap_delete_ext_s(ld, dn, NULL, NULL);
-       if (rc != LDAP_SUCCESS) {
+       host->fn_ldaperr = ldap_delete_ext_s(host->fn_ldap, dn, NULL, NULL);
+       if (host->fn_ldaperr != LDAP_SUCCESS) {
                xlog(D_GENERAL, "%s: Failed to delete FSL entry %s: %s",
-                       __func__, dn, ldap_err2string(rc));
-               switch (rc) {
+                       __func__, dn, ldap_err2string(host->fn_ldaperr));
+               switch (host->fn_ldaperr) {
                case LDAP_NO_SUCH_OBJECT:
                        return FEDFS_ERR_NSDB_NOFSL;
                default:
-                       *ldap_err = rc;
                        return FEDFS_ERR_NSDB_LDAP_VAL;
                }
        }
@@ -1075,12 +1050,10 @@ nsdb_delete_fsl_entry_s(LDAP *ld, const char *dn, 
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 fsl_uuid a NUL-terminated C string containing FSL UUID
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  */
 FedFsStatus
-nsdb_delete_fsl_s(nsdb_t host, const char *nce, const char *fsl_uuid,
-               unsigned int *ldap_err)
+nsdb_delete_fsl_s(nsdb_t host, const char *nce, const char *fsl_uuid)
 {
        FedFsStatus retval;
        char *dn;
@@ -1095,17 +1068,16 @@ nsdb_delete_fsl_s(nsdb_t host, const char *nce, const 
char *fsl_uuid,
                return FEDFS_ERR_INVAL;
        }
 
-       if (nce == NULL || fsl_uuid == NULL || ldap_err == NULL) {
+       if (nce == NULL || fsl_uuid == NULL) {
                xlog(L_ERROR, "%s: Invalid parameter", __func__);
                return FEDFS_ERR_INVAL;
        }
 
-       retval = nsdb_search_fsl_dn_s(host->fn_ldap, nce, fsl_uuid,
-                                                       &dn, ldap_err);
+       retval = nsdb_search_fsl_dn_s(host, nce, fsl_uuid, &dn);
        if (retval != FEDFS_OK)
                return retval;
 
-       retval = nsdb_delete_fsl_entry_s(host->fn_ldap, dn, ldap_err);
+       retval = nsdb_delete_fsl_entry_s(host, dn);
        ber_memfree(dn);
        return retval;
 }
@@ -1113,10 +1085,9 @@ nsdb_delete_fsl_s(nsdb_t host, const char *nce, const 
char *fsl_uuid,
 /**
  * Delete an attribute from entry "dn"
  *
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param dn a NUL-terminated C string containing DN of NSDB container entry
  * @param attribute a NUL-terminated C string containing the name of an 
attribute to remove
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * The LDAP server will prevent removing required attributes.
@@ -1131,12 +1102,13 @@ nsdb_delete_fsl_s(nsdb_t host, const char *nce, const 
char *fsl_uuid,
    @endverbatim
  */
 static FedFsStatus
-nsdb_update_fsl_remove_attribute_s(LDAP *ld, const char *dn,
-               const char *attribute, unsigned int *ldap_err)
+nsdb_update_fsl_remove_attribute_s(nsdb_t host, const char *dn,
+               const char *attribute)
 {
        FedFsStatus retval;
 
-       retval = nsdb_delete_attribute_all_s(ld, dn, attribute, ldap_err);
+       retval = nsdb_delete_attribute_all_s(host->fn_ldap, dn, attribute,
+                                                       &host->fn_ldaperr);
        if (retval != FEDFS_OK)
                return retval;
 
@@ -1148,11 +1120,10 @@ nsdb_update_fsl_remove_attribute_s(LDAP *ld, const char 
*dn,
 /**
  * Add a new or replace an existing attribute in "dn"
  *
- * @param ld an initialized LDAP server descriptor
+ * @param host an initialized and bound nsdb_t object
  * @param dn a NUL-terminated C string containing DN of NSDB container entry
  * @param attribute a NUL-terminated C string containing the name of an 
attribute to modify
  * @param value a NUL-terminated C string containing the new value
- * @param ldap_err OUT: possibly an LDAP error code
  * @return a FedFsStatus code
  *
  * The LDAP server will prevent schema violations (invalid values or
@@ -1170,9 +1141,8 @@ nsdb_update_fsl_remove_attribute_s(LDAP *ld, const char 
*dn,
    @endverbatim
  */
 static FedFsStatus
-nsdb_update_fsl_update_attribute_s(LDAP *ld, const char *dn,
-               const char *attribute, const void *value,
-               unsigned int *ldap_err)
+nsdb_update_fsl_update_attribute_s(nsdb_t host, const char *dn,
+               const char *attribute, const void *value)
 {
        struct berval newval;
        FedFsStatus retval;
@@ -1182,8 +1152,8 @@ nsdb_update_fsl_update_attribute_s(LDAP *ld, const char 
*dn,
        if (value != NULL)
                newval.bv_len = (ber_len_t)strlen(value);
 
-       retval = nsdb_modify_attribute_s(ld, dn, attribute,
-                                               &newval, ldap_err);
+       retval = nsdb_modify_attribute_s(host->fn_ldap, dn, attribute,
+                                               &newval, &host->fn_ldaperr);
        if (retval != FEDFS_OK)
                return retval;
 
@@ -1200,7 +1170,6 @@ nsdb_update_fsl_update_attribute_s(LDAP *ld, const char 
*dn,
  * @param fsl_uuid a NUL-terminated C string containing FSL UUID
  * @param attribute a NUL-terminated C string containing the name of an 
attribute to modify
  * @param value a NUL-terminated C string containing the new value
- * @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.
@@ -1210,8 +1179,7 @@ nsdb_update_fsl_update_attribute_s(LDAP *ld, const char 
*dn,
  */
 FedFsStatus
 nsdb_update_fsl_s(nsdb_t host, const char *nce, const char *fsl_uuid,
-               const char *attribute, const void *value,
-               unsigned int *ldap_err)
+               const char *attribute, const void *value)
 {
        FedFsStatus retval;
        char *dn;
@@ -1226,24 +1194,21 @@ nsdb_update_fsl_s(nsdb_t host, const char *nce, const 
char *fsl_uuid,
                return FEDFS_ERR_INVAL;
        }
 
-       if (nce == NULL || fsl_uuid == NULL ||
-           attribute == NULL || ldap_err == NULL) {
+       if (nce == NULL || fsl_uuid == NULL || attribute == NULL) {
                xlog(L_ERROR, "%s: Invalid parameter", __func__);
                return FEDFS_ERR_INVAL;
        }
 
-       retval = nsdb_search_fsl_dn_s(host->fn_ldap, nce, fsl_uuid,
-                                                       &dn, ldap_err);
+       retval = nsdb_search_fsl_dn_s(host, nce, fsl_uuid, &dn);
        if (retval != FEDFS_OK)
                return retval;
 
        if (value == NULL)
-               retval = nsdb_update_fsl_remove_attribute_s(host->fn_ldap,
-                                                       dn, attribute, 
ldap_err);
+               retval = nsdb_update_fsl_remove_attribute_s(host, dn,
+                                                               attribute);
        else
-               retval = nsdb_update_fsl_update_attribute_s(host->fn_ldap,
-                                                       dn, attribute,
-                                                       value, ldap_err);
+               retval = nsdb_update_fsl_update_attribute_s(host, dn,
+                                                       attribute, value);
        ber_memfree(dn);
        return retval;
 }
@@ -1658,11 +1623,11 @@ nsdb_parse_delete_nsdb_fsns_entry_s(nsdb_t host, 
LDAPMessage *entry)
                return FEDFS_ERR_NSDB_LDAP_VAL;
        }
 
-       retval = nsdb_delete_fsn_fsls_s(host->fn_ldap, dn, &host->fn_ldaperr);
+       retval = nsdb_delete_fsn_fsls_s(host, dn);
        if (retval != FEDFS_OK)
                goto out;
 
-       retval = nsdb_delete_fsn_entry_s(ld, dn, &host->fn_ldaperr);
+       retval = nsdb_delete_fsn_entry_s(host, dn);
 
 out:
        ber_memfree(dn);
@@ -1687,7 +1652,7 @@ nsdb_delete_nsdb_fsns_s(nsdb_t host, const char *nce)
        xlog(D_CALL, "%s: searching for children of %s", __func__, nce);
 
 again:
-       host->fn_ldaperr = nsdb_search_nsdb_nofilter_s(ld, nce, &response);
+       host->fn_ldaperr = nsdb_search_nsdb_nofilter_s(host, nce, &response);
        switch (host->fn_ldaperr) {
        case LDAP_SUCCESS:
        case LDAP_SIZELIMIT_EXCEEDED:
diff --git a/src/nfsref/add.c b/src/nfsref/add.c
index 4d527da..7999e0f 100644
--- a/src/nfsref/add.c
+++ b/src/nfsref/add.c
@@ -261,7 +261,6 @@ nfsref_add_nfs_basic(const char *junct_path, char **argv, 
int optind)
 static FedFsStatus
 nfsref_add_create_fedfs_fsn(nsdb_t host, const char *nce, char **fsn_uuid)
 {
-       unsigned int ldap_err;
        FedFsStatus retval;
        char *fsnuuid;
        uuid_t uu;
@@ -274,8 +273,7 @@ nfsref_add_create_fedfs_fsn(nsdb_t host, const char *nce, 
char **fsn_uuid)
        uuid_generate_random(uu);
        uuid_unparse(uu, fsnuuid);
 
-       retval = nsdb_create_fsn_s(host, nce, fsnuuid,
-                                       FSN_DEFAULT_TTL, &ldap_err);
+       retval = nsdb_create_fsn_s(host, nce, fsnuuid, FSN_DEFAULT_TTL);
        switch (retval) {
        case FEDFS_OK:
                xlog(D_GENERAL, "%s: Successfully created FSN record "
@@ -287,7 +285,7 @@ nfsref_add_create_fedfs_fsn(nsdb_t host, const char *nce, 
char **fsn_uuid)
                break;
        case FEDFS_ERR_NSDB_LDAP_VAL:
                xlog(L_ERROR, "Failed to create FSN: %s",
-                       ldap_err2string(ldap_err));
+                       nsdb_ldaperr2string(host));
                break;
        default:
                xlog(L_ERROR, "Failed to create FSN: %s",
@@ -437,10 +435,9 @@ static FedFsStatus
 nfsref_add_create_fsls(const char *junct_path, nsdb_t host, const char *nce,
                const char *fsn_uuid, struct fedfs_fsl *fsls)
 {
-       unsigned int ldap_err;
        FedFsStatus retval;
 
-       retval = nsdb_create_fsls_s(host, nce, fsls, &ldap_err);
+       retval = nsdb_create_fsls_s(host, nce, fsls);
        switch (retval) {
        case FEDFS_OK:
                break;
@@ -449,7 +446,7 @@ nfsref_add_create_fsls(const char *junct_path, nsdb_t host, 
const char *nce,
                return retval;
        case FEDFS_ERR_NSDB_LDAP_VAL:
                xlog(L_ERROR, "Failed to create FSL records: %s\n",
-                       ldap_err2string(ldap_err));
+                       nsdb_ldaperr2string(host));
                return retval;
        default:
                xlog(D_GENERAL, "%s: Failed to create FSL records: %s\n",
@@ -535,8 +532,7 @@ nfsref_add_nfs_fedfs_junction(const char *junct_path, char 
**argv, int optind,
        retval = nfsref_add_create_fedfs_junction(junct_path, argv, optind,
                                                        host, nce, fsn_uuid);
        if (retval != FEDFS_OK) {
-               unsigned int ldap_err;
-               nsdb_delete_fsn_s(host, nce, fsn_uuid, false, &ldap_err);
+               nsdb_delete_fsn_s(host, nce, fsn_uuid, false);
                free(fsn_uuid);
                return EXIT_FAILURE;
        }
diff --git a/src/nfsref/remove.c b/src/nfsref/remove.c
index aa8249e..162a04c 100644
--- a/src/nfsref/remove.c
+++ b/src/nfsref/remove.c
@@ -101,7 +101,6 @@ static FedFsStatus
 nfsref_remove_delete_fsn(const char *junct_path)
 {
        char *fsn_uuid = NULL;
-       unsigned int ldap_err;
        char *binddn, *nce;
        FedFsStatus retval;
        nsdb_t host;
@@ -170,7 +169,7 @@ nfsref_remove_delete_fsn(const char *junct_path)
                goto out_free;
        }
 
-       retval = nsdb_delete_fsn_s(host, nce, fsn_uuid, false, &ldap_err);
+       retval = nsdb_delete_fsn_s(host, nce, fsn_uuid, false);
        switch (retval) {
        case FEDFS_OK:
                printf("Successfully deleted FSL records for FSN %s under %s\n",
@@ -191,7 +190,7 @@ nfsref_remove_delete_fsn(const char *junct_path)
                xlog(L_ERROR, "FSN %s still has FSL entries", fsn_uuid);
                break;
        case FEDFS_ERR_NSDB_LDAP_VAL:
-               switch (ldap_err) {
+               switch (nsdb_ldaperr(host)) {
                case LDAP_REFERRAL:
                        xlog(L_ERROR, "Encountered LDAP referral on %s:%u",
                                nsdb_hostname(host), nsdb_port(host));
@@ -206,7 +205,7 @@ nfsref_remove_delete_fsn(const char *junct_path)
                        break;
                default:
                        xlog(L_ERROR, "Failed to delete FSN %s: %s",
-                               fsn_uuid, ldap_err2string(ldap_err));
+                               fsn_uuid, ldap_err2string(nsdb_ldaperr(host)));
                }
                break;
        default:
diff --git a/src/nsdbc/nsdb-create-fsl.c b/src/nsdbc/nsdb-create-fsl.c
index a538eb1..cf39f46 100644
--- a/src/nsdbc/nsdb-create-fsl.c
+++ b/src/nsdbc/nsdb-create-fsl.c
@@ -109,7 +109,6 @@ main(int argc, char **argv)
        char *progname, *binddn, *nsdbname;
        unsigned short nsdbport, serverport;
        struct fedfs_fsl *fsl;
-       unsigned int ldap_err;
        FedFsStatus retval;
        nsdb_t host;
        int arg;
@@ -281,7 +280,7 @@ main(int argc, char **argv)
                goto out_free;
        }
 
-       retval = nsdb_create_fsls_s(host, nce, fsl, &ldap_err);
+       retval = nsdb_create_fsls_s(host, nce, fsl);
        switch (retval) {
        case FEDFS_OK:
                printf("Successfully created FSL record for %s under %s\n",
@@ -295,7 +294,7 @@ main(int argc, char **argv)
                        fprintf(stderr, "NCE %s does not exist\n", nce);
                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);
@@ -306,7 +305,7 @@ main(int argc, char **argv)
                        break;
                default:
                        fprintf(stderr, "Failed to create FSL %s: %s\n",
-                               fsl_uuid, ldap_err2string(ldap_err));
+                               fsl_uuid, nsdb_ldaperr2string(host));
                }
                break;
        default:
diff --git a/src/nsdbc/nsdb-create-fsn.c b/src/nsdbc/nsdb-create-fsn.c
index 8c99b26..870984d 100644
--- a/src/nsdbc/nsdb-create-fsn.c
+++ b/src/nsdbc/nsdb-create-fsn.c
@@ -110,10 +110,10 @@ main(int argc, char **argv)
 {
        char *progname, *binddn, *nsdbname, *endptr;
        unsigned short nsdbport;
-       unsigned int ttl, ldap_err;
        char *nce, *fsn_uuid;
        FedFsStatus retval;
        unsigned long tmp;
+       unsigned int ttl;
        nsdb_t host;
        int arg;
 
@@ -257,7 +257,7 @@ main(int argc, char **argv)
                goto out_free;
        }
 
-       retval = nsdb_create_fsn_s(host, nce, fsn_uuid, ttl, &ldap_err);
+       retval = nsdb_create_fsn_s(host, nce, fsn_uuid, ttl);
        switch (retval) {
        case FEDFS_OK:
                printf("Successfully created FSN record for %s under %s\n",
@@ -271,7 +271,7 @@ main(int argc, char **argv)
                        fprintf(stderr, "NCE %s does not exist\n", nce);
                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);
@@ -282,7 +282,7 @@ main(int argc, char **argv)
                        break;
                default:
                        fprintf(stderr, "Failed to create FSN: %s\n",
-                               ldap_err2string(ldap_err));
+                               nsdb_ldaperr2string(host));
                }
                break;
        default:
diff --git a/src/nsdbc/nsdb-delete-fsl.c b/src/nsdbc/nsdb-delete-fsl.c
index 5e19e8d..ce33919 100644
--- a/src/nsdbc/nsdb-delete-fsl.c
+++ b/src/nsdbc/nsdb-delete-fsl.c
@@ -108,7 +108,6 @@ main(int argc, char **argv)
        char *progname, *binddn, *nsdbname;
        char *nce, *fsl_uuid;
        unsigned short nsdbport;
-       unsigned int ldap_err;
        FedFsStatus retval;
        nsdb_t host;
        int arg;
@@ -239,7 +238,7 @@ main(int argc, char **argv)
                goto out_free;
        }
 
-       retval = nsdb_delete_fsl_s(host, nce, fsl_uuid, &ldap_err);
+       retval = nsdb_delete_fsl_s(host, nce, fsl_uuid);
        switch (retval) {
        case FEDFS_OK:
                printf("Successfully deleted FSL record for %s under %s\n",
@@ -257,7 +256,7 @@ main(int argc, char **argv)
                        nsdbname, nsdbport, fsl_uuid);
                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);
@@ -268,7 +267,7 @@ main(int argc, char **argv)
                        break;
                default:
                        fprintf(stderr, "Failed to delete FSL %s: %s\n",
-                               fsl_uuid, ldap_err2string(ldap_err));
+                               fsl_uuid, nsdb_ldaperr2string(host));
                }
                break;
        default:
diff --git a/src/nsdbc/nsdb-delete-fsn.c b/src/nsdbc/nsdb-delete-fsn.c
index 42073e8..789216e 100644
--- a/src/nsdbc/nsdb-delete-fsn.c
+++ b/src/nsdbc/nsdb-delete-fsn.c
@@ -104,7 +104,6 @@ main(int argc, char **argv)
 {
        char *progname, *binddn, *nsdbname;
        unsigned short nsdbport;
-       unsigned int ldap_err;
        char *nce, *fsn_uuid;
        FedFsStatus retval;
        _Bool leave_fsn;
@@ -241,7 +240,7 @@ main(int argc, char **argv)
                goto out_free;
        }
 
-       retval = nsdb_delete_fsn_s(host, nce, fsn_uuid, leave_fsn, &ldap_err);
+       retval = nsdb_delete_fsn_s(host, nce, fsn_uuid, leave_fsn);
        switch (retval) {
        case FEDFS_OK:
                if (leave_fsn)
@@ -266,7 +265,7 @@ main(int argc, char **argv)
                fprintf(stderr, "FSN %s still has FSL entries\n", fsn_uuid);
                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);
@@ -281,7 +280,7 @@ main(int argc, char **argv)
                        break;
                default:
                        fprintf(stderr, "Failed to delete FSN %s: %s\n",
-                               fsn_uuid, ldap_err2string(ldap_err));
+                               fsn_uuid, nsdb_ldaperr2string(host));
                }
                break;
        default:
diff --git a/src/nsdbc/nsdb-update-fsl.c b/src/nsdbc/nsdb-update-fsl.c
index 17514c2..fb7cfcc 100644
--- a/src/nsdbc/nsdb-update-fsl.c
+++ b/src/nsdbc/nsdb-update-fsl.c
@@ -110,7 +110,6 @@ main(int argc, char **argv)
        char *progname, *binddn, *nsdbname;
        char *nce, *fsl_uuid, *attribute, *value;
        unsigned short nsdbport;
-       unsigned int ldap_err;
        FedFsStatus retval;
        nsdb_t host;
        int arg;
@@ -250,8 +249,7 @@ main(int argc, char **argv)
                goto out_free;
        }
 
-       retval = nsdb_update_fsl_s(host, nce, fsl_uuid, attribute,
-                                                       value, &ldap_err);
+       retval = nsdb_update_fsl_s(host, nce, fsl_uuid, attribute, value);
        switch (retval) {
        case FEDFS_OK:
                printf("Successfully updated FSL record for %s under %s\n",
@@ -265,7 +263,7 @@ main(int argc, char **argv)
                        fprintf(stderr, "NCE %s does not exist\n", nce);
                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);
@@ -276,7 +274,7 @@ main(int argc, char **argv)
                        break;
                default:
                        fprintf(stderr, "Failed to update FSL %s: %s\n",
-                               fsl_uuid, ldap_err2string(ldap_err));
+                               fsl_uuid, nsdb_ldaperr2string(host));
                }
                break;
        default:


_______________________________________________
fedfs-utils-devel mailing list
[email protected]
https://oss.oracle.com/mailman/listinfo/fedfs-utils-devel

Reply via email to