[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Tue Apr 27 08:19:15 MDT 2010


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 <metze at 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 <metze at 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


More information about the samba-cvs mailing list