54 lines
1.7 KiB
Diff
54 lines
1.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martin Wilck <mwilck@suse.com>
|
|
Date: Wed, 12 Feb 2025 21:17:41 +0100
|
|
Subject: [PATCH] libmpathcmd: honor MULTIPATH_SOCKET_NAME environment variable
|
|
|
|
In systemd installments, users can already override the socket names
|
|
that systemd listens on. With this patch, clients using libmpathcmd
|
|
can be customized to use a non-standard socket by setting an environment
|
|
variable.
|
|
|
|
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
---
|
|
libmpathcmd/mpath_cmd.c | 7 +++++--
|
|
1 file changed, 5 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/libmpathcmd/mpath_cmd.c b/libmpathcmd/mpath_cmd.c
|
|
index 267e3dd7..7f805abb 100644
|
|
--- a/libmpathcmd/mpath_cmd.c
|
|
+++ b/libmpathcmd/mpath_cmd.c
|
|
@@ -20,6 +20,7 @@
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <stdio.h>
|
|
+#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/un.h>
|
|
@@ -104,6 +105,7 @@ int __mpath_connect(int nonblocking)
|
|
int flags = 0;
|
|
const char *const names[2] = {PATHNAME_SOCKET, ABSTRACT_SOCKET};
|
|
int name_idx = 0;
|
|
+ const char *env_name = getenv("MULTIPATH_SOCKET_NAME"), *name;
|
|
|
|
retry:
|
|
fd = socket(AF_LOCAL, SOCK_STREAM, 0);
|
|
@@ -116,12 +118,13 @@ retry:
|
|
(void)fcntl(fd, F_SETFL, flags|O_NONBLOCK);
|
|
}
|
|
|
|
- len = mpath_fill_sockaddr__(&addr, names[name_idx]);
|
|
+ name = env_name ? env_name : names[name_idx];
|
|
+ len = mpath_fill_sockaddr__(&addr, name);
|
|
if (connect(fd, (struct sockaddr *)&addr, len) == -1) {
|
|
int err = errno;
|
|
|
|
close(fd);
|
|
- if (++name_idx == 1)
|
|
+ if (name != env_name && ++name_idx == 1)
|
|
goto retry;
|
|
else {
|
|
errno = err;
|