multipath-tools: libdmmp: Add new error DMMP_ERR_PERMISSION_DENY
authorGris Ge <fge@redhat.com>
Tue, 21 Nov 2017 14:09:17 +0000 (22:09 +0800)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Sat, 13 Jan 2018 09:02:14 +0000 (10:02 +0100)
 * Indicate user does not have privilege to flush mpath or invoke
   reconfig.
 * Bump API version to 0.2.0 for this API addition.

Signed-off-by: Gris Ge <fge@redhat.com>
libdmmp/Makefile
libdmmp/libdmmp.c
libdmmp/libdmmp/libdmmp.h
libdmmp/libdmmp_misc.c

index 6645a1a..bf231ac 100644 (file)
@@ -5,7 +5,7 @@
 #
 include ../Makefile.inc
 
-LIBDMMP_VERSION=0.1.0
+LIBDMMP_VERSION=0.2.0
 SONAME=$(LIBDMMP_VERSION)
 DEVLIB = libdmmp.so
 LIBS = $(DEVLIB).$(SONAME)
index 95f65b8..944cecd 100644 (file)
@@ -364,6 +364,14 @@ invoke:
                }
        }
 
+       if ((*output != NULL) &&
+           strncmp(*output, "permission deny",
+                   strlen("permission deny")) == 0) {
+               _error(ctx, "Permission deny, need to be root");
+               rc = DMMP_ERR_PERMISSION_DENY;
+               goto out;
+       }
+
 out:
        if (rc != DMMP_OK) {
                free(*output);
index 33b5d74..e157982 100644 (file)
@@ -42,6 +42,7 @@ extern "C" {
 #define DMMP_ERR_MPATH_BUSY            7
 #define DMMP_ERR_MPATH_NOT_FOUND       8
 #define DMMP_ERR_INVALID_ARGUMENT      9
+#define DMMP_ERR_PERMISSION_DENY       10
 
 /*
  * Use the syslog severity level as log priority
@@ -679,6 +680,8 @@ DMMP_DLL_EXPORT const char *dmmp_path_status_str(uint32_t path_status);
  *
  *     * DMMP_ERR_INVALID_ARGUMENT
  *
+ *     * DMMP_ERR_PERMISSION_DENY
+ *
  *     Error number could be converted to string by dmmp_strerror().
  */
 DMMP_DLL_EXPORT int dmmp_flush_mpath(struct dmmp_context *ctx,
@@ -704,6 +707,8 @@ DMMP_DLL_EXPORT int dmmp_flush_mpath(struct dmmp_context *ctx,
  *
  *     * DMMP_ERR_NO_DAEMON
  *
+ *     * DMMP_ERR_PERMISSION_DENY
+ *
  *     Error number could be converted to string by dmmp_strerror().
  */
 DMMP_DLL_EXPORT int dmmp_reconfig(struct dmmp_context *ctx);
index 435ddfa..69b5a20 100644 (file)
@@ -49,6 +49,7 @@ static const struct _num_str_conv _DMMP_RC_MSG_CONV[] = {
        {DMMP_ERR_MPATH_BUSY, "Specified multipath device map is in use"},
        {DMMP_ERR_MPATH_NOT_FOUND, "Specified multipath not found"},
        {DMMP_ERR_INVALID_ARGUMENT, "Invalid argument"},
+       {DMMP_ERR_PERMISSION_DENY, "Permission deny"},
 };
 
 _dmmp_str_func_gen(dmmp_strerror, int, rc, _DMMP_RC_MSG_CONV);