diff options
author | Günther Deschner <gd@samba.org> | 2008-11-11 19:00:26 +0100 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2008-11-19 09:31:16 +0100 |
commit | 5abc248ee7d5c31fb928bf396eea173af6e19e03 (patch) | |
tree | b50426975c2bf34e0f904047853906da152eed7d /source/utils | |
parent | d56ce1176ea895e314688fb15d5cf3cd825536f2 (diff) | |
download | samba-5abc248ee7d5c31fb928bf396eea173af6e19e03.tar.gz |
s3-net: use net_scan_dc in net rpc vampire keytab.
Guenther
(cherry picked from commit 2e6387771660a6b0e253decc269952bc5b80c477)
Diffstat (limited to 'source/utils')
-rw-r--r-- | source/utils/net_rpc_samsync.c | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/source/utils/net_rpc_samsync.c b/source/utils/net_rpc_samsync.c index 9fab9491304..22c6d254024 100644 --- a/source/utils/net_rpc_samsync.c +++ b/source/utils/net_rpc_samsync.c @@ -457,6 +457,9 @@ static NTSTATUS rpc_vampire_keytab_ds_internals(struct net_context *c, int rpc_vampire_keytab(struct net_context *c, int argc, const char **argv) { int ret = 0; + NTSTATUS status; + struct cli_state *cli = NULL; + struct net_dc_info dc_info; if (c->display_usage || (argc < 1)) { d_printf("Usage:\n" @@ -465,14 +468,30 @@ int rpc_vampire_keytab(struct net_context *c, int argc, const char **argv) return 0; } - ret = run_rpc_command(c, NULL, &ndr_table_drsuapi.syntax_id, - NET_FLAGS_SEAL, - rpc_vampire_keytab_ds_internals, argc, argv); - if (ret == 0) { - return 0; + status = net_make_ipc_connection(c, 0, &cli); + if (!NT_STATUS_IS_OK(status)) { + return -1; } - return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id, 0, - rpc_vampire_keytab_internals, - argc, argv); + status = net_scan_dc(c, cli, &dc_info); + if (!NT_STATUS_IS_OK(status)) { + return -1; + } + + if (!dc_info.is_ad) { + printf("DC is not running Active Directory\n"); + return -1; + } + + if (dc_info.is_mixed_mode) { + ret = run_rpc_command(c, cli, &ndr_table_netlogon.syntax_id, + 0, + rpc_vampire_keytab_internals, argc, argv); + } else { + ret = run_rpc_command(c, cli, &ndr_table_drsuapi.syntax_id, + NET_FLAGS_SEAL, + rpc_vampire_keytab_ds_internals, argc, argv); + } + + return ret; } |