WERROR libnetapi_open_pipe(struct libnetapi_ctx *ctx, const char *server_name, const struct ndr_syntax_id *interface, struct rpc_pipe_client **presult) { struct rpc_pipe_client *result = NULL; NTSTATUS status; WERROR werr; struct client_ipc_connection *ipc = NULL; if (!presult) { return WERR_INVALID_PARAM; } werr = libnetapi_open_ipc_connection(ctx, server_name, &ipc); if (!W_ERROR_IS_OK(werr)) { return werr; } status = pipe_cm_open(ctx, ipc, interface, &result); if (!NT_STATUS_IS_OK(status)) { libnetapi_set_error_string(ctx, "failed to open PIPE %s: %s", get_pipe_name_from_syntax(talloc_tos(), interface), get_friendly_nt_error_msg(status)); return WERR_DEST_NOT_FOUND; } *presult = result; return WERR_OK; }
WERROR libnetapi_open_pipe(struct libnetapi_ctx *ctx, const char *server_name, const struct ndr_interface_table *table, struct rpc_pipe_client **presult) { struct rpc_pipe_client *result = NULL; NTSTATUS status; WERROR werr; struct client_ipc_connection *ipc = NULL; if (!presult) { return WERR_INVALID_PARAMETER; } werr = libnetapi_open_ipc_connection(ctx, server_name, &ipc); if (!W_ERROR_IS_OK(werr)) { return werr; } status = pipe_cm_open(ctx, ipc, table, &result); if (!NT_STATUS_IS_OK(status)) { libnetapi_set_error_string(ctx, "failed to open PIPE %s: %s", table->name, get_friendly_nt_error_msg(status)); return WERR_NERR_DESTNOTFOUND; } *presult = result; return WERR_OK; }