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 <[EMAIL PROTECTED]>
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 <[EMAIL PROTECTED]>
Date:   Thu Dec 4 12:46:30 2008 +0100

    RAW-NETLOGON: check netr_GetAnyDCName() result
    
    metze

commit 9d44600470e2f2444a09d91d5d6b36515454c919
Author: Stefan Metzmacher <[EMAIL PROTECTED]>
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 <[EMAIL PROTECTED]>
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

Reply via email to