Clean up: simplify fedfsd_svc_set_nsdb_params_1() by moving the
nsdb_ping_s() call site and the following switch statement to a
separate function.

Signed-off-by: Chuck Lever <[email protected]>
---

 src/fedfsd/svc.c |   55 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 42 insertions(+), 13 deletions(-)

diff --git a/src/fedfsd/svc.c b/src/fedfsd/svc.c
index ec8258b..e3c9bc4 100644
--- a/src/fedfsd/svc.c
+++ b/src/fedfsd/svc.c
@@ -935,6 +935,46 @@ out:
 }
 
 /**
+ * Ping NSDB node
+ *
+ * @param hostname NUL-terminated C string containing NDS hostname of NSDB
+ * @param port NSDB node's IP port number
+ * @return a FedFsStatus code
+ */
+static FedFsStatus
+fedfsd_test_nsdb(const char *hostname, unsigned short port)
+{
+       unsigned int ldap_err;
+       FedFsStatus retval;
+
+       xlog(D_CALL, "%s: pinging %s:%u", __func__, hostname, port);
+
+       retval = nsdb_ping_s(hostname, port, &ldap_err);
+       switch (retval) {
+       case FEDFS_OK:
+               xlog(D_GENERAL, "%s: %s:%u passed ping test",
+                       __func__, hostname, port);
+               break;
+       case FEDFS_ERR_NSDB_NONCE:
+               xlog(D_GENERAL, "%s: %s:%u is up, but not an NSDB: %s",
+                       __func__, hostname, port,
+                       nsdb_display_fedfsstatus(retval));
+               break;
+       case FEDFS_ERR_NSDB_LDAP_VAL:
+               xlog(D_GENERAL, "%s: failed to ping NSDB %s:%u: %s\n",
+                       __func__, hostname, port,
+               ldap_err2string(ldap_err));
+               break;
+       default:
+               xlog(D_GENERAL, "%s: failed to ping NSDB %s:%u: %s",
+                       __func__, hostname, port,
+                       nsdb_display_fedfsstatus(retval));
+       }
+
+       return retval;
+}
+
+/**
  * Service a SET_NSDB_PARAMS request
  *
  * @param xprt transport on which to send reply
@@ -947,7 +987,6 @@ fedfsd_svc_set_nsdb_params_1(SVCXPRT *xprt)
        struct fedfs_secdata secdata;
        FedFsSetNsdbParamsArgs args;
        char *hostname = NULL;
-       unsigned int ldap_err;
        unsigned short port;
        FedFsStatus result;
 
@@ -962,19 +1001,9 @@ fedfsd_svc_set_nsdb_params_1(SVCXPRT *xprt)
        if (result != FEDFS_OK)
                goto out;
 
-       result = nsdb_ping_s(hostname, port, &ldap_err);
-       switch (result) {
-       case FEDFS_OK:
-               break;
-       case FEDFS_ERR_NSDB_LDAP_VAL:
-               xlog(L_ERROR, "Failed to ping NSDB %s:%u: %s\n",
-                       hostname, port, ldap_err2string(ldap_err));
-               goto out;
-       default:
-               xlog(L_ERROR, "Warning: %s:%u is not an NSDB: %s",
-                       hostname, port, nsdb_display_fedfsstatus(result));
+       result = fedfsd_test_nsdb(hostname, port);
+       if (result != FEDFS_OK)
                goto out;
-       }
 
        switch (args.params.secType) {
        case FEDFS_SEC_NONE:


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

Reply via email to