2009-01-22 20:39:29 +03:00
/*
* Unix SMB / CIFS implementation .
* RPC client transport over a socket
* Copyright ( C ) Volker Lendecke 2009
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , see < http : //www.gnu.org/licenses/>.
*/
# include "includes.h"
2011-04-28 19:26:40 +04:00
# include "../lib/tsocket/tsocket.h"
2011-03-31 02:34:28 +04:00
# include "rpc_client/rpc_transport.h"
2009-01-22 20:39:29 +03:00
# undef DBGC_CLASS
# define DBGC_CLASS DBGC_RPC_CLI
2010-09-06 19:31:27 +04:00
NTSTATUS rpc_transport_sock_init ( TALLOC_CTX * mem_ctx , int fd ,
struct rpc_cli_transport * * presult )
2009-02-25 14:35:48 +03:00
{
2010-09-06 19:31:27 +04:00
struct rpc_cli_transport * result ;
struct tstream_context * stream ;
int ret ;
2009-02-25 14:35:48 +03:00
NTSTATUS status ;
2011-02-23 23:42:25 +03:00
set_blocking ( fd , false ) ;
2010-09-06 19:31:27 +04:00
ret = tstream_bsd_existing_socket ( mem_ctx , fd , & stream ) ;
if ( ret ! = 0 ) {
status = map_nt_error_from_unix ( errno ) ;
2009-02-25 14:35:48 +03:00
return status ;
2009-01-22 20:39:29 +03:00
}
2010-09-06 19:31:27 +04:00
status = rpc_transport_tstream_init ( mem_ctx ,
& stream ,
& result ) ;
if ( ! NT_STATUS_IS_OK ( status ) ) {
TALLOC_FREE ( stream ) ;
2009-02-25 14:44:26 +03:00
return status ;
2009-01-22 20:39:29 +03:00
}
* presult = result ;
return NT_STATUS_OK ;
}