186d7f5d3SJohn Marino.\" @(#)rpc_clnt_create.3n 1.36 93/08/31 SMI; from SVr4 286d7f5d3SJohn Marino.\" Copyright 1989 AT&T 386d7f5d3SJohn Marino.\" @(#)rpc_clnt_create 1.5 89/07/24 SMI; 486d7f5d3SJohn Marino.\" Copyright (c) 1988 Sun Microsystems, Inc. - All Rights Reserved. 586d7f5d3SJohn Marino.\" $NetBSD: rpc_clnt_create.3,v 1.2 2000/06/20 00:53:08 fvdl Exp $ 686d7f5d3SJohn Marino.\" $FreeBSD: src/lib/libc/rpc/rpc_clnt_create.3,v 1.15 2006/09/17 21:27:34 ru Exp $ 786d7f5d3SJohn Marino.Dd May 7, 1993 886d7f5d3SJohn Marino.Dt RPC_CLNT_CREATE 3 986d7f5d3SJohn Marino.Os 1086d7f5d3SJohn Marino.Sh NAME 1186d7f5d3SJohn Marino.Nm rpc_clnt_create , 1286d7f5d3SJohn Marino.Nm clnt_control , 1386d7f5d3SJohn Marino.Nm clnt_create , 1486d7f5d3SJohn Marino.Nm clnt_create_timed , 1586d7f5d3SJohn Marino.Nm clnt_create_vers , 1686d7f5d3SJohn Marino.Nm clnt_create_vers_timed , 1786d7f5d3SJohn Marino.Nm clnt_destroy , 1886d7f5d3SJohn Marino.Nm clnt_dg_create , 1986d7f5d3SJohn Marino.Nm clnt_pcreateerror , 2086d7f5d3SJohn Marino.Nm clnt_raw_create , 2186d7f5d3SJohn Marino.Nm clnt_spcreateerror , 2286d7f5d3SJohn Marino.Nm clnt_tli_create , 2386d7f5d3SJohn Marino.Nm clnt_tp_create , 2486d7f5d3SJohn Marino.Nm clnt_tp_create_timed , 2586d7f5d3SJohn Marino.Nm clnt_vc_create , 2686d7f5d3SJohn Marino.Nm rpc_createerr 2786d7f5d3SJohn Marino.Nd "library routines for dealing with creation and manipulation of" 2886d7f5d3SJohn Marino.Vt CLIENT 2986d7f5d3SJohn Marinohandles 3086d7f5d3SJohn Marino.Sh LIBRARY 3186d7f5d3SJohn Marino.Lb libc 3286d7f5d3SJohn Marino.Sh SYNOPSIS 3386d7f5d3SJohn Marino.In rpc/rpc.h 3486d7f5d3SJohn Marino.Ft bool_t 3586d7f5d3SJohn Marino.Fn clnt_control "CLIENT *clnt" "const u_int req" "char *info" 3686d7f5d3SJohn Marino.Ft "CLIENT *" 3786d7f5d3SJohn Marino.Fn clnt_create "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const char *nettype" 3886d7f5d3SJohn Marino.Ft "CLIENT *" 3986d7f5d3SJohn Marino.Fn clnt_create_timed "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const char *nettype" "const struct timeval *timeout" 4086d7f5d3SJohn Marino.Ft "CLIENT *" 4186d7f5d3SJohn Marino.Fn clnt_create_vers "const char * host" "const rpcprog_t prognum" "rpcvers_t *vers_outp" "const rpcvers_t vers_low" "const rpcvers_t vers_high" "const char *nettype" 4286d7f5d3SJohn Marino.Ft "CLIENT *" 4386d7f5d3SJohn Marino.Fn clnt_create_vers_timed "const char * host" "const rpcprog_t prognum" "rpcvers_t *vers_outp" "const rpcvers_t vers_low" "const rpcvers_t vers_high" "const char *nettype" "const struct timeval *timeout" 4486d7f5d3SJohn Marino.Ft void 4586d7f5d3SJohn Marino.Fn clnt_destroy "CLIENT *clnt" 4686d7f5d3SJohn Marino.Ft "CLIENT *" 4786d7f5d3SJohn Marino.Fn clnt_dg_create "const int fildes" "const struct netbuf *svcaddr" "const rpcprog_t prognum" "const rpcvers_t versnum" "const u_int sendsz" "const u_int recvsz" 4886d7f5d3SJohn Marino.Ft void 4986d7f5d3SJohn Marino.Fn clnt_pcreateerror "const char *s" 5086d7f5d3SJohn Marino.Ft "char *" 5186d7f5d3SJohn Marino.Fn clnt_spcreateerror "const char *s" 5286d7f5d3SJohn Marino.Ft "CLIENT *" 5386d7f5d3SJohn Marino.Fn clnt_raw_create "const rpcprog_t prognum" "const rpcvers_t versnum" 5486d7f5d3SJohn Marino.Ft "CLIENT *" 5586d7f5d3SJohn Marino.Fn clnt_tli_create "const int fildes" "const struct netconfig *netconf" "struct netbuf *svcaddr" "const rpcprog_t prognum" "const rpcvers_t versnum" "const u_int sendsz" "const u_int recvsz" 5686d7f5d3SJohn Marino.Ft "CLIENT *" 5786d7f5d3SJohn Marino.Fn clnt_tp_create "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const struct netconfig *netconf" 5886d7f5d3SJohn Marino.Ft "CLIENT *" 5986d7f5d3SJohn Marino.Fn clnt_tp_create_timed "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const struct netconfig *netconf" "const struct timeval *timeout" 6086d7f5d3SJohn Marino.Ft "CLIENT *" 6186d7f5d3SJohn Marino.Fn clnt_vc_create "const int fildes" "const struct netbuf *svcaddr" "const rpcprog_t prognum" "const rpcvers_t versnum" "u_int sendsz" "u_int recvsz" 6286d7f5d3SJohn Marino.Sh DESCRIPTION 6386d7f5d3SJohn MarinoRPC library routines allow C language programs to make procedure 6486d7f5d3SJohn Marinocalls on other machines across the network. 6586d7f5d3SJohn MarinoFirst a 6686d7f5d3SJohn Marino.Vt CLIENT 6786d7f5d3SJohn Marinohandle is created and then the client calls a procedure to send a 6886d7f5d3SJohn Marinorequest to the server. 6986d7f5d3SJohn MarinoOn receipt of the request, the server calls a dispatch routine 7086d7f5d3SJohn Marinoto perform the requested service, and then sends a reply. 7186d7f5d3SJohn Marino.Sh Routines 7286d7f5d3SJohn Marino.Bl -tag -width YYYYYYY 7386d7f5d3SJohn Marino.It Fn clnt_control 7486d7f5d3SJohn MarinoA function macro to change or retrieve various information 7586d7f5d3SJohn Marinoabout a client object. 7686d7f5d3SJohn MarinoThe 7786d7f5d3SJohn Marino.Fa req 7886d7f5d3SJohn Marinoargument 7986d7f5d3SJohn Marinoindicates the type of operation, and 8086d7f5d3SJohn Marino.Fa info 8186d7f5d3SJohn Marinois a pointer to the information. 8286d7f5d3SJohn MarinoFor both connectionless and connection-oriented transports, 8386d7f5d3SJohn Marinothe supported values of 8486d7f5d3SJohn Marino.Fa req 8586d7f5d3SJohn Marinoand their argument types and what they do are: 8686d7f5d3SJohn Marino.Bl -column "CLSET_FD_NCLOSE" "struct timeval *" "set total timeout" 8786d7f5d3SJohn Marino.It Dv CLSET_TIMEOUT Ta "struct timeval *" Ta "set total timeout" 8886d7f5d3SJohn Marino.It Dv CLGET_TIMEOUT Ta "struct timeval *" Ta "get total timeout" 8986d7f5d3SJohn Marino.El 9086d7f5d3SJohn Marino.Pp 9186d7f5d3SJohn MarinoNote: 9286d7f5d3SJohn Marinoif you set the timeout using 9386d7f5d3SJohn Marino.Fn clnt_control , 9486d7f5d3SJohn Marinothe timeout argument passed by 9586d7f5d3SJohn Marino.Fn clnt_call 9686d7f5d3SJohn Marinois ignored in all subsequent calls. 9786d7f5d3SJohn Marino.Pp 9886d7f5d3SJohn MarinoNote: 9986d7f5d3SJohn MarinoIf you set the timeout value to 0, 10086d7f5d3SJohn Marino.Fn clnt_control 10186d7f5d3SJohn Marinoimmediately returns an error 10286d7f5d3SJohn Marino.Pq Dv RPC_TIMEDOUT . 10386d7f5d3SJohn MarinoSet the timeout argument to 0 for batching calls. 10486d7f5d3SJohn Marino.Bl -column CLSET_FD_NCLOSE "struct timeval *" 10586d7f5d3SJohn Marino.It Dv CLGET_SVC_ADDR Ta "struct netbuf *" Ta "get servers address" 10686d7f5d3SJohn Marino.It Dv CLGET_FD Ta "int *" Ta "get fd from handle" 10786d7f5d3SJohn Marino.It Dv CLSET_FD_CLOSE Ta "void" Ta "close fd on destroy" 10886d7f5d3SJohn Marino.It Dv CLSET_FD_NCLOSE Ta void Ta "do not close fd on destroy" 10986d7f5d3SJohn Marino.It Dv CLGET_VERS Ta "u_int32_t *" Ta "get RPC program version" 11086d7f5d3SJohn Marino.It Dv CLSET_VERS Ta "u_int32_t *" Ta "set RPC program version" 11186d7f5d3SJohn Marino.It Dv CLGET_XID Ta "u_int32_t *" Ta "get XID of previous call" 11286d7f5d3SJohn Marino.It Dv CLSET_XID Ta "u_int32_t *" Ta "set XID of next call" 11386d7f5d3SJohn Marino.El 11486d7f5d3SJohn Marino.Pp 11586d7f5d3SJohn MarinoThe following operations are valid for connectionless transports only: 11686d7f5d3SJohn Marino.Bl -column CLSET_RETRY_TIMEOUT "struct timeval *" "set total timeout" 11786d7f5d3SJohn Marino.It Dv CLSET_RETRY_TIMEOUT Ta "struct timeval *" Ta "set the retry timeout" 11886d7f5d3SJohn Marino.It Dv CLGET_RETRY_TIMEOUT Ta "struct timeval *" Ta "get the retry timeout" 11986d7f5d3SJohn Marino.It Dv CLSET_CONNECT Ta Vt "int *" Ta use Xr connect 2 12086d7f5d3SJohn Marino.El 12186d7f5d3SJohn Marino.Pp 12286d7f5d3SJohn MarinoThe retry timeout is the time that RPC 12386d7f5d3SJohn Marinowaits for the server to reply before retransmitting the request. 12486d7f5d3SJohn MarinoThe 12586d7f5d3SJohn Marino.Fn clnt_control 12686d7f5d3SJohn Marinofunction 12786d7f5d3SJohn Marinoreturns 12886d7f5d3SJohn Marino.Dv TRUE 12986d7f5d3SJohn Marinoon success and 13086d7f5d3SJohn Marino.Dv FALSE 13186d7f5d3SJohn Marinoon failure. 13286d7f5d3SJohn Marino.It Fn clnt_create 13386d7f5d3SJohn MarinoGeneric client creation routine for program 13486d7f5d3SJohn Marino.Fa prognum 13586d7f5d3SJohn Marinoand version 13686d7f5d3SJohn Marino.Fa versnum . 13786d7f5d3SJohn MarinoThe 13886d7f5d3SJohn Marino.Fa host 13986d7f5d3SJohn Marinoargument 14086d7f5d3SJohn Marinoidentifies the name of the remote host where the server 14186d7f5d3SJohn Marinois located. 14286d7f5d3SJohn MarinoThe 14386d7f5d3SJohn Marino.Fa nettype 14486d7f5d3SJohn Marinoargument 14586d7f5d3SJohn Marinoindicates the class of transport protocol to use. 14686d7f5d3SJohn MarinoThe transports are tried in left to right order in 14786d7f5d3SJohn Marino.Ev NETPATH 14886d7f5d3SJohn Marinoenvironment variable or in top to bottom order in 14986d7f5d3SJohn Marinothe netconfig database. 15086d7f5d3SJohn MarinoThe 15186d7f5d3SJohn Marino.Fn clnt_create 15286d7f5d3SJohn Marinofunction 15386d7f5d3SJohn Marinotries all the transports of the 15486d7f5d3SJohn Marino.Fa nettype 15586d7f5d3SJohn Marinoclass available from the 15686d7f5d3SJohn Marino.Ev NETPATH 15786d7f5d3SJohn Marinoenvironment variable and the netconfig database, 15886d7f5d3SJohn Marinoand chooses the first successful one. 15986d7f5d3SJohn MarinoA default timeout is set and can be modified using 16086d7f5d3SJohn Marino.Fn clnt_control . 16186d7f5d3SJohn MarinoThis routine returns 16286d7f5d3SJohn Marino.Dv NULL 16386d7f5d3SJohn Marinoif it fails. 16486d7f5d3SJohn MarinoThe 16586d7f5d3SJohn Marino.Fn clnt_pcreateerror 16686d7f5d3SJohn Marinoroutine can be used to print the reason for failure. 16786d7f5d3SJohn Marino.Pp 16886d7f5d3SJohn MarinoNote: 16986d7f5d3SJohn Marino.Fn clnt_create 17086d7f5d3SJohn Marinoreturns a valid client handle even 17186d7f5d3SJohn Marinoif the particular version number supplied to 17286d7f5d3SJohn Marino.Fn clnt_create 17386d7f5d3SJohn Marinois not registered with the 17486d7f5d3SJohn Marino.Xr rpcbind 8 17586d7f5d3SJohn Marinoservice. 17686d7f5d3SJohn MarinoThis mismatch will be discovered by a 17786d7f5d3SJohn Marino.Fn clnt_call 17886d7f5d3SJohn Marinolater (see 17986d7f5d3SJohn Marino.Xr rpc_clnt_calls 3 ) . 18086d7f5d3SJohn Marino.It Fn clnt_create_timed 18186d7f5d3SJohn MarinoGeneric client creation routine which is similar to 18286d7f5d3SJohn Marino.Fn clnt_create 18386d7f5d3SJohn Marinobut which also has the additional argument 18486d7f5d3SJohn Marino.Fa timeout 18586d7f5d3SJohn Marinothat specifies the maximum amount of time allowed for 18686d7f5d3SJohn Marinoeach transport class tried. 18786d7f5d3SJohn MarinoIn all other respects, the 18886d7f5d3SJohn Marino.Fn clnt_create_timed 18986d7f5d3SJohn Marinocall behaves exactly like the 19086d7f5d3SJohn Marino.Fn clnt_create 19186d7f5d3SJohn Marinocall. 19286d7f5d3SJohn Marino.It Fn clnt_create_vers 19386d7f5d3SJohn MarinoGeneric client creation routine which is similar to 19486d7f5d3SJohn Marino.Fn clnt_create 19586d7f5d3SJohn Marinobut which also checks for the 19686d7f5d3SJohn Marinoversion availability. 19786d7f5d3SJohn MarinoThe 19886d7f5d3SJohn Marino.Fa host 19986d7f5d3SJohn Marinoargument 20086d7f5d3SJohn Marinoidentifies the name of the remote host where the server 20186d7f5d3SJohn Marinois located. 20286d7f5d3SJohn MarinoThe 20386d7f5d3SJohn Marino.Fa nettype 20486d7f5d3SJohn Marinoargument 20586d7f5d3SJohn Marinoindicates the class transport protocols to be used. 20686d7f5d3SJohn MarinoIf the routine is successful it returns a client handle created for 20786d7f5d3SJohn Marinothe highest version between 20886d7f5d3SJohn Marino.Fa vers_low 20986d7f5d3SJohn Marinoand 21086d7f5d3SJohn Marino.Fa vers_high 21186d7f5d3SJohn Marinothat is supported by the server. 21286d7f5d3SJohn MarinoThe 21386d7f5d3SJohn Marino.Fa vers_outp 21486d7f5d3SJohn Marinoargument 21586d7f5d3SJohn Marinois set to this value. 21686d7f5d3SJohn MarinoThat is, after a successful return 21786d7f5d3SJohn Marino.Fa vers_low 21886d7f5d3SJohn Marino<= 21986d7f5d3SJohn Marino.Fa *vers_outp 22086d7f5d3SJohn Marino<= 22186d7f5d3SJohn Marino.Fa vers_high . 22286d7f5d3SJohn MarinoIf no version between 22386d7f5d3SJohn Marino.Fa vers_low 22486d7f5d3SJohn Marinoand 22586d7f5d3SJohn Marino.Fa vers_high 22686d7f5d3SJohn Marinois supported by the server then the routine fails and returns 22786d7f5d3SJohn Marino.Dv NULL . 22886d7f5d3SJohn MarinoA default timeout is set and can be modified using 22986d7f5d3SJohn Marino.Fn clnt_control . 23086d7f5d3SJohn MarinoThis routine returns 23186d7f5d3SJohn Marino.Dv NULL 23286d7f5d3SJohn Marinoif it fails. 23386d7f5d3SJohn MarinoThe 23486d7f5d3SJohn Marino.Fn clnt_pcreateerror 23586d7f5d3SJohn Marinoroutine can be used to print the reason for failure. 23686d7f5d3SJohn MarinoNote: 23786d7f5d3SJohn Marino.Fn clnt_create 23886d7f5d3SJohn Marinoreturns a valid client handle even 23986d7f5d3SJohn Marinoif the particular version number supplied to 24086d7f5d3SJohn Marino.Fn clnt_create 24186d7f5d3SJohn Marinois not registered with the 24286d7f5d3SJohn Marino.Xr rpcbind 8 24386d7f5d3SJohn Marinoservice. 24486d7f5d3SJohn MarinoThis mismatch will be discovered by a 24586d7f5d3SJohn Marino.Fn clnt_call 24686d7f5d3SJohn Marinolater (see 24786d7f5d3SJohn Marino.Xr rpc_clnt_calls 3 ) . 24886d7f5d3SJohn MarinoHowever, 24986d7f5d3SJohn Marino.Fn clnt_create_vers 25086d7f5d3SJohn Marinodoes this for you and returns a valid handle 25186d7f5d3SJohn Marinoonly if a version within 25286d7f5d3SJohn Marinothe range supplied is supported by the server. 25386d7f5d3SJohn Marino.It Fn clnt_create_vers_timed 25486d7f5d3SJohn MarinoGeneric client creation routine which is similar to 25586d7f5d3SJohn Marino.Fn clnt_create_vers 25686d7f5d3SJohn Marinobut which also has the additional argument 25786d7f5d3SJohn Marino.Fa timeout 25886d7f5d3SJohn Marinothat specifies the maximum amount of time allowed for 25986d7f5d3SJohn Marinoeach transport class tried. 26086d7f5d3SJohn MarinoIn all other respects, the 26186d7f5d3SJohn Marino.Fn clnt_create_vers_timed 26286d7f5d3SJohn Marinocall behaves exactly like the 26386d7f5d3SJohn Marino.Fn clnt_create_vers 26486d7f5d3SJohn Marinocall. 26586d7f5d3SJohn Marino.It Fn clnt_destroy 26686d7f5d3SJohn MarinoA function macro that destroys the client's RPC handle. 26786d7f5d3SJohn MarinoDestruction usually involves deallocation 26886d7f5d3SJohn Marinoof private data structures, including 26986d7f5d3SJohn Marino.Fa clnt 27086d7f5d3SJohn Marinoitself. 27186d7f5d3SJohn MarinoUse of 27286d7f5d3SJohn Marino.Fa clnt 27386d7f5d3SJohn Marinois undefined after calling 27486d7f5d3SJohn Marino.Fn clnt_destroy . 27586d7f5d3SJohn MarinoIf the RPC library opened the associated file descriptor, or 27686d7f5d3SJohn Marino.Dv CLSET_FD_CLOSE 27786d7f5d3SJohn Marinowas set using 27886d7f5d3SJohn Marino.Fn clnt_control , 27986d7f5d3SJohn Marinothe file descriptor will be closed. 28086d7f5d3SJohn MarinoThe caller should call 28186d7f5d3SJohn Marino.Fn auth_destroy "clnt->cl_auth" 28286d7f5d3SJohn Marino(before calling 28386d7f5d3SJohn Marino.Fn clnt_destroy ) 28486d7f5d3SJohn Marinoto destroy the associated 28586d7f5d3SJohn Marino.Vt AUTH 28686d7f5d3SJohn Marinostructure (see 28786d7f5d3SJohn Marino.Xr rpc_clnt_auth 3 ) . 28886d7f5d3SJohn Marino.It Fn clnt_dg_create 28986d7f5d3SJohn MarinoThis routine creates an RPC client for the remote program 29086d7f5d3SJohn Marino.Fa prognum 29186d7f5d3SJohn Marinoand version 29286d7f5d3SJohn Marino.Fa versnum ; 29386d7f5d3SJohn Marinothe client uses a connectionless transport. 29486d7f5d3SJohn MarinoThe remote program is located at address 29586d7f5d3SJohn Marino.Fa svcaddr . 29686d7f5d3SJohn MarinoThe 29786d7f5d3SJohn Marino.Fa fildes 29886d7f5d3SJohn Marinoargument 29986d7f5d3SJohn Marinois an open and bound file descriptor. 30086d7f5d3SJohn MarinoThis routine will resend the call message in intervals of 30186d7f5d3SJohn Marino15 seconds until a response is received or until the 30286d7f5d3SJohn Marinocall times out. 30386d7f5d3SJohn MarinoThe total time for the call to time out is specified by 30486d7f5d3SJohn Marino.Fn clnt_call 30586d7f5d3SJohn Marino(see 30686d7f5d3SJohn Marino.Fn clnt_call 30786d7f5d3SJohn Marinoin 30886d7f5d3SJohn Marino.Xr rpc_clnt_calls 3 ) . 30986d7f5d3SJohn MarinoThe retry time out and the total time out periods can 31086d7f5d3SJohn Marinobe changed using 31186d7f5d3SJohn Marino.Fn clnt_control . 31286d7f5d3SJohn MarinoThe user may set the size of the send and receive 31386d7f5d3SJohn Marinobuffers with the 31486d7f5d3SJohn Marino.Fa sendsz 31586d7f5d3SJohn Marinoand 31686d7f5d3SJohn Marino.Fa recvsz 31786d7f5d3SJohn Marinoarguments; 31886d7f5d3SJohn Marinovalues of 0 choose suitable defaults. 31986d7f5d3SJohn MarinoThis routine returns 32086d7f5d3SJohn Marino.Dv NULL 32186d7f5d3SJohn Marinoif it fails. 32286d7f5d3SJohn Marino.It Fn clnt_pcreateerror 32386d7f5d3SJohn MarinoPrint a message to standard error indicating 32486d7f5d3SJohn Marinowhy a client RPC handle could not be created. 32586d7f5d3SJohn MarinoThe message is prepended with the string 32686d7f5d3SJohn Marino.Fa s 32786d7f5d3SJohn Marinoand a colon, and appended with a newline. 32886d7f5d3SJohn Marino.It Fn clnt_spcreateerror 32986d7f5d3SJohn MarinoLike 33086d7f5d3SJohn Marino.Fn clnt_pcreateerror , 33186d7f5d3SJohn Marinoexcept that it returns a string 33286d7f5d3SJohn Marinoinstead of printing to the standard error. 33386d7f5d3SJohn MarinoA newline is not appended to the message in this case. 33486d7f5d3SJohn MarinoWarning: 33586d7f5d3SJohn Marinoreturns a pointer to a buffer that is overwritten 33686d7f5d3SJohn Marinoon each call. 33786d7f5d3SJohn Marino.It Fn clnt_raw_create 33886d7f5d3SJohn MarinoThis routine creates an RPC 33986d7f5d3SJohn Marinoclient handle for the remote program 34086d7f5d3SJohn Marino.Fa prognum 34186d7f5d3SJohn Marinoand version 34286d7f5d3SJohn Marino.Fa versnum . 34386d7f5d3SJohn MarinoThe transport used to pass messages to the service is 34486d7f5d3SJohn Marinoa buffer within the process's address space, 34586d7f5d3SJohn Marinoso the corresponding RPC 34686d7f5d3SJohn Marinoserver should live in the same address space; 34786d7f5d3SJohn Marino(see 34886d7f5d3SJohn Marino.Fn svc_raw_create 34986d7f5d3SJohn Marinoin 35086d7f5d3SJohn Marino.Xr rpc_svc_create 3 ) . 35186d7f5d3SJohn MarinoThis allows simulation of RPC and measurement of 35286d7f5d3SJohn MarinoRPC overheads, such as round trip times, 35386d7f5d3SJohn Marinowithout any kernel or networking interference. 35486d7f5d3SJohn MarinoThis routine returns 35586d7f5d3SJohn Marino.Dv NULL 35686d7f5d3SJohn Marinoif it fails. 35786d7f5d3SJohn MarinoThe 35886d7f5d3SJohn Marino.Fn clnt_raw_create 35986d7f5d3SJohn Marinofunction 36086d7f5d3SJohn Marinoshould be called after 36186d7f5d3SJohn Marino.Fn svc_raw_create . 36286d7f5d3SJohn Marino.It Fn clnt_tli_create 36386d7f5d3SJohn MarinoThis routine creates an RPC 36486d7f5d3SJohn Marinoclient handle for the remote program 36586d7f5d3SJohn Marino.Fa prognum 36686d7f5d3SJohn Marinoand version 36786d7f5d3SJohn Marino.Fa versnum . 36886d7f5d3SJohn MarinoThe remote program is located at address 36986d7f5d3SJohn Marino.Fa svcaddr . 37086d7f5d3SJohn MarinoIf 37186d7f5d3SJohn Marino.Fa svcaddr 37286d7f5d3SJohn Marinois 37386d7f5d3SJohn Marino.Dv NULL 37486d7f5d3SJohn Marinoand it is connection-oriented, it is assumed that the file descriptor 37586d7f5d3SJohn Marinois connected. 37686d7f5d3SJohn MarinoFor connectionless transports, if 37786d7f5d3SJohn Marino.Fa svcaddr 37886d7f5d3SJohn Marinois 37986d7f5d3SJohn Marino.Dv NULL , 38086d7f5d3SJohn Marino.Dv RPC_UNKNOWNADDR 38186d7f5d3SJohn Marinoerror is set. 38286d7f5d3SJohn MarinoThe 38386d7f5d3SJohn Marino.Fa fildes 38486d7f5d3SJohn Marinoargument 38586d7f5d3SJohn Marinois a file descriptor which may be open, bound and connected. 38686d7f5d3SJohn MarinoIf it is 38786d7f5d3SJohn Marino.Dv RPC_ANYFD , 38886d7f5d3SJohn Marinoit opens a file descriptor on the transport specified by 38986d7f5d3SJohn Marino.Fa netconf . 39086d7f5d3SJohn MarinoIf 39186d7f5d3SJohn Marino.Fa fildes 39286d7f5d3SJohn Marinois 39386d7f5d3SJohn Marino.Dv RPC_ANYFD 39486d7f5d3SJohn Marinoand 39586d7f5d3SJohn Marino.Fa netconf 39686d7f5d3SJohn Marinois 39786d7f5d3SJohn Marino.Dv NULL , 39886d7f5d3SJohn Marinoa 39986d7f5d3SJohn Marino.Dv RPC_UNKNOWNPROTO 40086d7f5d3SJohn Marinoerror is set. 40186d7f5d3SJohn MarinoIf 40286d7f5d3SJohn Marino.Fa fildes 40386d7f5d3SJohn Marinois unbound, then it will attempt to bind the descriptor. 40486d7f5d3SJohn MarinoThe user may specify the size of the buffers with the 40586d7f5d3SJohn Marino.Fa sendsz 40686d7f5d3SJohn Marinoand 40786d7f5d3SJohn Marino.Fa recvsz 40886d7f5d3SJohn Marinoarguments; 40986d7f5d3SJohn Marinovalues of 0 choose suitable defaults. 41086d7f5d3SJohn MarinoDepending upon the type of the transport (connection-oriented 41186d7f5d3SJohn Marinoor connectionless), 41286d7f5d3SJohn Marino.Fn clnt_tli_create 41386d7f5d3SJohn Marinocalls appropriate client creation routines. 41486d7f5d3SJohn MarinoThis routine returns 41586d7f5d3SJohn Marino.Dv NULL 41686d7f5d3SJohn Marinoif it fails. 41786d7f5d3SJohn MarinoThe 41886d7f5d3SJohn Marino.Fn clnt_pcreateerror 41986d7f5d3SJohn Marinoroutine can be used to print the reason for failure. 42086d7f5d3SJohn MarinoThe remote rpcbind 42186d7f5d3SJohn Marinoservice (see 42286d7f5d3SJohn Marino.Xr rpcbind 8 ) 42386d7f5d3SJohn Marinois not consulted for the address of the remote 42486d7f5d3SJohn Marinoservice. 42586d7f5d3SJohn Marino.It Fn clnt_tp_create 42686d7f5d3SJohn MarinoLike 42786d7f5d3SJohn Marino.Fn clnt_create 42886d7f5d3SJohn Marinoexcept 42986d7f5d3SJohn Marino.Fn clnt_tp_create 43086d7f5d3SJohn Marinotries only one transport specified through 43186d7f5d3SJohn Marino.Fa netconf . 43286d7f5d3SJohn MarinoThe 43386d7f5d3SJohn Marino.Fn clnt_tp_create 43486d7f5d3SJohn Marinofunction 43586d7f5d3SJohn Marinocreates a client handle for the program 43686d7f5d3SJohn Marino.Fa prognum , 43786d7f5d3SJohn Marinothe version 43886d7f5d3SJohn Marino.Fa versnum , 43986d7f5d3SJohn Marinoand for the transport specified by 44086d7f5d3SJohn Marino.Fa netconf . 44186d7f5d3SJohn MarinoDefault options are set, 44286d7f5d3SJohn Marinowhich can be changed using 44386d7f5d3SJohn Marino.Fn clnt_control 44486d7f5d3SJohn Marinocalls. 44586d7f5d3SJohn MarinoThe remote rpcbind service on the host 44686d7f5d3SJohn Marino.Fa host 44786d7f5d3SJohn Marinois consulted for the address of the remote service. 44886d7f5d3SJohn MarinoThis routine returns 44986d7f5d3SJohn Marino.Dv NULL 45086d7f5d3SJohn Marinoif it fails. 45186d7f5d3SJohn MarinoThe 45286d7f5d3SJohn Marino.Fn clnt_pcreateerror 45386d7f5d3SJohn Marinoroutine can be used to print the reason for failure. 45486d7f5d3SJohn Marino.It Fn clnt_tp_create_timed 45586d7f5d3SJohn MarinoLike 45686d7f5d3SJohn Marino.Fn clnt_tp_create 45786d7f5d3SJohn Marinoexcept 45886d7f5d3SJohn Marino.Fn clnt_tp_create_timed 45986d7f5d3SJohn Marinohas the extra argument 46086d7f5d3SJohn Marino.Fa timeout 46186d7f5d3SJohn Marinowhich specifies the maximum time allowed for 46286d7f5d3SJohn Marinothe creation attempt to succeed. 46386d7f5d3SJohn MarinoIn all other respects, the 46486d7f5d3SJohn Marino.Fn clnt_tp_create_timed 46586d7f5d3SJohn Marinocall behaves exactly like the 46686d7f5d3SJohn Marino.Fn clnt_tp_create 46786d7f5d3SJohn Marinocall. 46886d7f5d3SJohn Marino.It Fn clnt_vc_create 46986d7f5d3SJohn MarinoThis routine creates an RPC 47086d7f5d3SJohn Marinoclient for the remote program 47186d7f5d3SJohn Marino.Fa prognum 47286d7f5d3SJohn Marinoand version 47386d7f5d3SJohn Marino.Fa versnum ; 47486d7f5d3SJohn Marinothe client uses a connection-oriented transport. 47586d7f5d3SJohn MarinoThe remote program is located at address 47686d7f5d3SJohn Marino.Fa svcaddr . 47786d7f5d3SJohn MarinoThe 47886d7f5d3SJohn Marino.Fa fildes 47986d7f5d3SJohn Marinoargument 48086d7f5d3SJohn Marinois an open and bound file descriptor. 48186d7f5d3SJohn MarinoThe user may specify the size of the send and receive buffers 48286d7f5d3SJohn Marinowith the 48386d7f5d3SJohn Marino.Fa sendsz 48486d7f5d3SJohn Marinoand 48586d7f5d3SJohn Marino.Fa recvsz 48686d7f5d3SJohn Marinoarguments; 48786d7f5d3SJohn Marinovalues of 0 choose suitable defaults. 48886d7f5d3SJohn MarinoThis routine returns 48986d7f5d3SJohn Marino.Dv NULL 49086d7f5d3SJohn Marinoif it fails. 49186d7f5d3SJohn MarinoThe address 49286d7f5d3SJohn Marino.Fa svcaddr 49386d7f5d3SJohn Marinoshould not be 49486d7f5d3SJohn Marino.Dv NULL 49586d7f5d3SJohn Marinoand should point to the actual address of the remote program. 49686d7f5d3SJohn MarinoThe 49786d7f5d3SJohn Marino.Fn clnt_vc_create 49886d7f5d3SJohn Marinofunction 49986d7f5d3SJohn Marinodoes not consult the remote rpcbind service for this information. 50086d7f5d3SJohn Marino.It Xo 50186d7f5d3SJohn Marino.Vt "struct rpc_createerr" Va rpc_createerr ; 50286d7f5d3SJohn Marino.Xc 50386d7f5d3SJohn MarinoA global variable whose value is set by any RPC 50486d7f5d3SJohn Marinoclient handle creation routine 50586d7f5d3SJohn Marinothat fails. 50686d7f5d3SJohn MarinoIt is used by the routine 50786d7f5d3SJohn Marino.Fn clnt_pcreateerror 50886d7f5d3SJohn Marinoto print the reason for the failure. 50986d7f5d3SJohn Marino.El 51086d7f5d3SJohn Marino.Sh SEE ALSO 51186d7f5d3SJohn Marino.Xr rpc 3 , 51286d7f5d3SJohn Marino.Xr rpc_clnt_auth 3 , 51386d7f5d3SJohn Marino.Xr rpc_clnt_calls 3 , 51486d7f5d3SJohn Marino.Xr rpcbind 8 515