Line data Source code
1 : /* 2 : * Unix SMB/CIFS implementation. 3 : * RPC client transport over a socket 4 : * Copyright (C) Volker Lendecke 2009 5 : * 6 : * This program is free software; you can redistribute it and/or modify 7 : * it under the terms of the GNU General Public License as published by 8 : * the Free Software Foundation; either version 3 of the License, or 9 : * (at your option) any later version. 10 : * 11 : * This program is distributed in the hope that it will be useful, 12 : * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 : * GNU General Public License for more details. 15 : * 16 : * You should have received a copy of the GNU General Public License 17 : * along with this program; if not, see <http://www.gnu.org/licenses/>. 18 : */ 19 : 20 : #include "includes.h" 21 : #include "../lib/tsocket/tsocket.h" 22 : #include "rpc_client/rpc_transport.h" 23 : 24 : #undef DBGC_CLASS 25 : #define DBGC_CLASS DBGC_RPC_CLI 26 : 27 236 : NTSTATUS rpc_transport_sock_init(TALLOC_CTX *mem_ctx, int fd, 28 : struct rpc_cli_transport **presult) 29 : { 30 0 : struct rpc_cli_transport *result; 31 0 : struct tstream_context *stream; 32 0 : int ret; 33 0 : NTSTATUS status; 34 : 35 236 : set_blocking(fd, false); 36 : 37 236 : ret = tstream_bsd_existing_socket(mem_ctx, fd, &stream); 38 236 : if (ret != 0) { 39 0 : status = map_nt_error_from_unix(errno); 40 0 : return status; 41 : } 42 : 43 236 : status = rpc_transport_tstream_init(mem_ctx, 44 : &stream, 45 : &result); 46 236 : if (!NT_STATUS_IS_OK(status)) { 47 0 : TALLOC_FREE(stream); 48 0 : return status; 49 : } 50 : 51 236 : *presult = result; 52 236 : return NT_STATUS_OK; 53 : }