summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2013-10-27 21:53:15 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2013-10-31 09:41:59 +0100
commit2910bd9ff28435dd2cff9532d8161d90304760c9 (patch)
treed5bcc059da5b20feb38236d10e0d840a4df518a5 /source4
parentef8147655a1a735bc54258177e26b415fd95b43a (diff)
downloadsamba-2910bd9ff28435dd2cff9532d8161d90304760c9.tar.gz
samba-2910bd9ff28435dd2cff9532d8161d90304760c9.tar.bz2
samba-2910bd9ff28435dd2cff9532d8161d90304760c9.zip
s4:rootdse/netlogon: Pass client ip address
This patch may be squashed into "s4:dsdb/rootdse: Support netlogon request".
Diffstat (limited to 'source4')
-rw-r--r--source4/dsdb/samdb/ldb_modules/rootdse.c8
-rw-r--r--source4/ldap_server/ldap_backend.c3
2 files changed, 10 insertions, 1 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/rootdse.c b/source4/dsdb/samdb/ldb_modules/rootdse.c
index 6dbd9a072f..bdb5d92603 100644
--- a/source4/dsdb/samdb/ldb_modules/rootdse.c
+++ b/source4/dsdb/samdb/ldb_modules/rootdse.c
@@ -34,6 +34,7 @@
#include "param/param.h"
#include "lib/messaging/irpc.h"
#include "librpc/gen_ndr/ndr_irpc_c.h"
+#include "lib/tsocket/tsocket.h"
#include "cldap_server/cldap_server.h"
struct private_data {
@@ -750,8 +751,10 @@ static int rootdse_handle_netlogon(struct rootdse_context *ac)
struct ldb_context *ldb;
struct ldb_parse_tree *tree;
struct loadparm_context *lp_ctx;
+ struct tsocket_address *src_addr;
TALLOC_CTX *tmp_ctx = talloc_new(ac->req);
const char *domain, *host, *user, *domain_guid;
+ char *src_addr_s;
struct dom_sid *domain_sid;
int acct_control = -1;
int version = -1;
@@ -765,6 +768,9 @@ static int rootdse_handle_netlogon(struct rootdse_context *ac)
tree = ac->req->op.search.tree;
lp_ctx = talloc_get_type(ldb_get_opaque(ldb, "loadparm"),
struct loadparm_context);
+ src_addr = talloc_get_type(ldb_get_opaque(ldb, "remoteAddress"),
+ struct tsocket_address);
+ src_addr_s = tsocket_address_inet_addr_string(src_addr, tmp_ctx);
status = parse_netlogon_request(tree, lp_ctx, tmp_ctx,
&domain, &host, &user, &domain_guid,
@@ -777,7 +783,7 @@ static int rootdse_handle_netlogon(struct rootdse_context *ac)
domain, NULL, domain_sid,
domain_guid,
user, acct_control,
- NULL, /* FIXME: How to retrieve client ip addr here? */
+ src_addr_s,
version, lp_ctx,
&netlogon, false);
if (!NT_STATUS_IS_OK(status)) {
diff --git a/source4/ldap_server/ldap_backend.c b/source4/ldap_server/ldap_backend.c
index 2760cdb470..3432594209 100644
--- a/source4/ldap_server/ldap_backend.c
+++ b/source4/ldap_server/ldap_backend.c
@@ -226,6 +226,9 @@ NTSTATUS ldapsrv_backend_Init(struct ldapsrv_connection *conn)
ldb_set_opaque(conn->ldb, "supportedSASLMechanisms", sasl_mechs);
}
+ ldb_set_opaque(conn->ldb, "remoteAddress",
+ conn->connection->remote_address);
+
return NT_STATUS_OK;
}