summaryrefslogtreecommitdiff
path: root/source4/dsdb/samdb/ldb_modules
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2013-10-27 21:53:15 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2013-11-01 12:24:01 +0100
commited69aa2a25133a42b0449766cf714051514661af (patch)
tree4ed80a3434d80bd3f99ea9b84d619645b1041f51 /source4/dsdb/samdb/ldb_modules
parentf0a28534de216feaaa8c6e0ab27e88f0eebc019b (diff)
downloadsamba-ed69aa2a25133a42b0449766cf714051514661af.tar.gz
samba-ed69aa2a25133a42b0449766cf714051514661af.tar.bz2
samba-ed69aa2a25133a42b0449766cf714051514661af.zip
s4:rootdse/netlogon: Pass client ip address
This patch may be squashed into "s4:dsdb/rootdse: Support netlogon request".
Diffstat (limited to 'source4/dsdb/samdb/ldb_modules')
-rw-r--r--source4/dsdb/samdb/ldb_modules/rootdse.c11
1 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 99e8844ba1..ebe09ded4a 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 {
@@ -746,8 +747,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 = NULL;
struct dom_sid *domain_sid;
int acct_control = -1;
int version = -1;
@@ -759,6 +762,12 @@ 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);
+ if (src_addr) {
+ 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,
@@ -771,7 +780,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)) {