From f55ea8bb3dca868e21663cd90eaea7a35cd7886c Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 9 Jan 2006 22:12:53 +0000 Subject: r12804: This patch reworks the Samba4 sockets layer to use a socket_address structure that is more generic than just 'IP/port'. It now passes make test, and has been reviewed and updated by metze. (Thankyou *very* much). This passes 'make test' as well as kerberos use (not currently in the testsuite). The original purpose of this patch was to have Samba able to pass a socket address stucture from the BSD layer into the kerberos routines and back again. It also removes nbt_peer_addr, which was being used for a similar purpose. It is a large change, but worthwhile I feel. Andrew Bartlett (This used to be commit 88198c4881d8620a37086f80e4da5a5b71c5bbb2) --- source4/smb_server/management.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'source4/smb_server/management.c') diff --git a/source4/smb_server/management.c b/source4/smb_server/management.c index 19e2090682..bb153d3c5e 100644 --- a/source4/smb_server/management.c +++ b/source4/smb_server/management.c @@ -48,10 +48,19 @@ static NTSTATUS smbsrv_session_information(struct irpc_message *msg, for (sess=smb_conn->sessions.list; sess; sess=sess->next) { struct smbsrv_session_info *info = &r->out.info.sessions.sessions[i]; + struct socket_address *client_addr; + client_addr = socket_get_peer_addr(smb_conn->connection->socket, r); + + if (client_addr) { + info->client_ip = client_addr->addr; + } else { + info->client_ip = NULL; + } + info->vuid = sess->vuid; info->account_name = sess->session_info->server_info->account_name; info->domain_name = sess->session_info->server_info->domain_name; - info->client_ip = socket_get_peer_addr(smb_conn->connection->socket, r); + info->connect_time = timeval_to_nttime(&sess->statistics.connect_time); info->auth_time = timeval_to_nttime(&sess->statistics.auth_time); i++; @@ -81,10 +90,18 @@ static NTSTATUS smbsrv_tcon_information(struct irpc_message *msg, for (tcon=smb_conn->smb_tcons.list; tcon; tcon=tcon->next) { struct smbsrv_tcon_info *info = &r->out.info.tcons.tcons[i]; + struct socket_address *client_addr; + client_addr = socket_get_peer_addr(smb_conn->connection->socket, r); + + if (client_addr) { + info->client_ip = client_addr->addr; + } else { + info->client_ip = NULL; + } + info->tid = tcon->tid; info->share_name = lp_servicename(tcon->service); info->connect_time = timeval_to_nttime(&tcon->statistics.connect_time); - info->client_ip = socket_get_peer_addr(smb_conn->connection->socket, r); i++; } -- cgit