summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Dieter Wallnöfer <mdw@samba.org>2010-10-29 10:45:47 +0200
committerMatthias Dieter Wallnöfer <mdw@samba.org>2010-10-29 09:55:18 +0000
commitebe78c444c1220829f34488aa5d7f11437785f54 (patch)
treed1a573182023131f4beed64d654c16340fcf6768
parent45cd2e445d75429fbd84a95ff4a0fa0852279cd3 (diff)
downloadsamba-ebe78c444c1220829f34488aa5d7f11437785f54.tar.gz
samba-ebe78c444c1220829f34488aa5d7f11437785f54.tar.bz2
samba-ebe78c444c1220829f34488aa5d7f11437785f54.zip
s4:samr RPC server - provide the right "ReplicaSourceNodeName"
It's the content of the "domainReplica" attribute if it exists and has only a meaning on interim/mixed domain function levels (with NT4 dcs).
-rw-r--r--source4/rpc_server/samr/dcesrv_samr.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/source4/rpc_server/samr/dcesrv_samr.c b/source4/rpc_server/samr/dcesrv_samr.c
index 1c4e9ecada..6871572ac1 100644
--- a/source4/rpc_server/samr/dcesrv_samr.c
+++ b/source4/rpc_server/samr/dcesrv_samr.c
@@ -483,9 +483,10 @@ static NTSTATUS dcesrv_samr_info_DomGeneralInformation(struct samr_domain_state
struct ldb_message **dom_msgs,
struct samr_DomGeneralInformation *info)
{
- /* FIXME: this has a completely different meaning
- * MS-SAMR 2.2.4.1 - ReplicaSourceNodeName */
- info->primary.string = talloc_strdup(mem_ctx, "");
+ /* MS-SAMR 2.2.4.1 - ReplicaSourceNodeName: "domainReplica" attribute */
+ info->primary.string = ldb_msg_find_attr_as_string(dom_msgs[0],
+ "domainReplica",
+ "");
info->force_logoff_time = ldb_msg_find_attr_as_uint64(dom_msgs[0], "forceLogoff",
0x8000000000000000LL);
@@ -575,13 +576,14 @@ static NTSTATUS dcesrv_samr_info_DomInfo5(struct samr_domain_state *state,
return DomInfo6
*/
static NTSTATUS dcesrv_samr_info_DomInfo6(struct samr_domain_state *state,
- TALLOC_CTX *mem_ctx,
- struct ldb_message **dom_msgs,
- struct samr_DomInfo6 *info)
+ TALLOC_CTX *mem_ctx,
+ struct ldb_message **dom_msgs,
+ struct samr_DomInfo6 *info)
{
- /* FIXME: this has a completely different meaning
- * MS-SAMR 2.2.4.1 - ReplicaSourceNodeName */
- info->primary.string = talloc_strdup(mem_ctx, "");
+ /* MS-SAMR 2.2.4.1 - ReplicaSourceNodeName: "domainReplica" attribute */
+ info->primary.string = ldb_msg_find_attr_as_string(dom_msgs[0],
+ "domainReplica",
+ "");
return NT_STATUS_OK;
}
@@ -740,8 +742,9 @@ static NTSTATUS dcesrv_samr_QueryDomainInfo(struct dcesrv_call_state *dce_call,
case 2:
{
static const char * const attrs2[] = {"forceLogoff",
- "oEMInformation",
- "modifiedCount",
+ "oEMInformation",
+ "modifiedCount",
+ "domainReplica",
NULL};
attrs = attrs2;
break;
@@ -767,7 +770,8 @@ static NTSTATUS dcesrv_samr_QueryDomainInfo(struct dcesrv_call_state *dce_call,
}
case 6:
{
- static const char * const attrs2[] = { NULL };
+ static const char * const attrs2[] = { "domainReplica",
+ NULL };
attrs = attrs2;
break;
}