static NTSTATUS pipe_cm_find(struct client_ipc_connection *ipc, const struct ndr_syntax_id *interface, struct rpc_pipe_client **presult) { struct client_pipe_connection *p; for (p = ipc->pipe_connections; p; p = p->next) { const char *ipc_remote_name; if (!rpc_pipe_np_smb_conn(p->pipe)) { return NT_STATUS_PIPE_EMPTY; } ipc_remote_name = cli_state_remote_name(ipc->cli); if (strequal(ipc_remote_name, p->pipe->desthost) && ndr_syntax_id_equal(&p->pipe->abstract_syntax, interface)) { *presult = p->pipe; return NT_STATUS_OK; } } return NT_STATUS_PIPE_NOT_AVAILABLE; }
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; struct policy_handle pol; d_printf("testme\n"); 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; } status = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, False, KEY_QUERY_VALUE, &pol); if (!NT_STATUS_IS_OK(status)) goto done; status = rpccli_lsa_Close(lsa_pipe, mem_ctx, &pol); if (!NT_STATUS_IS_OK(status)) goto done; done: TALLOC_FREE(lsa_pipe); TALLOC_FREE(samr_pipe); return status; }
static NTSTATUS pipe_cm_find(struct cli_state *cli, const struct ndr_syntax_id *interface, struct rpc_pipe_client **presult) { struct client_pipe_connection *p; for (p = pipe_connections; p; p = p->next) { if (!rpc_pipe_np_smb_conn(p->pipe)) { return NT_STATUS_PIPE_EMPTY; } if (strequal(cli->desthost, p->pipe->desthost) && ndr_syntax_id_equal(&p->pipe->abstract_syntax, interface)) { *presult = p->pipe; return NT_STATUS_OK; } } return NT_STATUS_PIPE_NOT_AVAILABLE; }