diff src/lib/network.c @ 2098:24e382b88232 HEAD

Added net_getpeername()
author Timo Sirainen <tss@iki.fi>
date Mon, 31 May 2004 21:56:43 +0300
parents 79790750c349
children c5817f302aa6
line wrap: on
line diff
--- a/src/lib/network.c	Mon May 31 21:04:46 2004 +0300
+++ b/src/lib/network.c	Mon May 31 21:56:43 2004 +0300
@@ -487,6 +487,23 @@
 	return 0;
 }
 
+int net_getpeername(int fd, struct ip_addr *addr, unsigned int *port)
+{
+	union sockaddr_union so;
+	socklen_t addrlen;
+
+	i_assert(fd >= 0);
+
+	addrlen = sizeof(so);
+	if (getpeername(fd, (struct sockaddr *) &so, &addrlen) == -1)
+		return -1;
+
+        if (addr != NULL) sin_get_ip(&so, addr);
+	if (port != NULL) *port = sin_get_port(&so);
+
+	return 0;
+}
+
 const char *net_ip2addr(const struct ip_addr *ip)
 {
 #ifdef HAVE_IPV6