s3-rpc_client: Move client pipe functions to own header.
[samba.git] / source3 / rpcclient / cmd_test.c
index dd956604cc579c960aff50df8368f1c74ec94548..0ad1dfd3288caa57c9e11d3cf3af0b49d406c4b3 100644 (file)
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "rpc_client/cli_pipe.h"
+#include "../librpc/gen_ndr/ndr_lsa_c.h"
+#include "rpc_client/cli_lsarpc.h"
+#include "../librpc/gen_ndr/ndr_samr.h"
+#include "../librpc/gen_ndr/winreg.h"
 
 static NTSTATUS cmd_testme(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                           int argc, const char **argv)
 {
        struct rpc_pipe_client *lsa_pipe = NULL, *samr_pipe = NULL;
-       NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
-       POLICY_HND pol;
+       NTSTATUS status = NT_STATUS_UNSUCCESSFUL, result;
+       struct policy_handle pol;
+       struct dcerpc_binding_handle *b;
 
        d_printf("testme\n");
 
-       lsa_pipe = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
-                                           PI_LSARPC, &status);
-       if (lsa_pipe == NULL) goto done;
+       status = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
+                                         &ndr_table_lsarpc.syntax_id,
+                                         &lsa_pipe);
+       if (!NT_STATUS_IS_OK(status)) {
+               goto done;
+       }
+
+       status = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
+                                         &ndr_table_samr.syntax_id,
+                                         &samr_pipe);
+       if (!NT_STATUS_IS_OK(status)) {
+               goto done;
+       }
 
-       samr_pipe = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
-                                            PI_SAMR, &status);
-       if (samr_pipe == NULL) goto done;
+       b = lsa_pipe->binding_handle;
 
        status = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, False,
-                                       SEC_RIGHTS_QUERY_VALUE, &pol);
+                                       KEY_QUERY_VALUE, &pol);
 
        if (!NT_STATUS_IS_OK(status))
                goto done;
 
-       status = rpccli_lsa_Close(lsa_pipe, mem_ctx, &pol);
+       status = dcerpc_lsa_Close(b, mem_ctx, &pol, &result);
 
        if (!NT_STATUS_IS_OK(status))
                goto done;
+       if (!NT_STATUS_IS_OK(result)) {
+               status = result;
+               goto done;
+       }
 
  done:
        TALLOC_FREE(lsa_pipe);
@@ -63,7 +81,7 @@ struct cmd_set test_commands[] = {
        { "TESTING" },
 
        { "testme", RPC_RTYPE_NTSTATUS, cmd_testme, NULL,
-         -1, NULL, "Sample test", "testme" },
+         NULL, NULL, "Sample test", "testme" },
 
        { NULL }
 };