summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 6683ebf26c..b7e9fecc88 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;
}