s3-rpc_client: add dcerpc_transport_t to cli_rpc_pipe_open_spnego_ntlmssp and cli_rpc...
authorGünther Deschner <gd@samba.org>
Thu, 10 Sep 2009 20:23:21 +0000 (22:23 +0200)
committerKarolin Seeger <kseeger@samba.org>
Thu, 8 Oct 2009 07:39:30 +0000 (09:39 +0200)
Guenther
(cherry picked from commit 032e01e7c13724d057b5744d7d79613449c2f24f)

source3/include/proto.h
source3/libsmb/passchange.c
source3/rpc_client/cli_pipe.c
source3/rpcclient/rpcclient.c
source3/utils/net.h
source3/utils/net_rpc.c
source3/utils/net_rpc_samsync.c
source3/winbindd/winbindd_cm.c

index 910b49ec9ecf223c976e6785454b58b76a43765f..96c1d93016050ee59f8e635e94837f37caa63d13 100644 (file)
@@ -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,
index f3cb9d69d6ea869dff25890d5b2f1af7cab4ad80..d73b34ccbb1424514aa8599489be18b740696f29 100644 (file)
@@ -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,
index 75ce7cb32bc7ea6b964b268d4829c842abb0f2c0..5b8a2d42646923f468e945c03b377aaba5f3ae58 100644 (file)
@@ -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;
index 82de603444263f2ff4c2d89bbe2bd398becf0501..ae2a820a3409fb08a1e95c8bd4dfb12a7e64b5c7 100644 (file)
@@ -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),
index d88f962d41e6d8b1c5e7d6d325695c149e455cd4..86e8b1ca15b89e675e3e3dcba383896434b00259 100644 (file)
@@ -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
index 3a1aeb021df899c5f1cd5f86e12049c93243ab6a..168659a4dbf05dad4735197c8c84768c13368142 100644 (file)
@@ -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);
index 309be171ccf71fb21aae7599c78a96904bc38b89..0c7f9a829ad57596fb9e44862243b6240cb92923 100644 (file)
@@ -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");
index 4571f22d34687c8833d45e9342edcdfab7ba6ec6..ac22ed43367616d51665ebfff6239bf7f1b8b241 100644 (file)
@@ -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);