[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