Replace cli_rpc_pipe_close by a talloc destructor on rpc_pipe_struct
[kai/samba.git] / source3 / rpcclient / rpcclient.c
index 7b499918b068b40f5664b06fd64b6f77567441b9..ebd38044b84636e2c2b20118ce01c33138f810f0 100644 (file)
@@ -133,12 +133,10 @@ static void fetch_machine_sid(struct cli_state *cli)
 {
        POLICY_HND pol;
        NTSTATUS result = NT_STATUS_OK;
-       uint32 info_class = 5;
-       const char *domain_name = NULL;
        static bool got_domain_sid;
        TALLOC_CTX *mem_ctx;
-       DOM_SID *dom_sid = NULL;
        struct rpc_pipe_client *lsapipe = NULL;
+       union lsa_PolicyInformation *info = NULL;
 
        if (got_domain_sid) return;
 
@@ -159,17 +157,19 @@ static void fetch_machine_sid(struct cli_state *cli)
                goto error;
        }
 
-       result = rpccli_lsa_query_info_policy(lsapipe, mem_ctx, &pol, info_class, 
-                                          &domain_name, &dom_sid);
+       result = rpccli_lsa_QueryInfoPolicy(lsapipe, mem_ctx,
+                                           &pol,
+                                           LSA_POLICY_INFO_ACCOUNT_DOMAIN,
+                                           &info);
        if (!NT_STATUS_IS_OK(result)) {
                goto error;
        }
 
        got_domain_sid = True;
-       sid_copy( &domain_sid, dom_sid );
+       sid_copy(&domain_sid, info->account_domain.sid);
 
        rpccli_lsa_Close(lsapipe, mem_ctx, &pol);
-       cli_rpc_pipe_close(lsapipe);
+       TALLOC_FREE(lsapipe);
        talloc_destroy(mem_ctx);
 
        return;
@@ -177,7 +177,7 @@ static void fetch_machine_sid(struct cli_state *cli)
  error:
 
        if (lsapipe) {
-               cli_rpc_pipe_close(lsapipe);
+               TALLOC_FREE(lsapipe);
        }
 
        fprintf(stderr, "could not obtain sid for domain %s\n", cli->domain);
@@ -336,7 +336,7 @@ static NTSTATUS cmd_set_ss_level(void)
 
                        if (tmp_set->rpc_pipe->auth.auth_type != pipe_default_auth_type ||
                                        tmp_set->rpc_pipe->auth.auth_level != pipe_default_auth_level) {
-                               cli_rpc_pipe_close(tmp_set->rpc_pipe);
+                               TALLOC_FREE(tmp_set->rpc_pipe);
                                tmp_set->rpc_pipe = NULL;
                        }
                }
@@ -420,7 +420,7 @@ static NTSTATUS cmd_timeout(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                                        continue;
                                }
 
-                               cli_set_timeout(tmp_set->rpc_pipe->cli, timeout);
+                               rpccli_set_timeout(tmp_set->rpc_pipe, timeout);
                        }
                }
        }
@@ -503,6 +503,7 @@ extern struct cmd_set echo_commands[];
 extern struct cmd_set shutdown_commands[];
 extern struct cmd_set test_commands[];
 extern struct cmd_set wkssvc_commands[];
+extern struct cmd_set ntsvcs_commands[];
 
 static struct cmd_set *rpcclient_command_list[] = {
        rpcclient_commands,
@@ -517,6 +518,7 @@ static struct cmd_set *rpcclient_command_list[] = {
        shutdown_commands,
        test_commands,
        wkssvc_commands,
+       ntsvcs_commands,
        NULL
 };
 
@@ -605,7 +607,7 @@ static NTSTATUS do_cmd(struct cli_state *cli,
                }
 
                if (cmd_entry->pipe_idx == PI_NETLOGON) {
-                       uint32 neg_flags = NETLOGON_NEG_SELECT_AUTH2_FLAGS;
+                       uint32_t neg_flags = NETLOGON_NEG_AUTH2_ADS_FLAGS;
                        uint32 sec_channel_type;
                        uchar trust_password[16];