[SCM] Samba Shared Repository - branch master updated -
6c9b0298a99ba14d832b30d9396bed64ae4ebd3e
Stefan Metzmacher
metze at samba.org
Thu Dec 4 12:03:43 GMT 2008
The branch, master has been updated
via 6c9b0298a99ba14d832b30d9396bed64ae4ebd3e (commit)
via e9d1c3e7eab7cbc14fa54d7df1ae7da52d483a7c (commit)
via 9d44600470e2f2444a09d91d5d6b36515454c919 (commit)
via 885a1be8b932a212b6234a2a0c990975eb16e9e8 (commit)
from 2b8f3e253d3a56aac996287f5ce265d0c915b3c8 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 6c9b0298a99ba14d832b30d9396bed64ae4ebd3e
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Dec 4 12:47:43 2008 +0100
s4:selftest: we have netr_GetDcName() and netr_GetAnyDCName() implementations now
metze
commit e9d1c3e7eab7cbc14fa54d7df1ae7da52d483a7c
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Dec 4 12:46:30 2008 +0100
RAW-NETLOGON: check netr_GetAnyDCName() result
metze
commit 9d44600470e2f2444a09d91d5d6b36515454c919
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Dec 4 12:03:01 2008 +0100
s4:netlogon: for now implement netr_GetAnyDCName() as wrapper of netr_GetDcName()
metze
commit 885a1be8b932a212b6234a2a0c990975eb16e9e8
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Dec 4 11:56:51 2008 +0100
s4:netlogon: Implement netr_GetDcName() similar to netr_DsGetDCName()
metze
-----------------------------------------------------------------------
Summary of changes:
source4/rpc_server/netlogon/dcerpc_netlogon.c | 48 +++++++++++++++++++++++-
source4/selftest/knownfail | 2 -
source4/torture/rpc/netlogon.c | 1 +
3 files changed, 47 insertions(+), 4 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source4/rpc_server/netlogon/dcerpc_netlogon.c b/source4/rpc_server/netlogon/dcerpc_netlogon.c
index ccc1fc5..2806802 100644
--- a/source4/rpc_server/netlogon/dcerpc_netlogon.c
+++ b/source4/rpc_server/netlogon/dcerpc_netlogon.c
@@ -803,7 +803,40 @@ static NTSTATUS dcesrv_netr_AccountSync(struct dcesrv_call_state *dce_call, TALL
static WERROR dcesrv_netr_GetDcName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct netr_GetDcName *r)
{
- DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
+ const char * const attrs[] = { NULL };
+ void *sam_ctx;
+ struct ldb_message **res;
+ struct ldb_dn *domain_dn;
+ int ret;
+ const char *dcname;
+
+ sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx,
+ dce_call->conn->dce_ctx->lp_ctx,
+ dce_call->conn->auth_state.session_info);
+ if (sam_ctx == NULL) {
+ return WERR_DS_SERVICE_UNAVAILABLE;
+ }
+
+ domain_dn = samdb_domain_to_dn(sam_ctx, mem_ctx,
+ r->in.domainname);
+ if (domain_dn == NULL) {
+ return WERR_DS_SERVICE_UNAVAILABLE;
+ }
+
+ ret = gendb_search_dn(sam_ctx, mem_ctx, domain_dn, &res, attrs);
+ if (ret != 1) {
+ return WERR_NO_SUCH_DOMAIN;
+ }
+
+ /* TODO: - return real IP address
+ * - check all r->in.* parameters (server_unc is ignored by w2k3!)
+ */
+ dcname = talloc_asprintf(mem_ctx, "\\\\%s",
+ lp_netbios_name(dce_call->conn->dce_ctx->lp_ctx));
+ W_ERROR_HAVE_NO_MEMORY(dcname);
+
+ *r->out.dcname = dcname;
+ return WERR_OK;
}
@@ -823,7 +856,18 @@ static WERROR dcesrv_netr_LogonControl(struct dcesrv_call_state *dce_call, TALLO
static WERROR dcesrv_netr_GetAnyDCName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct netr_GetAnyDCName *r)
{
- DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
+ struct netr_GetDcName r2;
+ WERROR werr;
+
+ ZERO_STRUCT(r2);
+
+ r2.in.logon_server = r->in.logon_server;
+ r2.in.domainname = r->in.domainname;
+ r2.out.dcname = r->out.dcname;
+
+ werr = dcesrv_netr_GetDcName(dce_call, mem_ctx, &r2);
+
+ return werr;
}
diff --git a/source4/selftest/knownfail b/source4/selftest/knownfail
index 9649a1f..abc6978 100644
--- a/source4/selftest/knownfail
+++ b/source4/selftest/knownfail
@@ -23,10 +23,8 @@ rpc.netlogon.*.LogonUasLogon
rpc.netlogon.*.LogonUasLogoff
rpc.netlogon.*.DatabaseSync
rpc.netlogon.*.DatabaseSync2
-rpc.netlogon.*.GetDcName
rpc.netlogon.*.LogonControl
rpc.netlogon.*.LogonControl2
-rpc.netlogon.*.GetAnyDCName
rpc.netlogon.*.DsrEnumerateDomainTrusts
rpc.netlogon.*.NetrEnumerateTrustedDomains
rpc.netlogon.*.NetrEnumerateTrustedDomainsEx
diff --git a/source4/torture/rpc/netlogon.c b/source4/torture/rpc/netlogon.c
index 953f9d1..5fb3607 100644
--- a/source4/torture/rpc/netlogon.c
+++ b/source4/torture/rpc/netlogon.c
@@ -1523,6 +1523,7 @@ static bool test_GetAnyDCName(struct torture_context *tctx,
status = dcerpc_netr_GetAnyDCName(p, tctx, &r);
torture_assert_ntstatus_ok(tctx, status, "GetAnyDCName");
+ torture_assert_werr_ok(tctx, r.out.result, "GetAnyDCName");
if (dcname) {
torture_comment(tctx, "\tDC is at '%s'\n", dcname);
--
Samba Shared Repository
More information about the samba-cvs
mailing list