2010-07-17 23:22:26 +04:00
/*
2010-06-18 19:00:38 +04:00
* RPC Server helper headers
2010-07-17 23:22:26 +04:00
* Almost completely rewritten by ( C ) Jeremy Allison 2005 - 2010
* Copyright ( C ) Simo Sorce < idra @ samba . org > - 2010
*
* 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/>.
*/
# ifndef _RPC_SERVER_H_
# define _RPC_SERVER_H_
2019-03-15 16:31:57 +03:00
# include "librpc/rpc/rpc_common.h" /* For enum dcerpc_transport_t */
2011-05-02 15:19:51 +04:00
struct pipes_struct ;
2019-02-18 20:25:48 +03:00
struct auth_session_info ;
2011-05-02 15:19:51 +04:00
2019-02-18 22:28:05 +03:00
typedef void ( * dcerpc_ncacn_termination_fn ) ( struct pipes_struct * , void * ) ;
2011-03-14 14:29:49 +03:00
2019-02-18 20:25:48 +03:00
struct dcerpc_ncacn_conn {
enum dcerpc_transport_t transport ;
2019-02-18 21:24:54 +03:00
const char * name ;
2019-02-18 20:25:48 +03:00
int sock ;
struct pipes_struct * p ;
2019-02-18 20:48:57 +03:00
dcerpc_ncacn_termination_fn termination_fn ;
void * termination_data ;
2019-02-18 20:25:48 +03:00
struct tevent_context * ev_ctx ;
struct messaging_context * msg_ctx ;
struct tstream_context * tstream ;
struct tevent_queue * send_queue ;
struct tsocket_address * remote_client_addr ;
char * remote_client_name ;
struct tsocket_address * local_server_addr ;
char * local_server_name ;
struct auth_session_info * session_info ;
struct iovec * iov ;
size_t count ;
} ;
2019-02-18 21:31:04 +03:00
NTSTATUS dcerpc_ncacn_conn_init ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev_ctx ,
struct messaging_context * msg_ctx ,
enum dcerpc_transport_t transport ,
const char * name ,
dcerpc_ncacn_termination_fn term_fn ,
void * termination_data ,
struct dcerpc_ncacn_conn * * out ) ;
2013-09-25 18:33:00 +04:00
int make_server_pipes_struct ( TALLOC_CTX * mem_ctx ,
struct messaging_context * msg_ctx ,
const char * pipe_name ,
enum dcerpc_transport_t transport ,
const struct tsocket_address * remote_address ,
2017-03-10 02:38:33 +03:00
const struct tsocket_address * local_address ,
2019-03-20 15:50:03 +03:00
struct auth_session_info * * session_info ,
2013-09-25 18:33:00 +04:00
struct pipes_struct * * _p ,
int * perrno ) ;
2010-07-28 11:46:43 +04:00
void set_incoming_fault ( struct pipes_struct * p ) ;
2013-12-10 16:59:06 +04:00
void process_complete_pdu ( struct pipes_struct * p , struct ncacn_packet * pkt ) ;
2019-06-04 16:15:11 +03:00
NTSTATUS dcesrv_create_ncacn_np_socket ( const char * pipe_name , int * out_fd ) ;
2019-06-04 16:46:03 +03:00
NTSTATUS dcesrv_setup_ncacn_np_socket ( const char * pipe_name ,
struct tevent_context * ev_ctx ,
struct messaging_context * msg_ctx ) ;
2010-07-17 23:22:26 +04:00
2019-06-04 17:16:36 +03:00
NTSTATUS dcesrv_create_ncacn_ip_tcp_socket ( const struct sockaddr_storage * ifss ,
uint16_t * port ,
int * out_fd ) ;
2019-06-04 17:45:07 +03:00
NTSTATUS dcesrv_setup_ncacn_ip_tcp_socket ( struct tevent_context * ev_ctx ,
2019-06-04 17:39:36 +03:00
struct messaging_context * msg_ctx ,
const struct sockaddr_storage * ifss ,
2019-06-04 17:45:07 +03:00
uint16_t * port ) ;
2011-02-14 12:29:14 +03:00
2019-06-04 15:17:03 +03:00
NTSTATUS dcesrv_create_ncalrpc_socket ( const char * name , int * out_fd ) ;
2019-06-04 18:00:30 +03:00
NTSTATUS dcesrv_setup_ncalrpc_socket ( struct tevent_context * ev_ctx ,
struct messaging_context * msg_ctx ,
const char * name ,
2019-02-18 22:28:05 +03:00
dcerpc_ncacn_termination_fn term_fn ,
void * termination_data ) ;
2011-02-23 17:38:14 +03:00
2011-07-20 18:26:48 +04:00
void dcerpc_ncacn_accept ( struct tevent_context * ev_ctx ,
struct messaging_context * msg_ctx ,
enum dcerpc_transport_t transport ,
const char * name ,
struct tsocket_address * cli_addr ,
struct tsocket_address * srv_addr ,
int s ,
2019-02-18 20:48:57 +03:00
dcerpc_ncacn_termination_fn termination_fn ,
void * termination_data ) ;
2019-02-18 21:33:29 +03:00
void dcerpc_ncacn_packet_process ( struct tevent_req * subreq ) ;
2011-07-20 18:26:48 +04:00
2010-07-17 23:22:26 +04:00
# endif /* _PRC_SERVER_H_ */