The branch, master has been updated via 7f25723... s4:wrepl_server: use tsocket_address functions to get the peer ip via 9dd4419... s4:smb_server: use tsocket_address_string() for debugging the client address from 54abb07... s4:smb_server: use tsocket_address_string() to display the client address
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 7f25723cf504b3cdc0db68ff4125539baa486975 Author: Stefan Metzmacher <me...@samba.org> Date: Tue Apr 27 16:17:28 2010 +0200 s4:wrepl_server: use tsocket_address functions to get the peer ip metze commit 9dd4419ebe12d8a4eb467cf26640de5575e04e83 Author: Stefan Metzmacher <me...@samba.org> Date: Tue Apr 27 16:05:08 2010 +0200 s4:smb_server: use tsocket_address_string() for debugging the client address metze ----------------------------------------------------------------------- Summary of changes: source4/smb_server/management.c | 17 +++++++++-------- source4/wrepl_server/wrepl_in_connection.c | 19 +++++++++++++++---- 2 files changed, 24 insertions(+), 12 deletions(-) Changeset truncated at 500 lines: diff --git a/source4/smb_server/management.c b/source4/smb_server/management.c index e58c278..b8e42ae 100644 --- a/source4/smb_server/management.c +++ b/source4/smb_server/management.c @@ -25,6 +25,7 @@ #include "lib/messaging/irpc.h" #include "librpc/gen_ndr/ndr_irpc.h" #include "auth/auth.h" +#include "lib/tsocket/tsocket.h" /* return a list of open sessions @@ -34,9 +35,15 @@ static NTSTATUS smbsrv_session_information(struct irpc_message *msg, { struct smbsrv_connection *smb_conn = talloc_get_type(msg->private_data, struct smbsrv_connection); + struct tsocket_address *client_addr = smb_conn->connection->remote_address; + char *client_addr_string; int i=0, count=0; struct smbsrv_session *sess; + /* This is for debugging only! */ + client_addr_string = tsocket_address_string(client_addr, r); + NT_STATUS_HAVE_NO_MEMORY(client_addr_string); + /* count the number of sessions */ for (sess=smb_conn->sessions.list; sess; sess=sess->next) { count++; @@ -48,14 +55,8 @@ 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->client_ip = client_addr_string; info->vuid = sess->vuid; info->account_name = sess->session_info->server_info->account_name; diff --git a/source4/wrepl_server/wrepl_in_connection.c b/source4/wrepl_server/wrepl_in_connection.c index ff0bb6c..09fb325 100644 --- a/source4/wrepl_server/wrepl_in_connection.c +++ b/source4/wrepl_server/wrepl_in_connection.c @@ -103,7 +103,8 @@ static void wreplsrv_accept(struct stream_connection *conn) { struct wreplsrv_service *service = talloc_get_type(conn->private_data, struct wreplsrv_service); struct wreplsrv_in_connection *wrepl_conn; - struct socket_address *peer_ip; + struct tsocket_address *peer_addr; + char *peer_ip; struct tevent_req *subreq; int rc, fd; @@ -151,14 +152,24 @@ static void wreplsrv_accept(struct stream_connection *conn) wrepl_conn->conn = conn; wrepl_conn->service = service; - peer_ip = socket_get_peer_addr(conn->socket, wrepl_conn); + peer_addr = conn->remote_address; + + if (!tsocket_address_is_inet(peer_addr, "ipv4")) { + DEBUG(0,("wreplsrv_accept: non ipv4 peer addr '%s'\n", + tsocket_address_string(peer_addr, wrepl_conn))); + wreplsrv_terminate_in_connection(wrepl_conn, "wreplsrv_accept: " + "invalid peer IP"); + return; + } + + peer_ip = tsocket_address_inet_addr_string(peer_addr, wrepl_conn); if (peer_ip == NULL) { wreplsrv_terminate_in_connection(wrepl_conn, "wreplsrv_accept: " - "could not obtain peer IP from kernel"); + "could not convert peer IP into a string"); return; } - wrepl_conn->partner = wreplsrv_find_partner(service, peer_ip->addr); + wrepl_conn->partner = wreplsrv_find_partner(service, peer_ip); irpc_add_name(conn->msg_ctx, "wreplsrv_connection"); /* -- Samba Shared Repository