diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index 5e6195e108..2c003106c9 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -1797,6 +1797,24 @@ int socket_address_parse_unix(SocketAddress *ret_address, const char *s) { return 0; } +int socket_address_equal_unix(const char *a, const char *b) { + SocketAddress socket_a, socket_b; + int r; + + assert(a); + assert(b); + + r = socket_address_parse_unix(&socket_a, a); + if (r < 0) + return r; + + r = socket_address_parse_unix(&socket_b, b); + if (r < 0) + return r; + + return sockaddr_equal(&socket_a.sockaddr, &socket_b.sockaddr); +} + int vsock_parse_port(const char *s, unsigned *ret) { int r; diff --git a/src/basic/socket-util.h b/src/basic/socket-util.h index e9671c3833..830b48e435 100644 --- a/src/basic/socket-util.h +++ b/src/basic/socket-util.h @@ -342,6 +342,7 @@ int vsock_parse_cid(const char *s, unsigned *ret); * protocol mismatch. */ int socket_address_parse_unix(SocketAddress *ret_address, const char *s); int socket_address_parse_vsock(SocketAddress *ret_address, const char *s); +int socket_address_equal_unix(const char *a, const char *b); /* libc's SOMAXCONN is defined to 128 or 4096 (at least on glibc). But actually, the value can be much * larger. In our codebase we want to set it to the max usually, since nowadays socket memory is properly