svn commit: samba r2446 - in branches/SAMBA_4_0/source/lib/socket: .

metze at samba.org metze at samba.org
Mon Sep 20 12:03:49 GMT 2004


Author: metze
Date: 2004-09-20 12:03:49 +0000 (Mon, 20 Sep 2004)
New Revision: 2446

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/lib/socket&rev=2446&nolog=1

Log:
implement socket_get_<peer|my>_<addr|port>() for ipv4

metze

Modified:
   branches/SAMBA_4_0/source/lib/socket/socket_ipv4.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/socket/socket_ipv4.c
===================================================================
--- branches/SAMBA_4_0/source/lib/socket/socket_ipv4.c	2004-09-20 11:02:40 UTC (rev 2445)
+++ branches/SAMBA_4_0/source/lib/socket/socket_ipv4.c	2004-09-20 12:03:49 UTC (rev 2446)
@@ -89,7 +89,6 @@
 		}
 	}
 
-
 	ret = connect(sock->fd, (const struct sockaddr *)&srv_addr, sizeof(srv_addr));
 	if (ret == -1) {
 		/* TODO: we need to map from errno to NTSTATUS here! */
@@ -296,22 +295,58 @@
 
 static char *ipv4_tcp_get_peer_addr(struct socket_context *sock, TALLOC_CTX *mem_ctx)
 {
-	return NULL;
+	struct sockaddr_in peer_addr;
+	socklen_t len = sizeof(peer_addr);
+	int ret;
+
+	ret = getpeername(sock->fd, (struct sockaddr *)&peer_addr, &len);
+	if (ret == -1) {
+		return NULL;
+	}
+
+	return talloc_strdup(mem_ctx, inet_ntoa(peer_addr.sin_addr));
 }
 
 static int ipv4_tcp_get_peer_port(struct socket_context *sock)
 {
-	return -1;
+	struct sockaddr_in peer_addr;
+	socklen_t len = sizeof(peer_addr);
+	int ret;
+
+	ret = getpeername(sock->fd, (struct sockaddr *)&peer_addr, &len);
+	if (ret == -1) {
+		return -1;
+	}
+
+	return ntohs(peer_addr.sin_port);
 }
 
 static char *ipv4_tcp_get_my_addr(struct socket_context *sock, TALLOC_CTX *mem_ctx)
 {
-	return NULL;
+	struct sockaddr_in my_addr;
+	socklen_t len = sizeof(my_addr);
+	int ret;
+
+	ret = getsockname(sock->fd, (struct sockaddr *)&my_addr, &len);
+	if (ret == -1) {
+		return NULL;
+	}
+
+	return talloc_strdup(mem_ctx, inet_ntoa(my_addr.sin_addr));
 }
 
 static int ipv4_tcp_get_my_port(struct socket_context *sock)
 {
-	return -1;
+	struct sockaddr_in my_addr;
+	socklen_t len = sizeof(my_addr);
+	int ret;
+
+	ret = getsockname(sock->fd, (struct sockaddr *)&my_addr, &len);
+	if (ret == -1) {
+		return -1;
+	}
+
+	return ntohs(my_addr.sin_port);
 }
 
 static int ipv4_tcp_get_fd(struct socket_context *sock)



More information about the samba-cvs mailing list