From 48b0efd6e7e52d1d061e73cca1b9d14d35de7f38 Mon Sep 17 00:00:00 2001 From: Nir Soffer Date: Jan 12 2018 15:42:03 +0000 Subject: Add dir argument to sanlock_socket_address() Like lockfile(), sanlock_socket_address() accepts now a dir argument, and use it to create the socket. This would allow running sanlock daemon and client in the tests as non-privileged user. Signed-off-by: Nir Soffer --- diff --git a/src/client.c b/src/client.c index ad78c21..9c83eb7 100644 --- a/src/client.c +++ b/src/client.c @@ -48,7 +48,7 @@ static int connect_socket(int *sock_fd) if (s < 0) return -errno; - rv = sanlock_socket_address(&addr); + rv = sanlock_socket_address(SANLK_RUN_DIR, &addr); if (rv < 0) { close(s); return rv; diff --git a/src/main.c b/src/main.c index 9fc033f..e2c882f 100644 --- a/src/main.c +++ b/src/main.c @@ -1290,7 +1290,7 @@ static int setup_listener(void) struct sockaddr_un addr; int rv, fd, ci; - rv = sanlock_socket_address(&addr); + rv = sanlock_socket_address(SANLK_RUN_DIR, &addr); if (rv < 0) return rv; diff --git a/src/sanlock_sock.c b/src/sanlock_sock.c index e7efe8e..b83f9ae 100644 --- a/src/sanlock_sock.c +++ b/src/sanlock_sock.c @@ -18,12 +18,12 @@ #include "sanlock.h" #include "sanlock_sock.h" -int sanlock_socket_address(struct sockaddr_un *addr) +int sanlock_socket_address(const char *dir, struct sockaddr_un *addr) { memset(addr, 0, sizeof(struct sockaddr_un)); addr->sun_family = AF_LOCAL; snprintf(addr->sun_path, sizeof(addr->sun_path) - 1, "%s/%s", - SANLK_RUN_DIR, SANLK_SOCKET_NAME); + dir, SANLK_SOCKET_NAME); return 0; } diff --git a/src/sanlock_sock.h b/src/sanlock_sock.h index 78821c2..4ffdb70 100644 --- a/src/sanlock_sock.h +++ b/src/sanlock_sock.h @@ -89,7 +89,7 @@ struct sanlk_state { char str[0]; /* string of internal state */ }; -int sanlock_socket_address(struct sockaddr_un *addr); +int sanlock_socket_address(const char *dir, struct sockaddr_un *addr); struct event_cb { struct sm_header h;