[SCM] Samba Shared Repository - branch master updated

Andrew Tridgell tridge at samba.org
Fri Nov 13 18:11:49 MST 2009


The branch, master has been updated
       via  a3632f2... s4-drs: DsExecuteKCC() implementation
      from  5377d5f... pam_winbind: fix a printf type mismatch warning

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a3632f22ec228f4e74e819305bb4c1c5aeca293c
Author: Erick Nascimento <erick.nogueira.nascimento at gmail.com>
Date:   Wed Nov 11 18:25:13 2009 -0200

    s4-drs: DsExecuteKCC() implementation
    
    I implemented the DsExecuteKCC() handling code on kccsrv_execute_kcc().
    
    Signed-off-by: Andrew Tridgell <tridge at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source4/dsdb/kcc/kcc_periodic.c             |    2 +-
 source4/dsdb/kcc/kcc_service.c              |   20 ++++++++++++++++++++
 source4/rpc_server/drsuapi/dcesrv_drsuapi.c |   11 ++++++++++-
 3 files changed, 31 insertions(+), 2 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/kcc/kcc_periodic.c b/source4/dsdb/kcc/kcc_periodic.c
index 30d4303..097fff4 100644
--- a/source4/dsdb/kcc/kcc_periodic.c
+++ b/source4/dsdb/kcc/kcc_periodic.c
@@ -115,7 +115,7 @@ static NTSTATUS kccsrv_add_repsFrom(struct kccsrv_service *s, TALLOC_CTX *mem_ct
   We just add a repsFrom entry for all DCs we find that have nTDSDSA
   objects, except for ourselves
  */
-static NTSTATUS kccsrv_simple_update(struct kccsrv_service *s, TALLOC_CTX *mem_ctx)
+NTSTATUS kccsrv_simple_update(struct kccsrv_service *s, TALLOC_CTX *mem_ctx)
 {
 	struct ldb_result *res;
 	int ret, i;
diff --git a/source4/dsdb/kcc/kcc_service.c b/source4/dsdb/kcc/kcc_service.c
index b088d2e..4196eb8 100644
--- a/source4/dsdb/kcc/kcc_service.c
+++ b/source4/dsdb/kcc/kcc_service.c
@@ -136,6 +136,25 @@ static WERROR kccsrv_load_partitions(struct kccsrv_service *s)
 	return WERR_OK;
 }
 
+static NTSTATUS kccsrv_execute_kcc(struct irpc_message *msg,
+					struct drsuapi_DsExecuteKCC *r)
+{
+	TALLOC_CTX *mem_ctx;
+	NTSTATUS status;
+	struct kccsrv_service *service = talloc_get_type(msg->private_data, struct kccsrv_service);
+
+	mem_ctx = talloc_new(service);
+	status = kccsrv_simple_update(service, mem_ctx);
+
+	if (!NT_STATUS_IS_OK(status)) {
+		DEBUG(0,("kccsrv_simple_update failed - %s\n", nt_errstr(status)));
+		talloc_free(mem_ctx);
+		return status;
+	}
+
+	talloc_free(mem_ctx);
+	return NT_STATUS_OK;
+}
 
 /*
   startup the kcc service task
@@ -208,6 +227,7 @@ static void kccsrv_task_init(struct task_server *task)
 	}
 
 	irpc_add_name(task->msg_ctx, "kccsrv");
+	IRPC_REGISTER(task->msg_ctx, drsuapi, DRSUAPI_DSEXECUTEKCC, kccsrv_execute_kcc, service);
 }
 
 /*
diff --git a/source4/rpc_server/drsuapi/dcesrv_drsuapi.c b/source4/rpc_server/drsuapi/dcesrv_drsuapi.c
index b5b77a0..3d92880 100644
--- a/source4/rpc_server/drsuapi/dcesrv_drsuapi.c
+++ b/source4/rpc_server/drsuapi/dcesrv_drsuapi.c
@@ -796,7 +796,16 @@ static WERROR dcesrv_drsuapi_DsGetDomainControllerInfo(struct dcesrv_call_state
 static WERROR dcesrv_drsuapi_DsExecuteKCC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
 				  struct drsuapi_DsExecuteKCC *r)
 {
-	DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
+	WERROR status;
+	status = drs_security_level_check(dce_call, "DsExecuteKCC");
+
+	if (!W_ERROR_IS_OK(status)) {
+		return status;
+	}
+
+	dcesrv_irpc_forward_rpc_call(dce_call, mem_ctx, r, NDR_DRSUAPI_DSEXECUTEKCC,
+								&ndr_table_drsuapi, "kccsrv", "DsExecuteKCC");
+	return WERR_OK;
 }
 
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list