changeset 9843:95fba8612a87 HEAD

Added net_getunixname().
author Timo Sirainen <tss@iki.fi>
date Mon, 31 Aug 2009 17:04:27 -0400
parents e95135898a3c
children 4efd13c0f778
files src/lib/network.c src/lib/network.h
diffstat 2 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/network.c	Mon Aug 31 16:35:43 2009 -0400
+++ b/src/lib/network.c	Mon Aug 31 17:04:27 2009 -0400
@@ -589,6 +589,21 @@
 	return 0;
 }
 
+int net_getunixname(int fd, const char **name_r)
+{
+	struct sockaddr_un sa;
+	socklen_t addrlen = sizeof(sa);
+
+	if (getsockname(fd, (void *)&sa, &addrlen) < 0)
+		return -1;
+	if (sa.sun_family != AF_UNIX) {
+		errno = ENOTSOCK;
+		return -1;
+	}
+	*name_r = t_strdup(sa.sun_path);
+	return 0;
+}
+
 const char *net_ip2addr(const struct ip_addr *ip)
 {
 #ifdef HAVE_IPV6
--- a/src/lib/network.h	Mon Aug 31 16:35:43 2009 -0400
+++ b/src/lib/network.h	Mon Aug 31 17:04:27 2009 -0400
@@ -95,6 +95,8 @@
 int net_getsockname(int fd, struct ip_addr *addr, unsigned int *port);
 /* Get socket remote address/port */
 int net_getpeername(int fd, struct ip_addr *addr, unsigned int *port);
+/* Get UNIX socket name. */
+int net_getunixname(int fd, const char **name_r);
 
 /* Returns ip_addr as string, or NULL if ip is invalid. */
 const char *net_ip2addr(const struct ip_addr *ip);