diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2013-10-27 21:53:15 +0100 |
---|---|---|
committer | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2013-10-31 09:41:59 +0100 |
commit | 2910bd9ff28435dd2cff9532d8161d90304760c9 (patch) | |
tree | d5bcc059da5b20feb38236d10e0d840a4df518a5 | |
parent | ef8147655a1a735bc54258177e26b415fd95b43a (diff) | |
download | samba-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".
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/rootdse.c | 8 | ||||
-rw-r--r-- | source4/ldap_server/ldap_backend.c | 3 |
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; } |