xref: /freebsd/lib/libc/rpc/rpc_clnt_create.3 (revision 79be508c8f9afb73e85ef379ae1620f67a0e6c4c)
18360efbdSAlfred Perlstein.\" @(#)rpc_clnt_create.3n 1.36 93/08/31 SMI; from SVr4
28360efbdSAlfred Perlstein.\" Copyright 1989 AT&T
38360efbdSAlfred Perlstein.\" @(#)rpc_clnt_create 1.5 89/07/24 SMI;
48360efbdSAlfred Perlstein.\" Copyright (c) 1988 Sun Microsystems, Inc. - All Rights Reserved.
58360efbdSAlfred Perlstein.\" $NetBSD: rpc_clnt_create.3,v 1.2 2000/06/20 00:53:08 fvdl Exp $
68360efbdSAlfred Perlstein.\" $FreeBSD$
78360efbdSAlfred Perlstein.Dd May 7, 1993
88360efbdSAlfred Perlstein.Dt RPC_CLNT_CREATE 3
98360efbdSAlfred Perlstein.Os
108360efbdSAlfred Perlstein.Sh NAME
118360efbdSAlfred Perlstein.Nm rpc_clnt_create ,
128360efbdSAlfred Perlstein.Nm clnt_control ,
138360efbdSAlfred Perlstein.Nm clnt_create ,
144e37855eSAlfred Perlstein.Nm clnt_create_timed ,
158360efbdSAlfred Perlstein.Nm clnt_create_vers ,
164e37855eSAlfred Perlstein.Nm clnt_create_vers_timed ,
178360efbdSAlfred Perlstein.Nm clnt_destroy ,
188360efbdSAlfred Perlstein.Nm clnt_dg_create ,
198360efbdSAlfred Perlstein.Nm clnt_pcreateerror ,
208360efbdSAlfred Perlstein.Nm clnt_raw_create ,
218360efbdSAlfred Perlstein.Nm clnt_spcreateerror ,
228360efbdSAlfred Perlstein.Nm clnt_tli_create ,
238360efbdSAlfred Perlstein.Nm clnt_tp_create ,
244e37855eSAlfred Perlstein.Nm clnt_tp_create_timed ,
258360efbdSAlfred Perlstein.Nm clnt_vc_create ,
268360efbdSAlfred Perlstein.Nm rpc_createerr
278360efbdSAlfred Perlstein.Nd "library routines for dealing with creation and manipulation of"
288360efbdSAlfred Perlstein.Vt CLIENT
298360efbdSAlfred Perlsteinhandles
308360efbdSAlfred Perlstein.Sh LIBRARY
318360efbdSAlfred Perlstein.Lb libc
328360efbdSAlfred Perlstein.Sh SYNOPSIS
3332eef9aeSRuslan Ermilov.In rpc/rpc.h
348360efbdSAlfred Perlstein.Ft bool_t
358360efbdSAlfred Perlstein.Fn clnt_control "CLIENT *clnt" "const u_int req" "char *info"
368360efbdSAlfred Perlstein.Ft "CLIENT *"
378360efbdSAlfred Perlstein.Fn clnt_create "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const char *nettype"
388360efbdSAlfred Perlstein.Ft "CLIENT *"
394e37855eSAlfred Perlstein.Fn clnt_create_timed "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const char *nettype" "const struct timeval *timeout"
404e37855eSAlfred Perlstein.Ft "CLIENT *"
41db7534cfSBruce Evans.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"
424e37855eSAlfred Perlstein.Ft "CLIENT *"
4379be508cSRuslan Ermilov.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"
448360efbdSAlfred Perlstein.Ft void
45224e22e6SMike Heffner.Fn clnt_destroy "CLIENT *clnt"
468360efbdSAlfred Perlstein.Ft "CLIENT *"
478360efbdSAlfred Perlstein.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"
488360efbdSAlfred Perlstein.Ft void
498360efbdSAlfred Perlstein.Fn clnt_pcreateerror "const char *s"
508360efbdSAlfred Perlstein.Ft "char *"
518360efbdSAlfred Perlstein.Fn clnt_spcreateerror "const char *s"
528360efbdSAlfred Perlstein.Ft "CLIENT *"
538360efbdSAlfred Perlstein.Fn clnt_raw_create "const rpcprog_t prognum" "const rpcvers_t versnum"
548360efbdSAlfred Perlstein.Ft "CLIENT *"
5579be508cSRuslan Ermilov.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"
568360efbdSAlfred Perlstein.Ft "CLIENT *"
578360efbdSAlfred Perlstein.Fn clnt_tp_create "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const struct netconfig *netconf"
588360efbdSAlfred Perlstein.Ft "CLIENT *"
594e37855eSAlfred Perlstein.Fn clnt_tp_create_timed "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const struct netconfig *netconf" "const struct timeval *timeout"
604e37855eSAlfred Perlstein.Ft "CLIENT *"
61886ee6f6SAlfred Perlstein.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"
628360efbdSAlfred Perlstein.Sh DESCRIPTION
638360efbdSAlfred PerlsteinRPC library routines allow C language programs to make procedure
648360efbdSAlfred Perlsteincalls on other machines across the network.
658360efbdSAlfred PerlsteinFirst a
668360efbdSAlfred Perlstein.Vt CLIENT
678360efbdSAlfred Perlsteinhandle is created and then the client calls a procedure to send a
688360efbdSAlfred Perlsteinrequest to the server.
698360efbdSAlfred PerlsteinOn receipt of the request, the server calls a dispatch routine
708360efbdSAlfred Perlsteinto perform the requested service, and then sends a reply.
718360efbdSAlfred Perlstein.Sh Routines
728360efbdSAlfred Perlstein.Bl -tag -width YYYYYYY
738360efbdSAlfred Perlstein.It Fn clnt_control
748360efbdSAlfred PerlsteinA function macro to change or retrieve various information
758360efbdSAlfred Perlsteinabout a client object.
762efeeba5SRuslan ErmilovThe
778360efbdSAlfred Perlstein.Fa req
782efeeba5SRuslan Ermilovargument
798360efbdSAlfred Perlsteinindicates the type of operation, and
808360efbdSAlfred Perlstein.Fa info
818360efbdSAlfred Perlsteinis a pointer to the information.
828360efbdSAlfred PerlsteinFor both connectionless and connection-oriented transports,
838360efbdSAlfred Perlsteinthe supported values of
848360efbdSAlfred Perlstein.Fa req
858360efbdSAlfred Perlsteinand their argument types and what they do are:
868360efbdSAlfred Perlstein.Bl -column "CLSET_FD_NCLOSE" "struct timeval *" "set total timeout"
878360efbdSAlfred Perlstein.It Dv CLSET_TIMEOUT Ta "struct timeval *" Ta "set total timeout"
888360efbdSAlfred Perlstein.It Dv CLGET_TIMEOUT Ta "struct timeval *" Ta "get total timeout"
898360efbdSAlfred Perlstein.El
908360efbdSAlfred Perlstein.Pp
918360efbdSAlfred PerlsteinNote:
928360efbdSAlfred Perlsteinif you set the timeout using
938360efbdSAlfred Perlstein.Fn clnt_control ,
948360efbdSAlfred Perlsteinthe timeout argument passed by
958360efbdSAlfred Perlstein.Fn clnt_call
968360efbdSAlfred Perlsteinis ignored in all subsequent calls.
978360efbdSAlfred Perlstein.Pp
988360efbdSAlfred PerlsteinNote:
998360efbdSAlfred PerlsteinIf you set the timeout value to 0,
1008360efbdSAlfred Perlstein.Fn clnt_control
1018360efbdSAlfred Perlsteinimmediately returns an error
1028360efbdSAlfred Perlstein.Pq Dv RPC_TIMEDOUT .
1032efeeba5SRuslan ErmilovSet the timeout argument to 0 for batching calls.
1048360efbdSAlfred Perlstein.Bl -column CLSET_FD_NCLOSE "struct timeval *" "do not close fd on destroy"
1058360efbdSAlfred Perlstein.It Dv CLGET_SVC_ADDR Ta "struct netbuf *" Ta "get servers address"
1068360efbdSAlfred Perlstein.It Dv CLGET_FD Ta "int *" Ta "get fd from handle"
1078360efbdSAlfred Perlstein.It Dv CLSET_FD_CLOSE Ta "void" Ta "close fd on destroy"
1080227791bSRuslan Ermilov.It Dv CLSET_FD_NCLOSE Ta void Ta "do not close fd on destroy"
109e5b04ceeSBill Fenner.It Dv CLGET_VERS Ta "u_int32_t *" Ta "get RPC program version"
110e5b04ceeSBill Fenner.It Dv CLSET_VERS Ta "u_int32_t *" Ta "set RPC program version"
111e5b04ceeSBill Fenner.It Dv CLGET_XID Ta "u_int32_t *" Ta "get XID of previous call"
112e5b04ceeSBill Fenner.It Dv CLSET_XID Ta "u_int32_t *" Ta "set XID of next call"
1138360efbdSAlfred Perlstein.El
1148360efbdSAlfred Perlstein.Pp
1158360efbdSAlfred PerlsteinThe following operations are valid for connectionless transports only:
1168360efbdSAlfred Perlstein.Bl -column CLSET_RETRY_TIMEOUT "struct timeval *" "set total timeout"
1178360efbdSAlfred Perlstein.It Dv CLSET_RETRY_TIMEOUT Ta "struct timeval *" Ta "set the retry timeout"
1188360efbdSAlfred Perlstein.It Dv CLGET_RETRY_TIMEOUT Ta "struct timeval *" Ta "get the retry timeout"
11932de72d2SIan Dowse.It Dv CLSET_CONNECT Ta Vt "int *" Ta use Xr connect 2
1208360efbdSAlfred Perlstein.El
1218360efbdSAlfred Perlstein.Pp
1228360efbdSAlfred PerlsteinThe retry timeout is the time that RPC
1238360efbdSAlfred Perlsteinwaits for the server to reply before retransmitting the request.
1241fae73b1SRuslan ErmilovThe
1258360efbdSAlfred Perlstein.Fn clnt_control
1261fae73b1SRuslan Ermilovfunction
1278360efbdSAlfred Perlsteinreturns
1288360efbdSAlfred Perlstein.Dv TRUE
1298360efbdSAlfred Perlsteinon success and
1308360efbdSAlfred Perlstein.Dv FALSE
1318360efbdSAlfred Perlsteinon failure.
1328360efbdSAlfred Perlstein.It Fn clnt_create
1338360efbdSAlfred PerlsteinGeneric client creation routine for program
1348360efbdSAlfred Perlstein.Fa prognum
1358360efbdSAlfred Perlsteinand version
1368360efbdSAlfred Perlstein.Fa versnum .
1372efeeba5SRuslan ErmilovThe
1388360efbdSAlfred Perlstein.Fa host
1392efeeba5SRuslan Ermilovargument
1408360efbdSAlfred Perlsteinidentifies the name of the remote host where the server
1418360efbdSAlfred Perlsteinis located.
1422efeeba5SRuslan ErmilovThe
1438360efbdSAlfred Perlstein.Fa nettype
1442efeeba5SRuslan Ermilovargument
1458360efbdSAlfred Perlsteinindicates the class of transport protocol to use.
1468360efbdSAlfred PerlsteinThe transports are tried in left to right order in
1478360efbdSAlfred Perlstein.Ev NETPATH
1488360efbdSAlfred Perlsteinenvironment variable or in top to bottom order in
1498360efbdSAlfred Perlsteinthe netconfig database.
1501fae73b1SRuslan ErmilovThe
1518360efbdSAlfred Perlstein.Fn clnt_create
1521fae73b1SRuslan Ermilovfunction
1538360efbdSAlfred Perlsteintries all the transports of the
1548360efbdSAlfred Perlstein.Fa nettype
1558360efbdSAlfred Perlsteinclass available from the
1568360efbdSAlfred Perlstein.Ev NETPATH
1578360efbdSAlfred Perlsteinenvironment variable and the netconfig database,
1588360efbdSAlfred Perlsteinand chooses the first successful one.
1598360efbdSAlfred PerlsteinA default timeout is set and can be modified using
1608360efbdSAlfred Perlstein.Fn clnt_control .
1618360efbdSAlfred PerlsteinThis routine returns
1628360efbdSAlfred Perlstein.Dv NULL
1638360efbdSAlfred Perlsteinif it fails.
1648360efbdSAlfred PerlsteinThe
1658360efbdSAlfred Perlstein.Fn clnt_pcreateerror
1668360efbdSAlfred Perlsteinroutine can be used to print the reason for failure.
1678360efbdSAlfred Perlstein.Pp
1688360efbdSAlfred PerlsteinNote:
1698360efbdSAlfred Perlstein.Fn clnt_create
1708360efbdSAlfred Perlsteinreturns a valid client handle even
1718360efbdSAlfred Perlsteinif the particular version number supplied to
1728360efbdSAlfred Perlstein.Fn clnt_create
1738360efbdSAlfred Perlsteinis not registered with the
1748360efbdSAlfred Perlstein.Xr rpcbind 8
1758360efbdSAlfred Perlsteinservice.
1768360efbdSAlfred PerlsteinThis mismatch will be discovered by a
1778360efbdSAlfred Perlstein.Fn clnt_call
1788360efbdSAlfred Perlsteinlater (see
1798360efbdSAlfred Perlstein.Xr rpc_clnt_calls 3 ) .
1804e37855eSAlfred Perlstein.It Fn clnt_create_timed
1814e37855eSAlfred PerlsteinGeneric client creation routine which is similar to
1824e37855eSAlfred Perlstein.Fn clnt_create
1832efeeba5SRuslan Ermilovbut which also has the additional argument
1844e37855eSAlfred Perlstein.Fa timeout
1854e37855eSAlfred Perlsteinthat specifies the maximum amount of time allowed for
186bebfe08fSRuslan Ermiloveach transport class tried.
187bebfe08fSRuslan ErmilovIn all other respects, the
1884e37855eSAlfred Perlstein.Fn clnt_create_timed
1894e37855eSAlfred Perlsteincall behaves exactly like the
1904e37855eSAlfred Perlstein.Fn clnt_create
1914e37855eSAlfred Perlsteincall.
1928360efbdSAlfred Perlstein.It Fn clnt_create_vers
1938360efbdSAlfred PerlsteinGeneric client creation routine which is similar to
1948360efbdSAlfred Perlstein.Fn clnt_create
1958360efbdSAlfred Perlsteinbut which also checks for the
1968360efbdSAlfred Perlsteinversion availability.
1972efeeba5SRuslan ErmilovThe
1988360efbdSAlfred Perlstein.Fa host
1992efeeba5SRuslan Ermilovargument
2008360efbdSAlfred Perlsteinidentifies the name of the remote host where the server
2018360efbdSAlfred Perlsteinis located.
2022efeeba5SRuslan ErmilovThe
2038360efbdSAlfred Perlstein.Fa nettype
2042efeeba5SRuslan Ermilovargument
2058360efbdSAlfred Perlsteinindicates the class transport protocols to be used.
2068360efbdSAlfred PerlsteinIf the routine is successful it returns a client handle created for
2078360efbdSAlfred Perlsteinthe highest version between
2088360efbdSAlfred Perlstein.Fa vers_low
2098360efbdSAlfred Perlsteinand
2108360efbdSAlfred Perlstein.Fa vers_high
2118360efbdSAlfred Perlsteinthat is supported by the server.
2122efeeba5SRuslan ErmilovThe
2138360efbdSAlfred Perlstein.Fa vers_outp
2142efeeba5SRuslan Ermilovargument
2158360efbdSAlfred Perlsteinis set to this value.
2168360efbdSAlfred PerlsteinThat is, after a successful return
2178360efbdSAlfred Perlstein.Fa vers_low
2188360efbdSAlfred Perlstein<=
2198360efbdSAlfred Perlstein.Fa *vers_outp
2208360efbdSAlfred Perlstein<=
2218360efbdSAlfred Perlstein.Fa vers_high .
2228360efbdSAlfred PerlsteinIf no version between
2238360efbdSAlfred Perlstein.Fa vers_low
2248360efbdSAlfred Perlsteinand
2258360efbdSAlfred Perlstein.Fa vers_high
2268360efbdSAlfred Perlsteinis supported by the server then the routine fails and returns
2278360efbdSAlfred Perlstein.Dv NULL .
2288360efbdSAlfred PerlsteinA default timeout is set and can be modified using
2298360efbdSAlfred Perlstein.Fn clnt_control .
2308360efbdSAlfred PerlsteinThis routine returns
2318360efbdSAlfred Perlstein.Dv NULL
2328360efbdSAlfred Perlsteinif it fails.
2338360efbdSAlfred PerlsteinThe
2348360efbdSAlfred Perlstein.Fn clnt_pcreateerror
2358360efbdSAlfred Perlsteinroutine can be used to print the reason for failure.
2368360efbdSAlfred PerlsteinNote:
2378360efbdSAlfred Perlstein.Fn clnt_create
2388360efbdSAlfred Perlsteinreturns a valid client handle even
2398360efbdSAlfred Perlsteinif the particular version number supplied to
2408360efbdSAlfred Perlstein.Fn clnt_create
2418360efbdSAlfred Perlsteinis not registered with the
2428360efbdSAlfred Perlstein.Xr rpcbind 8
2438360efbdSAlfred Perlsteinservice.
2448360efbdSAlfred PerlsteinThis mismatch will be discovered by a
2458360efbdSAlfred Perlstein.Fn clnt_call
2468360efbdSAlfred Perlsteinlater (see
2478360efbdSAlfred Perlstein.Xr rpc_clnt_calls 3 ) .
2488360efbdSAlfred PerlsteinHowever,
2498360efbdSAlfred Perlstein.Fn clnt_create_vers
2508360efbdSAlfred Perlsteindoes this for you and returns a valid handle
2518360efbdSAlfred Perlsteinonly if a version within
2528360efbdSAlfred Perlsteinthe range supplied is supported by the server.
2534e37855eSAlfred Perlstein.It Fn clnt_create_vers_timed
2544e37855eSAlfred PerlsteinGeneric client creation routine which is similar to
2554e37855eSAlfred Perlstein.Fn clnt_create_vers
2562efeeba5SRuslan Ermilovbut which also has the additional argument
2574e37855eSAlfred Perlstein.Fa timeout
2584e37855eSAlfred Perlsteinthat specifies the maximum amount of time allowed for
259bebfe08fSRuslan Ermiloveach transport class tried.
260bebfe08fSRuslan ErmilovIn all other respects, the
2614e37855eSAlfred Perlstein.Fn clnt_create_vers_timed
2624e37855eSAlfred Perlsteincall behaves exactly like the
2634e37855eSAlfred Perlstein.Fn clnt_create_vers
2644e37855eSAlfred Perlsteincall.
2658360efbdSAlfred Perlstein.It Fn clnt_destroy
2668360efbdSAlfred PerlsteinA function macro that destroys the client's RPC handle.
2678360efbdSAlfred PerlsteinDestruction usually involves deallocation
2688360efbdSAlfred Perlsteinof private data structures, including
2698360efbdSAlfred Perlstein.Fa clnt
2708360efbdSAlfred Perlsteinitself.
2718360efbdSAlfred PerlsteinUse of
2728360efbdSAlfred Perlstein.Fa clnt
2738360efbdSAlfred Perlsteinis undefined after calling
2748360efbdSAlfred Perlstein.Fn clnt_destroy .
2758360efbdSAlfred PerlsteinIf the RPC library opened the associated file descriptor, or
2768360efbdSAlfred Perlstein.Dv CLSET_FD_CLOSE
2778360efbdSAlfred Perlsteinwas set using
2788360efbdSAlfred Perlstein.Fn clnt_control ,
2798360efbdSAlfred Perlsteinthe file descriptor will be closed.
2808360efbdSAlfred PerlsteinThe caller should call
2818360efbdSAlfred Perlstein.Fn auth_destroy "clnt->cl_auth"
2828360efbdSAlfred Perlstein(before calling
2838360efbdSAlfred Perlstein.Fn clnt_destroy )
2848360efbdSAlfred Perlsteinto destroy the associated
2858360efbdSAlfred Perlstein.Vt AUTH
2868360efbdSAlfred Perlsteinstructure (see
2878360efbdSAlfred Perlstein.Xr rpc_clnt_auth 3 ) .
2888360efbdSAlfred Perlstein.It Fn clnt_dg_create
2898360efbdSAlfred PerlsteinThis routine creates an RPC client for the remote program
2908360efbdSAlfred Perlstein.Fa prognum
2918360efbdSAlfred Perlsteinand version
2928360efbdSAlfred Perlstein.Fa versnum ;
2938360efbdSAlfred Perlsteinthe client uses a connectionless transport.
2948360efbdSAlfred PerlsteinThe remote program is located at address
2958360efbdSAlfred Perlstein.Fa svcaddr .
2962efeeba5SRuslan ErmilovThe
2978360efbdSAlfred Perlstein.Fa fildes
2982efeeba5SRuslan Ermilovargument
2998360efbdSAlfred Perlsteinis an open and bound file descriptor.
3008360efbdSAlfred PerlsteinThis routine will resend the call message in intervals of
3018360efbdSAlfred Perlstein15 seconds until a response is received or until the
3028360efbdSAlfred Perlsteincall times out.
3038360efbdSAlfred PerlsteinThe total time for the call to time out is specified by
3048360efbdSAlfred Perlstein.Fn clnt_call
3058360efbdSAlfred Perlstein(see
3068360efbdSAlfred Perlstein.Fn clnt_call
3078360efbdSAlfred Perlsteinin
3088360efbdSAlfred Perlstein.Xr rpc_clnt_calls 3 ) .
3098360efbdSAlfred PerlsteinThe retry time out and the total time out periods can
3108360efbdSAlfred Perlsteinbe changed using
3118360efbdSAlfred Perlstein.Fn clnt_control .
3128360efbdSAlfred PerlsteinThe user may set the size of the send and receive
3132efeeba5SRuslan Ermilovbuffers with the
3148360efbdSAlfred Perlstein.Fa sendsz
3158360efbdSAlfred Perlsteinand
3162efeeba5SRuslan Ermilov.Fa recvsz
3172efeeba5SRuslan Ermilovarguments;
3188360efbdSAlfred Perlsteinvalues of 0 choose suitable defaults.
3198360efbdSAlfred PerlsteinThis routine returns
3208360efbdSAlfred Perlstein.Dv NULL
3218360efbdSAlfred Perlsteinif it fails.
3228360efbdSAlfred Perlstein.It Fn clnt_pcreateerror
3238360efbdSAlfred PerlsteinPrint a message to standard error indicating
3248360efbdSAlfred Perlsteinwhy a client RPC handle could not be created.
3258360efbdSAlfred PerlsteinThe message is prepended with the string
3268360efbdSAlfred Perlstein.Fa s
3278360efbdSAlfred Perlsteinand a colon, and appended with a newline.
3288360efbdSAlfred Perlstein.It Fn clnt_spcreateerror
3298360efbdSAlfred PerlsteinLike
3308360efbdSAlfred Perlstein.Fn clnt_pcreateerror ,
3318360efbdSAlfred Perlsteinexcept that it returns a string
3328360efbdSAlfred Perlsteininstead of printing to the standard error.
3338360efbdSAlfred PerlsteinA newline is not appended to the message in this case.
3348360efbdSAlfred PerlsteinWarning:
3358360efbdSAlfred Perlsteinreturns a pointer to a buffer that is overwritten
3368360efbdSAlfred Perlsteinon each call.
3378360efbdSAlfred Perlstein.It Fn clnt_raw_create
3388360efbdSAlfred PerlsteinThis routine creates an RPC
3398360efbdSAlfred Perlsteinclient handle for the remote program
3408360efbdSAlfred Perlstein.Fa prognum
3418360efbdSAlfred Perlsteinand version
3428360efbdSAlfred Perlstein.Fa versnum .
3438360efbdSAlfred PerlsteinThe transport used to pass messages to the service is
3448360efbdSAlfred Perlsteina buffer within the process's address space,
3458360efbdSAlfred Perlsteinso the corresponding RPC
3468360efbdSAlfred Perlsteinserver should live in the same address space;
3478360efbdSAlfred Perlstein(see
3488360efbdSAlfred Perlstein.Fn svc_raw_create
3498360efbdSAlfred Perlsteinin
3508360efbdSAlfred Perlstein.Xr rpc_svc_create 3 ) .
3518360efbdSAlfred PerlsteinThis allows simulation of RPC and measurement of
3528360efbdSAlfred PerlsteinRPC overheads, such as round trip times,
3538360efbdSAlfred Perlsteinwithout any kernel or networking interference.
3548360efbdSAlfred PerlsteinThis routine returns
3558360efbdSAlfred Perlstein.Dv NULL
3568360efbdSAlfred Perlsteinif it fails.
3571fae73b1SRuslan ErmilovThe
3588360efbdSAlfred Perlstein.Fn clnt_raw_create
3591fae73b1SRuslan Ermilovfunction
3608360efbdSAlfred Perlsteinshould be called after
3618360efbdSAlfred Perlstein.Fn svc_raw_create .
3628360efbdSAlfred Perlstein.It Fn clnt_tli_create
3638360efbdSAlfred PerlsteinThis routine creates an RPC
3648360efbdSAlfred Perlsteinclient handle for the remote program
3658360efbdSAlfred Perlstein.Fa prognum
3668360efbdSAlfred Perlsteinand version
3678360efbdSAlfred Perlstein.Fa versnum .
3688360efbdSAlfred PerlsteinThe remote program is located at address
3698360efbdSAlfred Perlstein.Fa svcaddr .
3708360efbdSAlfred PerlsteinIf
3718360efbdSAlfred Perlstein.Fa svcaddr
3728360efbdSAlfred Perlsteinis
3738360efbdSAlfred Perlstein.Dv NULL
3748360efbdSAlfred Perlsteinand it is connection-oriented, it is assumed that the file descriptor
3758360efbdSAlfred Perlsteinis connected.
3768360efbdSAlfred PerlsteinFor connectionless transports, if
3778360efbdSAlfred Perlstein.Fa svcaddr
3788360efbdSAlfred Perlsteinis
3798360efbdSAlfred Perlstein.Dv NULL ,
3808360efbdSAlfred Perlstein.Dv RPC_UNKNOWNADDR
3818360efbdSAlfred Perlsteinerror is set.
3822efeeba5SRuslan ErmilovThe
3838360efbdSAlfred Perlstein.Fa fildes
3842efeeba5SRuslan Ermilovargument
3858360efbdSAlfred Perlsteinis a file descriptor which may be open, bound and connected.
3868360efbdSAlfred PerlsteinIf it is
3878360efbdSAlfred Perlstein.Dv RPC_ANYFD ,
3888360efbdSAlfred Perlsteinit opens a file descriptor on the transport specified by
3898360efbdSAlfred Perlstein.Fa netconf .
3908360efbdSAlfred PerlsteinIf
3918360efbdSAlfred Perlstein.Fa fildes
3928360efbdSAlfred Perlsteinis
3938360efbdSAlfred Perlstein.Dv RPC_ANYFD
3948360efbdSAlfred Perlsteinand
3958360efbdSAlfred Perlstein.Fa netconf
3968360efbdSAlfred Perlsteinis
3978360efbdSAlfred Perlstein.Dv NULL ,
3988360efbdSAlfred Perlsteina
3998360efbdSAlfred Perlstein.Dv RPC_UNKNOWNPROTO
4008360efbdSAlfred Perlsteinerror is set.
4018360efbdSAlfred PerlsteinIf
4028360efbdSAlfred Perlstein.Fa fildes
4038360efbdSAlfred Perlsteinis unbound, then it will attempt to bind the descriptor.
4042efeeba5SRuslan ErmilovThe user may specify the size of the buffers with the
4058360efbdSAlfred Perlstein.Fa sendsz
4068360efbdSAlfred Perlsteinand
4072efeeba5SRuslan Ermilov.Fa recvsz
4082efeeba5SRuslan Ermilovarguments;
4098360efbdSAlfred Perlsteinvalues of 0 choose suitable defaults.
4108360efbdSAlfred PerlsteinDepending upon the type of the transport (connection-oriented
4118360efbdSAlfred Perlsteinor connectionless),
4128360efbdSAlfred Perlstein.Fn clnt_tli_create
4138360efbdSAlfred Perlsteincalls appropriate client creation routines.
4148360efbdSAlfred PerlsteinThis routine returns
4158360efbdSAlfred Perlstein.Dv NULL
4168360efbdSAlfred Perlsteinif it fails.
4178360efbdSAlfred PerlsteinThe
4188360efbdSAlfred Perlstein.Fn clnt_pcreateerror
4198360efbdSAlfred Perlsteinroutine can be used to print the reason for failure.
4208360efbdSAlfred PerlsteinThe remote rpcbind
4218360efbdSAlfred Perlsteinservice (see
4228360efbdSAlfred Perlstein.Xr rpcbind 8 )
4238360efbdSAlfred Perlsteinis not consulted for the address of the remote
4248360efbdSAlfred Perlsteinservice.
4258360efbdSAlfred Perlstein.It Fn clnt_tp_create
4268360efbdSAlfred PerlsteinLike
4278360efbdSAlfred Perlstein.Fn clnt_create
4288360efbdSAlfred Perlsteinexcept
4298360efbdSAlfred Perlstein.Fn clnt_tp_create
4308360efbdSAlfred Perlsteintries only one transport specified through
4318360efbdSAlfred Perlstein.Fa netconf .
4321fae73b1SRuslan ErmilovThe
4338360efbdSAlfred Perlstein.Fn clnt_tp_create
4341fae73b1SRuslan Ermilovfunction
4358360efbdSAlfred Perlsteincreates a client handle for the program
4368360efbdSAlfred Perlstein.Fa prognum ,
4378360efbdSAlfred Perlsteinthe version
4388360efbdSAlfred Perlstein.Fa versnum ,
4398360efbdSAlfred Perlsteinand for the transport specified by
4408360efbdSAlfred Perlstein.Fa netconf .
4418360efbdSAlfred PerlsteinDefault options are set,
4428360efbdSAlfred Perlsteinwhich can be changed using
4438360efbdSAlfred Perlstein.Fn clnt_control
4448360efbdSAlfred Perlsteincalls.
4458360efbdSAlfred PerlsteinThe remote rpcbind service on the host
4468360efbdSAlfred Perlstein.Fa host
4478360efbdSAlfred Perlsteinis consulted for the address of the remote service.
4488360efbdSAlfred PerlsteinThis routine returns
4498360efbdSAlfred Perlstein.Dv NULL
4508360efbdSAlfred Perlsteinif it fails.
4518360efbdSAlfred PerlsteinThe
4528360efbdSAlfred Perlstein.Fn clnt_pcreateerror
4538360efbdSAlfred Perlsteinroutine can be used to print the reason for failure.
4544e37855eSAlfred Perlstein.It Fn clnt_tp_create_timed
4554e37855eSAlfred PerlsteinLike
4564e37855eSAlfred Perlstein.Fn clnt_tp_create
4574e37855eSAlfred Perlsteinexcept
4584e37855eSAlfred Perlstein.Fn clnt_tp_create_timed
4592efeeba5SRuslan Ermilovhas the extra argument
4604e37855eSAlfred Perlstein.Fa timeout
4614e37855eSAlfred Perlsteinwhich specifies the maximum time allowed for
462959d6c24SRuslan Ermilovthe creation attempt to succeed.
4634e37855eSAlfred PerlsteinIn all other respects, the
4644e37855eSAlfred Perlstein.Fn clnt_tp_create_timed
4654e37855eSAlfred Perlsteincall behaves exactly like the
4664e37855eSAlfred Perlstein.Fn clnt_tp_create
4674e37855eSAlfred Perlsteincall.
4688360efbdSAlfred Perlstein.It Fn clnt_vc_create
4698360efbdSAlfred PerlsteinThis routine creates an RPC
4708360efbdSAlfred Perlsteinclient for the remote program
4718360efbdSAlfred Perlstein.Fa prognum
4728360efbdSAlfred Perlsteinand version
4738360efbdSAlfred Perlstein.Fa versnum ;
4748360efbdSAlfred Perlsteinthe client uses a connection-oriented transport.
4758360efbdSAlfred PerlsteinThe remote program is located at address
4768360efbdSAlfred Perlstein.Fa svcaddr .
4772efeeba5SRuslan ErmilovThe
4788360efbdSAlfred Perlstein.Fa fildes
4792efeeba5SRuslan Ermilovargument
4808360efbdSAlfred Perlsteinis an open and bound file descriptor.
4818360efbdSAlfred PerlsteinThe user may specify the size of the send and receive buffers
4822efeeba5SRuslan Ermilovwith the
4838360efbdSAlfred Perlstein.Fa sendsz
4848360efbdSAlfred Perlsteinand
4852efeeba5SRuslan Ermilov.Fa recvsz
4862efeeba5SRuslan Ermilovarguments;
4878360efbdSAlfred Perlsteinvalues of 0 choose suitable defaults.
4888360efbdSAlfred PerlsteinThis routine returns
4898360efbdSAlfred Perlstein.Dv NULL
4908360efbdSAlfred Perlsteinif it fails.
4918360efbdSAlfred PerlsteinThe address
4928360efbdSAlfred Perlstein.Fa svcaddr
4938360efbdSAlfred Perlsteinshould not be
4948360efbdSAlfred Perlstein.Dv NULL
4958360efbdSAlfred Perlsteinand should point to the actual address of the remote program.
4961fae73b1SRuslan ErmilovThe
4978360efbdSAlfred Perlstein.Fn clnt_vc_create
4981fae73b1SRuslan Ermilovfunction
4998360efbdSAlfred Perlsteindoes not consult the remote rpcbind service for this information.
5008360efbdSAlfred Perlstein.It Xo
5018360efbdSAlfred Perlstein.Vt "struct rpc_createerr" Va rpc_createerr ;
5028360efbdSAlfred Perlstein.Xc
5038360efbdSAlfred PerlsteinA global variable whose value is set by any RPC
5048360efbdSAlfred Perlsteinclient handle creation routine
5058360efbdSAlfred Perlsteinthat fails.
5068360efbdSAlfred PerlsteinIt is used by the routine
5078360efbdSAlfred Perlstein.Fn clnt_pcreateerror
5088360efbdSAlfred Perlsteinto print the reason for the failure.
5098360efbdSAlfred Perlstein.El
5108360efbdSAlfred Perlstein.Sh SEE ALSO
5118360efbdSAlfred Perlstein.Xr rpc 3 ,
5128360efbdSAlfred Perlstein.Xr rpc_clnt_auth 3 ,
5138360efbdSAlfred Perlstein.Xr rpc_clnt_calls 3 ,
5148360efbdSAlfred Perlstein.Xr rpcbind 8
515