2009-01-22 18:39:29 +01: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 17:26:40 +02:00
# include "../lib/tsocket/tsocket.h"
2011-03-31 00:34:28 +02:00
# include "rpc_client/rpc_transport.h"
2009-01-22 18:39:29 +01:00
# undef DBGC_CLASS
# define DBGC_CLASS DBGC_RPC_CLI
2010-09-06 17:31:27 +02:00
NTSTATUS rpc_transport_sock_init ( TALLOC_CTX * mem_ctx , int fd ,
struct rpc_cli_transport * * presult )
2009-02-25 12:35:48 +01:00
{
2010-09-06 17:31:27 +02:00
struct rpc_cli_transport * result ;
struct tstream_context * stream ;
int ret ;
2009-02-25 12:35:48 +01:00
NTSTATUS status ;
2011-02-23 21:42:25 +01:00
set_blocking ( fd , false ) ;
2010-09-06 17:31:27 +02:00
ret = tstream_bsd_existing_socket ( mem_ctx , fd , & stream ) ;
if ( ret ! = 0 ) {
status = map_nt_error_from_unix ( errno ) ;
2009-02-25 12:35:48 +01:00
return status ;
2009-01-22 18:39:29 +01:00
}
2010-09-06 17:31:27 +02:00
status = rpc_transport_tstream_init ( mem_ctx ,
& stream ,
& result ) ;
if ( ! NT_STATUS_IS_OK ( status ) ) {
TALLOC_FREE ( stream ) ;
2009-02-25 12:44:26 +01:00
return status ;
2009-01-22 18:39:29 +01:00
}
* presult = result ;
return NT_STATUS_OK ;
}