From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Martin Wilck 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 Reviewed-by: Benjamin Marzinski Signed-off-by: Benjamin Marzinski --- 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 #include #include +#include #include #include #include @@ -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;