1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-04 17:47:26 +03:00

Use rpccli_netr_DatabaseSync2() in rpcclient.

Guenther
This commit is contained in:
Günther Deschner 2008-02-15 14:11:20 +01:00
parent 2add879019
commit 042173b00e

View File

@ -554,37 +554,66 @@ static void display_sam_sync(struct netr_DELTA_ENUM_ARRAY *r)
/* Perform sam synchronisation */
static NTSTATUS cmd_netlogon_sam_sync(struct rpc_pipe_client *cli,
static NTSTATUS cmd_netlogon_sam_sync(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx, int argc,
const char **argv)
{
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
uint32 database_id = 0, num_deltas;
SAM_DELTA_HDR *hdr_deltas;
SAM_DELTA_CTR *deltas;
const char *logon_server = cli->cli->desthost;
const char *computername = global_myname();
struct netr_Authenticator credential;
struct netr_Authenticator return_authenticator;
enum netr_SamDatabaseID database_id = SAM_DATABASE_DOMAIN;
uint16_t restart_state = 0;
uint32_t sync_context = 0;
if (argc > 2) {
fprintf(stderr, "Usage: %s [database_id]\n", argv[0]);
return NT_STATUS_OK;
}
if (argc == 2)
database_id = atoi(argv[1]);
if (argc == 2) {
database_id = atoi(argv[1]);
}
/* Synchronise sam database */
/* Synchronise sam database */
result = rpccli_netlogon_sam_sync(cli, mem_ctx, database_id,
0, &num_deltas, &hdr_deltas, &deltas);
do {
struct netr_DELTA_ENUM_ARRAY *delta_enum_array = NULL;
if (!NT_STATUS_IS_OK(result))
goto done;
netlogon_creds_client_step(cli->dc, &credential);
/* Display results */
result = rpccli_netr_DatabaseSync2(cli, mem_ctx,
logon_server,
computername,
&credential,
&return_authenticator,
database_id,
restart_state,
&sync_context,
&delta_enum_array,
0xffff);
/* display_sam_sync(num_deltas, hdr_deltas, deltas); */
/* Check returned credentials. */
if (!netlogon_creds_client_check(cli->dc,
&return_authenticator.cred)) {
DEBUG(0,("credentials chain check failed\n"));
return NT_STATUS_ACCESS_DENIED;
}
done:
return result;
if (NT_STATUS_IS_ERR(result)) {
break;
}
/* Display results */
display_sam_sync(delta_enum_array);
TALLOC_FREE(delta_enum_array);
} while (NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES));
return result;
}
/* Perform sam delta synchronisation */