This feature is only used by multipathd. Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> --- libmpathutil/uxsock.c | 15 --------------- multipathd/main.c | 28 +++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/libmpathutil/uxsock.c b/libmpathutil/uxsock.c index 889d7a1..59c4717 100644 --- a/libmpathutil/uxsock.c +++ b/libmpathutil/uxsock.c @@ -46,23 +46,8 @@ int ux_socket_listen(const char *name) { int fd; size_t len; -#ifdef USE_SYSTEMD - int num; -#endif struct sockaddr_un addr; -#ifdef USE_SYSTEMD - num = sd_listen_fds(0); - if (num > 1) { - condlog(3, "sd_listen_fds returned %d fds", num); - return -1; - } else if (num == 1) { - fd = SD_LISTEN_FDS_START + 0; - condlog(3, "using fd %d from sd_listen_fds", fd); - return fd; - } -#endif - /* This is after the PID check, so unlinking should be fine */ if (name[0] != '@' && unlink(name) == -1 && errno != ENOENT) condlog(1, "Failed to unlink %s", name); diff --git a/multipathd/main.c b/multipathd/main.c index 52630f7..5455bdf 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -1863,15 +1863,41 @@ uevqloop (void * ap) pthread_cleanup_pop(1); return NULL; } + +#ifdef USE_SYSTEMD +static int get_systemd_sockets(long *ux_sock) +{ + int num = sd_listen_fds(0); + + if (num > 1) { + condlog(3, "sd_listen_fds returned %d fds", num); + return -1; + } else if (num == 1) { + ux_sock[0] = SD_LISTEN_FDS_START + 0; + condlog(3, "using fd %ld from sd_listen_fds", ux_sock[0]); + } + return num; +} +#else +static int get_systemd_sockets(long *ux_sock __attribute__((unused))) +{ + return 0; +} +#endif + + static void * uxlsnrloop (void * ap) { long ux_sock; + int num; pthread_cleanup_push(rcu_unregister, NULL); rcu_register_thread(); - ux_sock = ux_socket_listen(DEFAULT_SOCKET); + num = get_systemd_sockets(&ux_sock); + if (num < 1) + ux_sock = ux_socket_listen(DEFAULT_SOCKET); if (ux_sock == -1) { condlog(1, "could not create uxsock: %d", errno); exit_daemon(); -- 2.48.1