The branch, master has been updated via 61facf426691cc896ec61fde1c4cb7d947adb07b (commit) via fd3a77839cf747ce884cbd4e1cc212f22c4836a2 (commit) via d7d7613e31b010bc764616b3ea1d75f0c8c90235 (commit) from cbac8e4fa02cb359efca9eb84b7b5b06008d7f6d (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 61facf426691cc896ec61fde1c4cb7d947adb07b Author: Andrew Tridgell <tri...@samba.org> Date: Fri Sep 11 21:46:58 2009 +1000 s4-kcc: add a very simple KCC A KCC is a 'Knowledge Consistency Checker', a fancy name for a daemon that works out who will replicate with who in a AD domain. This implements an extremely simple KCC task that just wants to replicate with everyone :-) commit fd3a77839cf747ce884cbd4e1cc212f22c4836a2 Author: Andrew Tridgell <tri...@samba.org> Date: Fri Sep 11 21:45:35 2009 +1000 s4-repl: don't update replPropertyMetaData for non-replicated attributes thanks to Metze for spotting this commit d7d7613e31b010bc764616b3ea1d75f0c8c90235 Author: Andrew Tridgell <tri...@samba.org> Date: Fri Sep 11 20:14:11 2009 +1000 s4-idl: added the IDL for the DsReplica* calls ----------------------------------------------------------------------- Summary of changes: librpc/gen_ndr/cli_drsuapi.c | 204 ++++--- librpc/gen_ndr/cli_drsuapi.h | 72 ++- librpc/gen_ndr/drsuapi.h | 77 ++- librpc/gen_ndr/ndr_drsuapi.c | 796 +++++++++++++++++++++- librpc/gen_ndr/ndr_drsuapi.h | 19 +- librpc/idl/drsuapi.idl | 76 ++- source4/dsdb/config.mk | 18 + source4/dsdb/kcc/kcc_periodic.c | 209 ++++++ source4/dsdb/kcc/kcc_service.c | 221 +++++++ source4/dsdb/kcc/kcc_service.h | 85 +++ source4/dsdb/samdb/ldb_modules/repl_meta_data.c | 7 + source4/param/loadparm.c | 2 +- source4/rpc_server/drsuapi/dcesrv_drsuapi.c | 18 +- source4/smbd/server.c | 1 + 14 files changed, 1627 insertions(+), 178 deletions(-) create mode 100644 source4/dsdb/kcc/kcc_periodic.c create mode 100644 source4/dsdb/kcc/kcc_service.c create mode 100644 source4/dsdb/kcc/kcc_service.h Changeset truncated at 500 lines: diff --git a/librpc/gen_ndr/cli_drsuapi.c b/librpc/gen_ndr/cli_drsuapi.c index 14c89aa..43d41ea 100644 --- a/librpc/gen_ndr/cli_drsuapi.c +++ b/librpc/gen_ndr/cli_drsuapi.c @@ -852,25 +852,28 @@ NTSTATUS rpccli_drsuapi_DsReplicaUpdateRefs(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -struct rpccli_DRSUAPI_REPLICA_ADD_state { - struct DRSUAPI_REPLICA_ADD orig; - struct DRSUAPI_REPLICA_ADD tmp; +struct rpccli_drsuapi_DsReplicaAdd_state { + struct drsuapi_DsReplicaAdd orig; + struct drsuapi_DsReplicaAdd tmp; TALLOC_CTX *out_mem_ctx; NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); }; -static void rpccli_DRSUAPI_REPLICA_ADD_done(struct tevent_req *subreq); +static void rpccli_drsuapi_DsReplicaAdd_done(struct tevent_req *subreq); -struct tevent_req *rpccli_DRSUAPI_REPLICA_ADD_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct rpc_pipe_client *cli) +struct tevent_req *rpccli_drsuapi_DsReplicaAdd_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct policy_handle *_bind_handle /* [in] [ref] */, + int32_t _level /* [in] */, + union drsuapi_DsReplicaAddRequest _req /* [in] [switch_is(level)] */) { struct tevent_req *req; - struct rpccli_DRSUAPI_REPLICA_ADD_state *state; + struct rpccli_drsuapi_DsReplicaAdd_state *state; struct tevent_req *subreq; req = tevent_req_create(mem_ctx, &state, - struct rpccli_DRSUAPI_REPLICA_ADD_state); + struct rpccli_drsuapi_DsReplicaAdd_state); if (req == NULL) { return NULL; } @@ -878,6 +881,9 @@ struct tevent_req *rpccli_DRSUAPI_REPLICA_ADD_send(TALLOC_CTX *mem_ctx, state->dispatch_recv = cli->dispatch_recv; /* In parameters */ + state->orig.in.bind_handle = _bind_handle; + state->orig.in.level = _level; + state->orig.in.req = _req; /* Out parameters */ @@ -885,7 +891,7 @@ struct tevent_req *rpccli_DRSUAPI_REPLICA_ADD_send(TALLOC_CTX *mem_ctx, ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(DRSUAPI_REPLICA_ADD, &state->orig); + NDR_PRINT_IN_DEBUG(drsuapi_DsReplicaAdd, &state->orig); } /* make a temporary copy, that we pass to the dispatch function */ @@ -893,21 +899,21 @@ struct tevent_req *rpccli_DRSUAPI_REPLICA_ADD_send(TALLOC_CTX *mem_ctx, subreq = cli->dispatch_send(state, ev, cli, &ndr_table_drsuapi, - NDR_DRSUAPI_REPLICA_ADD, + NDR_DRSUAPI_DSREPLICAADD, &state->tmp); if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } - tevent_req_set_callback(subreq, rpccli_DRSUAPI_REPLICA_ADD_done, req); + tevent_req_set_callback(subreq, rpccli_drsuapi_DsReplicaAdd_done, req); return req; } -static void rpccli_DRSUAPI_REPLICA_ADD_done(struct tevent_req *subreq) +static void rpccli_drsuapi_DsReplicaAdd_done(struct tevent_req *subreq) { struct tevent_req *req = tevent_req_callback_data( subreq, struct tevent_req); - struct rpccli_DRSUAPI_REPLICA_ADD_state *state = tevent_req_data( - req, struct rpccli_DRSUAPI_REPLICA_ADD_state); + struct rpccli_drsuapi_DsReplicaAdd_state *state = tevent_req_data( + req, struct rpccli_drsuapi_DsReplicaAdd_state); NTSTATUS status; TALLOC_CTX *mem_ctx; @@ -933,18 +939,18 @@ static void rpccli_DRSUAPI_REPLICA_ADD_done(struct tevent_req *subreq) ZERO_STRUCT(state->tmp); if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(DRSUAPI_REPLICA_ADD, &state->orig); + NDR_PRINT_OUT_DEBUG(drsuapi_DsReplicaAdd, &state->orig); } tevent_req_done(req); } -NTSTATUS rpccli_DRSUAPI_REPLICA_ADD_recv(struct tevent_req *req, - TALLOC_CTX *mem_ctx, - WERROR *result) +NTSTATUS rpccli_drsuapi_DsReplicaAdd_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) { - struct rpccli_DRSUAPI_REPLICA_ADD_state *state = tevent_req_data( - req, struct rpccli_DRSUAPI_REPLICA_ADD_state); + struct rpccli_drsuapi_DsReplicaAdd_state *state = tevent_req_data( + req, struct rpccli_drsuapi_DsReplicaAdd_state); NTSTATUS status; if (tevent_req_is_nterror(req, &status)) { @@ -962,23 +968,29 @@ NTSTATUS rpccli_DRSUAPI_REPLICA_ADD_recv(struct tevent_req *req, return NT_STATUS_OK; } -NTSTATUS rpccli_DRSUAPI_REPLICA_ADD(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +NTSTATUS rpccli_drsuapi_DsReplicaAdd(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct policy_handle *bind_handle /* [in] [ref] */, + int32_t level /* [in] */, + union drsuapi_DsReplicaAddRequest req /* [in] [switch_is(level)] */, + WERROR *werror) { - struct DRSUAPI_REPLICA_ADD r; + struct drsuapi_DsReplicaAdd r; NTSTATUS status; /* In parameters */ + r.in.bind_handle = bind_handle; + r.in.level = level; + r.in.req = req; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(DRSUAPI_REPLICA_ADD, &r); + NDR_PRINT_IN_DEBUG(drsuapi_DsReplicaAdd, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_drsuapi, - NDR_DRSUAPI_REPLICA_ADD, + NDR_DRSUAPI_DSREPLICAADD, &r); if (!NT_STATUS_IS_OK(status)) { @@ -986,7 +998,7 @@ NTSTATUS rpccli_DRSUAPI_REPLICA_ADD(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(DRSUAPI_REPLICA_ADD, &r); + NDR_PRINT_OUT_DEBUG(drsuapi_DsReplicaAdd, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1003,25 +1015,28 @@ NTSTATUS rpccli_DRSUAPI_REPLICA_ADD(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -struct rpccli_DRSUAPI_REPLICA_DEL_state { - struct DRSUAPI_REPLICA_DEL orig; - struct DRSUAPI_REPLICA_DEL tmp; +struct rpccli_drsuapi_DsReplicaDel_state { + struct drsuapi_DsReplicaDel orig; + struct drsuapi_DsReplicaDel tmp; TALLOC_CTX *out_mem_ctx; NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); }; -static void rpccli_DRSUAPI_REPLICA_DEL_done(struct tevent_req *subreq); +static void rpccli_drsuapi_DsReplicaDel_done(struct tevent_req *subreq); -struct tevent_req *rpccli_DRSUAPI_REPLICA_DEL_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct rpc_pipe_client *cli) +struct tevent_req *rpccli_drsuapi_DsReplicaDel_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct policy_handle *_bind_handle /* [in] [ref] */, + int32_t _level /* [in] */, + union drsuapi_DsReplicaDelRequest _req /* [in] [switch_is(level)] */) { struct tevent_req *req; - struct rpccli_DRSUAPI_REPLICA_DEL_state *state; + struct rpccli_drsuapi_DsReplicaDel_state *state; struct tevent_req *subreq; req = tevent_req_create(mem_ctx, &state, - struct rpccli_DRSUAPI_REPLICA_DEL_state); + struct rpccli_drsuapi_DsReplicaDel_state); if (req == NULL) { return NULL; } @@ -1029,6 +1044,9 @@ struct tevent_req *rpccli_DRSUAPI_REPLICA_DEL_send(TALLOC_CTX *mem_ctx, state->dispatch_recv = cli->dispatch_recv; /* In parameters */ + state->orig.in.bind_handle = _bind_handle; + state->orig.in.level = _level; + state->orig.in.req = _req; /* Out parameters */ @@ -1036,7 +1054,7 @@ struct tevent_req *rpccli_DRSUAPI_REPLICA_DEL_send(TALLOC_CTX *mem_ctx, ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(DRSUAPI_REPLICA_DEL, &state->orig); + NDR_PRINT_IN_DEBUG(drsuapi_DsReplicaDel, &state->orig); } /* make a temporary copy, that we pass to the dispatch function */ @@ -1044,21 +1062,21 @@ struct tevent_req *rpccli_DRSUAPI_REPLICA_DEL_send(TALLOC_CTX *mem_ctx, subreq = cli->dispatch_send(state, ev, cli, &ndr_table_drsuapi, - NDR_DRSUAPI_REPLICA_DEL, + NDR_DRSUAPI_DSREPLICADEL, &state->tmp); if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } - tevent_req_set_callback(subreq, rpccli_DRSUAPI_REPLICA_DEL_done, req); + tevent_req_set_callback(subreq, rpccli_drsuapi_DsReplicaDel_done, req); return req; } -static void rpccli_DRSUAPI_REPLICA_DEL_done(struct tevent_req *subreq) +static void rpccli_drsuapi_DsReplicaDel_done(struct tevent_req *subreq) { struct tevent_req *req = tevent_req_callback_data( subreq, struct tevent_req); - struct rpccli_DRSUAPI_REPLICA_DEL_state *state = tevent_req_data( - req, struct rpccli_DRSUAPI_REPLICA_DEL_state); + struct rpccli_drsuapi_DsReplicaDel_state *state = tevent_req_data( + req, struct rpccli_drsuapi_DsReplicaDel_state); NTSTATUS status; TALLOC_CTX *mem_ctx; @@ -1084,18 +1102,18 @@ static void rpccli_DRSUAPI_REPLICA_DEL_done(struct tevent_req *subreq) ZERO_STRUCT(state->tmp); if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(DRSUAPI_REPLICA_DEL, &state->orig); + NDR_PRINT_OUT_DEBUG(drsuapi_DsReplicaDel, &state->orig); } tevent_req_done(req); } -NTSTATUS rpccli_DRSUAPI_REPLICA_DEL_recv(struct tevent_req *req, - TALLOC_CTX *mem_ctx, - WERROR *result) +NTSTATUS rpccli_drsuapi_DsReplicaDel_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) { - struct rpccli_DRSUAPI_REPLICA_DEL_state *state = tevent_req_data( - req, struct rpccli_DRSUAPI_REPLICA_DEL_state); + struct rpccli_drsuapi_DsReplicaDel_state *state = tevent_req_data( + req, struct rpccli_drsuapi_DsReplicaDel_state); NTSTATUS status; if (tevent_req_is_nterror(req, &status)) { @@ -1113,23 +1131,29 @@ NTSTATUS rpccli_DRSUAPI_REPLICA_DEL_recv(struct tevent_req *req, return NT_STATUS_OK; } -NTSTATUS rpccli_DRSUAPI_REPLICA_DEL(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +NTSTATUS rpccli_drsuapi_DsReplicaDel(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct policy_handle *bind_handle /* [in] [ref] */, + int32_t level /* [in] */, + union drsuapi_DsReplicaDelRequest req /* [in] [switch_is(level)] */, + WERROR *werror) { - struct DRSUAPI_REPLICA_DEL r; + struct drsuapi_DsReplicaDel r; NTSTATUS status; /* In parameters */ + r.in.bind_handle = bind_handle; + r.in.level = level; + r.in.req = req; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(DRSUAPI_REPLICA_DEL, &r); + NDR_PRINT_IN_DEBUG(drsuapi_DsReplicaDel, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_drsuapi, - NDR_DRSUAPI_REPLICA_DEL, + NDR_DRSUAPI_DSREPLICADEL, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1137,7 +1161,7 @@ NTSTATUS rpccli_DRSUAPI_REPLICA_DEL(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(DRSUAPI_REPLICA_DEL, &r); + NDR_PRINT_OUT_DEBUG(drsuapi_DsReplicaDel, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1154,25 +1178,28 @@ NTSTATUS rpccli_DRSUAPI_REPLICA_DEL(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -struct rpccli_DRSUAPI_REPLICA_MODIFY_state { - struct DRSUAPI_REPLICA_MODIFY orig; - struct DRSUAPI_REPLICA_MODIFY tmp; +struct rpccli_drsuapi_DsReplicaMod_state { + struct drsuapi_DsReplicaMod orig; + struct drsuapi_DsReplicaMod tmp; TALLOC_CTX *out_mem_ctx; NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); }; -static void rpccli_DRSUAPI_REPLICA_MODIFY_done(struct tevent_req *subreq); +static void rpccli_drsuapi_DsReplicaMod_done(struct tevent_req *subreq); -struct tevent_req *rpccli_DRSUAPI_REPLICA_MODIFY_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct rpc_pipe_client *cli) +struct tevent_req *rpccli_drsuapi_DsReplicaMod_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct policy_handle *_bind_handle /* [in] [ref] */, + int32_t _level /* [in] */, + union drsuapi_DsReplicaModRequest _req /* [in] [switch_is(level)] */) { struct tevent_req *req; - struct rpccli_DRSUAPI_REPLICA_MODIFY_state *state; + struct rpccli_drsuapi_DsReplicaMod_state *state; struct tevent_req *subreq; req = tevent_req_create(mem_ctx, &state, - struct rpccli_DRSUAPI_REPLICA_MODIFY_state); + struct rpccli_drsuapi_DsReplicaMod_state); if (req == NULL) { return NULL; } @@ -1180,6 +1207,9 @@ struct tevent_req *rpccli_DRSUAPI_REPLICA_MODIFY_send(TALLOC_CTX *mem_ctx, state->dispatch_recv = cli->dispatch_recv; /* In parameters */ + state->orig.in.bind_handle = _bind_handle; + state->orig.in.level = _level; + state->orig.in.req = _req; /* Out parameters */ @@ -1187,7 +1217,7 @@ struct tevent_req *rpccli_DRSUAPI_REPLICA_MODIFY_send(TALLOC_CTX *mem_ctx, ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(DRSUAPI_REPLICA_MODIFY, &state->orig); + NDR_PRINT_IN_DEBUG(drsuapi_DsReplicaMod, &state->orig); } /* make a temporary copy, that we pass to the dispatch function */ @@ -1195,21 +1225,21 @@ struct tevent_req *rpccli_DRSUAPI_REPLICA_MODIFY_send(TALLOC_CTX *mem_ctx, subreq = cli->dispatch_send(state, ev, cli, &ndr_table_drsuapi, - NDR_DRSUAPI_REPLICA_MODIFY, + NDR_DRSUAPI_DSREPLICAMOD, &state->tmp); if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } - tevent_req_set_callback(subreq, rpccli_DRSUAPI_REPLICA_MODIFY_done, req); + tevent_req_set_callback(subreq, rpccli_drsuapi_DsReplicaMod_done, req); return req; } -static void rpccli_DRSUAPI_REPLICA_MODIFY_done(struct tevent_req *subreq) +static void rpccli_drsuapi_DsReplicaMod_done(struct tevent_req *subreq) { struct tevent_req *req = tevent_req_callback_data( subreq, struct tevent_req); - struct rpccli_DRSUAPI_REPLICA_MODIFY_state *state = tevent_req_data( - req, struct rpccli_DRSUAPI_REPLICA_MODIFY_state); + struct rpccli_drsuapi_DsReplicaMod_state *state = tevent_req_data( + req, struct rpccli_drsuapi_DsReplicaMod_state); NTSTATUS status; TALLOC_CTX *mem_ctx; @@ -1235,18 +1265,18 @@ static void rpccli_DRSUAPI_REPLICA_MODIFY_done(struct tevent_req *subreq) ZERO_STRUCT(state->tmp); if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(DRSUAPI_REPLICA_MODIFY, &state->orig); + NDR_PRINT_OUT_DEBUG(drsuapi_DsReplicaMod, &state->orig); } tevent_req_done(req); } -NTSTATUS rpccli_DRSUAPI_REPLICA_MODIFY_recv(struct tevent_req *req, - TALLOC_CTX *mem_ctx, - WERROR *result) +NTSTATUS rpccli_drsuapi_DsReplicaMod_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) { - struct rpccli_DRSUAPI_REPLICA_MODIFY_state *state = tevent_req_data( - req, struct rpccli_DRSUAPI_REPLICA_MODIFY_state); + struct rpccli_drsuapi_DsReplicaMod_state *state = tevent_req_data( + req, struct rpccli_drsuapi_DsReplicaMod_state); NTSTATUS status; if (tevent_req_is_nterror(req, &status)) { @@ -1264,23 +1294,29 @@ NTSTATUS rpccli_DRSUAPI_REPLICA_MODIFY_recv(struct tevent_req *req, return NT_STATUS_OK; } -NTSTATUS rpccli_DRSUAPI_REPLICA_MODIFY(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +NTSTATUS rpccli_drsuapi_DsReplicaMod(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct policy_handle *bind_handle /* [in] [ref] */, + int32_t level /* [in] */, + union drsuapi_DsReplicaModRequest req /* [in] [switch_is(level)] */, + WERROR *werror) { - struct DRSUAPI_REPLICA_MODIFY r; + struct drsuapi_DsReplicaMod r; NTSTATUS status; /* In parameters */ + r.in.bind_handle = bind_handle; + r.in.level = level; + r.in.req = req; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(DRSUAPI_REPLICA_MODIFY, &r); + NDR_PRINT_IN_DEBUG(drsuapi_DsReplicaMod, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_drsuapi, - NDR_DRSUAPI_REPLICA_MODIFY, + NDR_DRSUAPI_DSREPLICAMOD, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1288,7 +1324,7 @@ NTSTATUS rpccli_DRSUAPI_REPLICA_MODIFY(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(DRSUAPI_REPLICA_MODIFY, &r); + NDR_PRINT_OUT_DEBUG(drsuapi_DsReplicaMod, &r); } if (NT_STATUS_IS_ERR(status)) { diff --git a/librpc/gen_ndr/cli_drsuapi.h b/librpc/gen_ndr/cli_drsuapi.h index 4475281..0549bdf 100644 --- a/librpc/gen_ndr/cli_drsuapi.h +++ b/librpc/gen_ndr/cli_drsuapi.h @@ -76,33 +76,51 @@ NTSTATUS rpccli_drsuapi_DsReplicaUpdateRefs(struct rpc_pipe_client *cli, int32_t level /* [in] */, union drsuapi_DsReplicaUpdateRefsRequest req /* [in] [switch_is(level)] */, WERROR *werror); -struct tevent_req *rpccli_DRSUAPI_REPLICA_ADD_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct rpc_pipe_client *cli); -NTSTATUS rpccli_DRSUAPI_REPLICA_ADD_recv(struct tevent_req *req, - TALLOC_CTX *mem_ctx, - WERROR *result); -NTSTATUS rpccli_DRSUAPI_REPLICA_ADD(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror); -struct tevent_req *rpccli_DRSUAPI_REPLICA_DEL_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct rpc_pipe_client *cli); -NTSTATUS rpccli_DRSUAPI_REPLICA_DEL_recv(struct tevent_req *req, - TALLOC_CTX *mem_ctx, - WERROR *result); -NTSTATUS rpccli_DRSUAPI_REPLICA_DEL(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror); -struct tevent_req *rpccli_DRSUAPI_REPLICA_MODIFY_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct rpc_pipe_client *cli); -NTSTATUS rpccli_DRSUAPI_REPLICA_MODIFY_recv(struct tevent_req *req, - TALLOC_CTX *mem_ctx, - WERROR *result); -NTSTATUS rpccli_DRSUAPI_REPLICA_MODIFY(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, -- Samba Shared Repository