summaryrefslogtreecommitdiff
path: root/source/utils
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2008-11-11 19:00:26 +0100
committerKarolin Seeger <kseeger@samba.org>2008-11-19 09:31:16 +0100
commit5abc248ee7d5c31fb928bf396eea173af6e19e03 (patch)
treeb50426975c2bf34e0f904047853906da152eed7d /source/utils
parentd56ce1176ea895e314688fb15d5cf3cd825536f2 (diff)
downloadsamba-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.c35
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;
}