dce/rpc "client" api

Luke Kenneth Casson Leighton lkcl at samba.org
Thu Aug 17 05:40:25 GMT 2000

i'm adding the following api into cli_connect.c, it's basically replacing
all the switch statements with a function table.  it will make it easier
to add DCE/RPC over TCP.

also, The Plan Is, to make these function tables dynamically loadable.
cli_ncacn_np.so, for example, to handle DCE/RPC over SMB.  cli_ncalrpc.so
to handle DCE/RPC over loop-back (currently implemented as unix domain
sockets, only accessible by/as root).

typedef struct cli_connect_fns
	/* create new connection.  strictly speaking, one arg should be
	 * full dce/rpc format: e.g "ncacn_np:\\server\pipe\pipename" */
	void *cli_connect_add(const char *pipe_name,
				  const vuser_key *key,
				  const char *srv_name,
				  const struct ntuser_creds *ntc,
				  BOOL reuse, BOOL *is_new_connection);

	/* terminate client connection */
	void cli_connection_free(void *con);

	/* get nt creds associated with an msrpc session. */
	struct ntdom_info *cli_conn_get_ntinfo(void *con);

	/* get a server name associated with a connection */
	BOOL cli_con_get_srvname(void *con, char *srv_name);

	/* write to a pipe */
	BOOL rpc_api_write(void *con, prs_struct *data);

	/* read from a pipe */
	BOOL rpc_api_rcv_pdu(void *con, prs_struct *rdata);

	/* detect dead servers. The fd is set to -1 when we get an error */
	BOOL rpc_con_ok(void *con);

	/* read and write to a pipe */
	BOOL rpc_api_send_rcv_pdu(void *con, prs_struct *data,
			  prs_struct *rdata);

} cli_connect_fns;

More information about the samba-technical mailing list