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