From 6d17737ab3e82e870d5017d2f2d52a267515ad67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Deschner?= Date: Thu, 10 Sep 2009 22:23:21 +0200 Subject: s3-rpc_client: add dcerpc_transport_t to cli_rpc_pipe_open_spnego_ntlmssp and cli_rpc_pipe_open_ntlmssp. Guenther (cherry picked from commit 032e01e7c13724d057b5744d7d79613449c2f24f) (cherry picked from commit cd8874214dba810e60faca155611dbcf2f1351f7) --- source3/include/proto.h | 2 ++ source3/libsmb/passchange.c | 1 + source3/rpc_client/cli_pipe.c | 10 ++++++++-- source3/rpcclient/rpcclient.c | 2 ++ source3/utils/net.h | 1 + source3/utils/net_rpc.c | 2 ++ source3/utils/net_rpc_samsync.c | 2 +- source3/winbindd/winbindd_cm.c | 3 ++- 8 files changed, 19 insertions(+), 4 deletions(-) (limited to 'source3') diff --git a/source3/include/proto.h b/source3/include/proto.h index 910b49ec9ec..96c1d930160 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -5295,6 +5295,7 @@ NTSTATUS cli_rpc_pipe_open_noauth_transport(struct cli_state *cli, struct rpc_pipe_client **presult); NTSTATUS cli_rpc_pipe_open_ntlmssp(struct cli_state *cli, const struct ndr_syntax_id *interface, + enum dcerpc_transport_t transport, enum pipe_auth_level auth_level, const char *domain, const char *username, @@ -5302,6 +5303,7 @@ NTSTATUS cli_rpc_pipe_open_ntlmssp(struct cli_state *cli, struct rpc_pipe_client **presult); NTSTATUS cli_rpc_pipe_open_spnego_ntlmssp(struct cli_state *cli, const struct ndr_syntax_id *interface, + enum dcerpc_transport_t transport, enum pipe_auth_level auth_level, const char *domain, const char *username, diff --git a/source3/libsmb/passchange.c b/source3/libsmb/passchange.c index f3cb9d69d6e..d73b34ccbb1 100644 --- a/source3/libsmb/passchange.c +++ b/source3/libsmb/passchange.c @@ -176,6 +176,7 @@ NTSTATUS remote_password_change(const char *remote_machine, const char *user_nam if (!pass_must_change) { result = cli_rpc_pipe_open_ntlmssp(cli, &ndr_table_samr.syntax_id, + NCACN_NP, PIPE_AUTH_LEVEL_PRIVACY, domain, user, old_passwd, diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c index 75ce7cb32bc..5b8a2d42646 100644 --- a/source3/rpc_client/cli_pipe.c +++ b/source3/rpc_client/cli_pipe.c @@ -3701,6 +3701,7 @@ NTSTATUS cli_rpc_pipe_open_noauth(struct cli_state *cli, static NTSTATUS cli_rpc_pipe_open_ntlmssp_internal(struct cli_state *cli, const struct ndr_syntax_id *interface, + enum dcerpc_transport_t transport, enum pipe_auth_type auth_type, enum pipe_auth_level auth_level, const char *domain, @@ -3712,7 +3713,7 @@ static NTSTATUS cli_rpc_pipe_open_ntlmssp_internal(struct cli_state *cli, struct cli_pipe_auth_data *auth; NTSTATUS status; - status = cli_rpc_pipe_open(cli, NCACN_NP, interface, &result); + status = cli_rpc_pipe_open(cli, transport, interface, &result); if (!NT_STATUS_IS_OK(status)) { return status; } @@ -3754,6 +3755,7 @@ static NTSTATUS cli_rpc_pipe_open_ntlmssp_internal(struct cli_state *cli, NTSTATUS cli_rpc_pipe_open_ntlmssp(struct cli_state *cli, const struct ndr_syntax_id *interface, + enum dcerpc_transport_t transport, enum pipe_auth_level auth_level, const char *domain, const char *username, @@ -3762,6 +3764,7 @@ NTSTATUS cli_rpc_pipe_open_ntlmssp(struct cli_state *cli, { return cli_rpc_pipe_open_ntlmssp_internal(cli, interface, + transport, PIPE_AUTH_TYPE_NTLMSSP, auth_level, domain, @@ -3777,6 +3780,7 @@ NTSTATUS cli_rpc_pipe_open_ntlmssp(struct cli_state *cli, NTSTATUS cli_rpc_pipe_open_spnego_ntlmssp(struct cli_state *cli, const struct ndr_syntax_id *interface, + enum dcerpc_transport_t transport, enum pipe_auth_level auth_level, const char *domain, const char *username, @@ -3785,6 +3789,7 @@ NTSTATUS cli_rpc_pipe_open_spnego_ntlmssp(struct cli_state *cli, { return cli_rpc_pipe_open_ntlmssp_internal(cli, interface, + transport, PIPE_AUTH_TYPE_SPNEGO_NTLMSSP, auth_level, domain, @@ -3951,7 +3956,8 @@ static NTSTATUS get_schannel_session_key_auth_ntlmssp(struct cli_state *cli, NTSTATUS status; status = cli_rpc_pipe_open_spnego_ntlmssp( - cli, &ndr_table_netlogon.syntax_id, PIPE_AUTH_LEVEL_PRIVACY, + cli, &ndr_table_netlogon.syntax_id, NCACN_NP, + PIPE_AUTH_LEVEL_PRIVACY, domain, username, password, &netlogon_pipe); if (!NT_STATUS_IS_OK(status)) { return status; diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index 82de6034442..ae2a820a340 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -594,6 +594,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, case PIPE_AUTH_TYPE_SPNEGO_NTLMSSP: ntresult = cli_rpc_pipe_open_spnego_ntlmssp( cli, cmd_entry->interface, + NCACN_NP, pipe_default_auth_level, lp_workgroup(), get_cmdline_auth_info_username(auth_info), @@ -603,6 +604,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, case PIPE_AUTH_TYPE_NTLMSSP: ntresult = cli_rpc_pipe_open_ntlmssp( cli, cmd_entry->interface, + NCACN_NP, pipe_default_auth_level, lp_workgroup(), get_cmdline_auth_info_username(auth_info), diff --git a/source3/utils/net.h b/source3/utils/net.h index d88f962d41e..86e8b1ca15b 100644 --- a/source3/utils/net.h +++ b/source3/utils/net.h @@ -157,6 +157,7 @@ enum netdom_domain_t { ND_TYPE_NT4, ND_TYPE_AD }; #define NET_FLAGS_NO_PIPE 0x00000020 /* don't open an RPC pipe */ #define NET_FLAGS_SIGN 0x00000040 /* sign RPC connection */ #define NET_FLAGS_SEAL 0x00000080 /* seal RPC connection */ +#define NET_FLAGS_TCP 0x00000100 /* use ncacn_ip_tcp */ /* net share operation modes */ #define NET_MODE_SHARE_MIGRATE 1 diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c index 3a1aeb021df..168659a4dbf 100644 --- a/source3/utils/net_rpc.c +++ b/source3/utils/net_rpc.c @@ -169,6 +169,8 @@ int run_rpc_command(struct net_context *c, if (conn_flags & NET_FLAGS_SEAL) { nt_status = cli_rpc_pipe_open_ntlmssp( cli, interface, + (conn_flags & NET_FLAGS_TCP) ? + NCACN_IP_TCP : NCACN_NP, PIPE_AUTH_LEVEL_PRIVACY, lp_workgroup(), c->opt_user_name, c->opt_password, &pipe_hnd); diff --git a/source3/utils/net_rpc_samsync.c b/source3/utils/net_rpc_samsync.c index 309be171ccf..0c7f9a829ad 100644 --- a/source3/utils/net_rpc_samsync.c +++ b/source3/utils/net_rpc_samsync.c @@ -499,7 +499,7 @@ int rpc_vampire_keytab(struct net_context *c, int argc, const char **argv) return -1; } else { ret = run_rpc_command(c, cli, &ndr_table_drsuapi.syntax_id, - NET_FLAGS_SEAL, + NET_FLAGS_SEAL | NET_FLAGS_TCP, rpc_vampire_keytab_ds_internals, argc, argv); if (ret != 0 && dc_info.is_mixed_mode) { printf("Fallback to NT4 vampire on Mixed-Mode AD Domain\n"); diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index 4571f22d346..ac22ed43367 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -2045,6 +2045,7 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, authenticated SAMR pipe with sign & seal. */ result = cli_rpc_pipe_open_spnego_ntlmssp(conn->cli, &ndr_table_samr.syntax_id, + NCACN_NP, PIPE_AUTH_LEVEL_PRIVACY, domain_name, machine_account, @@ -2183,7 +2184,7 @@ NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, /* We have an authenticated connection. Use a NTLMSSP SPNEGO * authenticated LSA pipe with sign & seal. */ result = cli_rpc_pipe_open_spnego_ntlmssp - (conn->cli, &ndr_table_lsarpc.syntax_id, + (conn->cli, &ndr_table_lsarpc.syntax_id, NCACN_NP, PIPE_AUTH_LEVEL_PRIVACY, conn->cli->domain, conn->cli->user_name, conn->cli->password, &conn->lsa_pipe); -- cgit v1.2.1