# HG changeset patch # User Timo Sirainen # Date 1251752667 14400 # Node ID 95fba8612a879a194461e968b4223d3731b77bca # Parent e95135898a3c86e2583cb4d9640bd49e6e4c64fb Added net_getunixname(). diff -r e95135898a3c -r 95fba8612a87 src/lib/network.c --- 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 diff -r e95135898a3c -r 95fba8612a87 src/lib/network.h --- 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);