xref: /freebsd/lib/libc/rpc/rpc_clnt_create.3 (revision dc36d6f9bb1753f3808552f3afd30eda9a7b206a)
18360efbdSAlfred Perlstein.\" Copyright 1989 AT&T
28360efbdSAlfred Perlstein.\" Copyright (c) 1988 Sun Microsystems, Inc. - All Rights Reserved.
38360efbdSAlfred Perlstein.\" $NetBSD: rpc_clnt_create.3,v 1.2 2000/06/20 00:53:08 fvdl Exp $
48360efbdSAlfred Perlstein.Dd May 7, 1993
58360efbdSAlfred Perlstein.Dt RPC_CLNT_CREATE 3
68360efbdSAlfred Perlstein.Os
78360efbdSAlfred Perlstein.Sh NAME
88360efbdSAlfred Perlstein.Nm rpc_clnt_create ,
98360efbdSAlfred Perlstein.Nm clnt_control ,
108360efbdSAlfred Perlstein.Nm clnt_create ,
114e37855eSAlfred Perlstein.Nm clnt_create_timed ,
128360efbdSAlfred Perlstein.Nm clnt_create_vers ,
134e37855eSAlfred Perlstein.Nm clnt_create_vers_timed ,
148360efbdSAlfred Perlstein.Nm clnt_destroy ,
158360efbdSAlfred Perlstein.Nm clnt_dg_create ,
168360efbdSAlfred Perlstein.Nm clnt_pcreateerror ,
178360efbdSAlfred Perlstein.Nm clnt_raw_create ,
188360efbdSAlfred Perlstein.Nm clnt_spcreateerror ,
198360efbdSAlfred Perlstein.Nm clnt_tli_create ,
208360efbdSAlfred Perlstein.Nm clnt_tp_create ,
214e37855eSAlfred Perlstein.Nm clnt_tp_create_timed ,
228360efbdSAlfred Perlstein.Nm clnt_vc_create ,
238360efbdSAlfred Perlstein.Nm rpc_createerr
248360efbdSAlfred Perlstein.Nd "library routines for dealing with creation and manipulation of"
258360efbdSAlfred Perlstein.Vt CLIENT
268360efbdSAlfred Perlsteinhandles
278360efbdSAlfred Perlstein.Sh LIBRARY
288360efbdSAlfred Perlstein.Lb libc
298360efbdSAlfred Perlstein.Sh SYNOPSIS
3032eef9aeSRuslan Ermilov.In rpc/rpc.h
318360efbdSAlfred Perlstein.Ft bool_t
328360efbdSAlfred Perlstein.Fn clnt_control "CLIENT *clnt" "const u_int req" "char *info"
338360efbdSAlfred Perlstein.Ft "CLIENT *"
348360efbdSAlfred Perlstein.Fn clnt_create "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const char *nettype"
358360efbdSAlfred Perlstein.Ft "CLIENT *"
364e37855eSAlfred Perlstein.Fn clnt_create_timed "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const char *nettype" "const struct timeval *timeout"
374e37855eSAlfred Perlstein.Ft "CLIENT *"
38db7534cfSBruce 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"
394e37855eSAlfred Perlstein.Ft "CLIENT *"
4079be508cSRuslan 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"
418360efbdSAlfred Perlstein.Ft void
42224e22e6SMike Heffner.Fn clnt_destroy "CLIENT *clnt"
438360efbdSAlfred Perlstein.Ft "CLIENT *"
448360efbdSAlfred 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"
458360efbdSAlfred Perlstein.Ft void
468360efbdSAlfred Perlstein.Fn clnt_pcreateerror "const char *s"
478360efbdSAlfred Perlstein.Ft "char *"
488360efbdSAlfred Perlstein.Fn clnt_spcreateerror "const char *s"
498360efbdSAlfred Perlstein.Ft "CLIENT *"
508360efbdSAlfred Perlstein.Fn clnt_raw_create "const rpcprog_t prognum" "const rpcvers_t versnum"
518360efbdSAlfred Perlstein.Ft "CLIENT *"
5279be508cSRuslan 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"
538360efbdSAlfred Perlstein.Ft "CLIENT *"
548360efbdSAlfred Perlstein.Fn clnt_tp_create "const char * host" "const rpcprog_t prognum" "const rpcvers_t versnum" "const struct netconfig *netconf"
558360efbdSAlfred Perlstein.Ft "CLIENT *"
564e37855eSAlfred 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"
574e37855eSAlfred Perlstein.Ft "CLIENT *"
58886ee6f6SAlfred 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"
598360efbdSAlfred Perlstein.Sh DESCRIPTION
608360efbdSAlfred PerlsteinRPC library routines allow C language programs to make procedure
618360efbdSAlfred Perlsteincalls on other machines across the network.
628360efbdSAlfred PerlsteinFirst a
638360efbdSAlfred Perlstein.Vt CLIENT
648360efbdSAlfred Perlsteinhandle is created and then the client calls a procedure to send a
658360efbdSAlfred Perlsteinrequest to the server.
668360efbdSAlfred PerlsteinOn receipt of the request, the server calls a dispatch routine
678360efbdSAlfred Perlsteinto perform the requested service, and then sends a reply.
688360efbdSAlfred Perlstein.Sh Routines
698360efbdSAlfred Perlstein.Bl -tag -width YYYYYYY
708360efbdSAlfred Perlstein.It Fn clnt_control
718360efbdSAlfred PerlsteinA function macro to change or retrieve various information
728360efbdSAlfred Perlsteinabout a client object.
732efeeba5SRuslan ErmilovThe
748360efbdSAlfred Perlstein.Fa req
752efeeba5SRuslan Ermilovargument
768360efbdSAlfred Perlsteinindicates the type of operation, and
778360efbdSAlfred Perlstein.Fa info
788360efbdSAlfred Perlsteinis a pointer to the information.
798360efbdSAlfred PerlsteinFor both connectionless and connection-oriented transports,
808360efbdSAlfred Perlsteinthe supported values of
818360efbdSAlfred Perlstein.Fa req
828360efbdSAlfred Perlsteinand their argument types and what they do are:
838360efbdSAlfred Perlstein.Bl -column "CLSET_FD_NCLOSE" "struct timeval *" "set total timeout"
848360efbdSAlfred Perlstein.It Dv CLSET_TIMEOUT Ta "struct timeval *" Ta "set total timeout"
858360efbdSAlfred Perlstein.It Dv CLGET_TIMEOUT Ta "struct timeval *" Ta "get total timeout"
868360efbdSAlfred Perlstein.El
878360efbdSAlfred Perlstein.Pp
888360efbdSAlfred PerlsteinNote:
898360efbdSAlfred Perlsteinif you set the timeout using
908360efbdSAlfred Perlstein.Fn clnt_control ,
918360efbdSAlfred Perlsteinthe timeout argument passed by
928360efbdSAlfred Perlstein.Fn clnt_call
938360efbdSAlfred Perlsteinis ignored in all subsequent calls.
948360efbdSAlfred Perlstein.Pp
958360efbdSAlfred PerlsteinNote:
968360efbdSAlfred PerlsteinIf you set the timeout value to 0,
978360efbdSAlfred Perlstein.Fn clnt_control
988360efbdSAlfred Perlsteinimmediately returns an error
998360efbdSAlfred Perlstein.Pq Dv RPC_TIMEDOUT .
1002efeeba5SRuslan ErmilovSet the timeout argument to 0 for batching calls.
101a73a3ab5SRuslan Ermilov.Bl -column CLSET_FD_NCLOSE "struct timeval *"
1028360efbdSAlfred Perlstein.It Dv CLGET_SVC_ADDR Ta "struct netbuf *" Ta "get servers address"
1038360efbdSAlfred Perlstein.It Dv CLGET_FD Ta "int *" Ta "get fd from handle"
1048360efbdSAlfred Perlstein.It Dv CLSET_FD_CLOSE Ta "void" Ta "close fd on destroy"
1050227791bSRuslan Ermilov.It Dv CLSET_FD_NCLOSE Ta void Ta "do not close fd on destroy"
106*6b99842aSEd Schouten.It Dv CLGET_VERS Ta "uint32_t *" Ta "get RPC program version"
107*6b99842aSEd Schouten.It Dv CLSET_VERS Ta "uint32_t *" Ta "set RPC program version"
108*6b99842aSEd Schouten.It Dv CLGET_XID Ta "uint32_t *" Ta "get XID of previous call"
109*6b99842aSEd Schouten.It Dv CLSET_XID Ta "uint32_t *" Ta "set XID of next call"
1108360efbdSAlfred Perlstein.El
1118360efbdSAlfred Perlstein.Pp
1128360efbdSAlfred PerlsteinThe following operations are valid for connectionless transports only:
1138360efbdSAlfred Perlstein.Bl -column CLSET_RETRY_TIMEOUT "struct timeval *" "set total timeout"
1148360efbdSAlfred Perlstein.It Dv CLSET_RETRY_TIMEOUT Ta "struct timeval *" Ta "set the retry timeout"
1158360efbdSAlfred Perlstein.It Dv CLGET_RETRY_TIMEOUT Ta "struct timeval *" Ta "get the retry timeout"
11632de72d2SIan Dowse.It Dv CLSET_CONNECT Ta Vt "int *" Ta use Xr connect 2
1178360efbdSAlfred Perlstein.El
1188360efbdSAlfred Perlstein.Pp
1198360efbdSAlfred PerlsteinThe retry timeout is the time that RPC
1208360efbdSAlfred Perlsteinwaits for the server to reply before retransmitting the request.
1211fae73b1SRuslan ErmilovThe
1228360efbdSAlfred Perlstein.Fn clnt_control
1231fae73b1SRuslan Ermilovfunction
1248360efbdSAlfred Perlsteinreturns
1258360efbdSAlfred Perlstein.Dv TRUE
1268360efbdSAlfred Perlsteinon success and
1278360efbdSAlfred Perlstein.Dv FALSE
1288360efbdSAlfred Perlsteinon failure.
1298360efbdSAlfred Perlstein.It Fn clnt_create
1308360efbdSAlfred PerlsteinGeneric client creation routine for program
1318360efbdSAlfred Perlstein.Fa prognum
1328360efbdSAlfred Perlsteinand version
1338360efbdSAlfred Perlstein.Fa versnum .
1342efeeba5SRuslan ErmilovThe
1358360efbdSAlfred Perlstein.Fa host
1362efeeba5SRuslan Ermilovargument
1378360efbdSAlfred Perlsteinidentifies the name of the remote host where the server
1388360efbdSAlfred Perlsteinis located.
1392efeeba5SRuslan ErmilovThe
1408360efbdSAlfred Perlstein.Fa nettype
1412efeeba5SRuslan Ermilovargument
1428360efbdSAlfred Perlsteinindicates the class of transport protocol to use.
1438360efbdSAlfred PerlsteinThe transports are tried in left to right order in
1448360efbdSAlfred Perlstein.Ev NETPATH
1458360efbdSAlfred Perlsteinenvironment variable or in top to bottom order in
1468360efbdSAlfred Perlsteinthe netconfig database.
1471fae73b1SRuslan ErmilovThe
1488360efbdSAlfred Perlstein.Fn clnt_create
1491fae73b1SRuslan Ermilovfunction
1508360efbdSAlfred Perlsteintries all the transports of the
1518360efbdSAlfred Perlstein.Fa nettype
1528360efbdSAlfred Perlsteinclass available from the
1538360efbdSAlfred Perlstein.Ev NETPATH
1548360efbdSAlfred Perlsteinenvironment variable and the netconfig database,
1558360efbdSAlfred Perlsteinand chooses the first successful one.
1568360efbdSAlfred PerlsteinA default timeout is set and can be modified using
1578360efbdSAlfred Perlstein.Fn clnt_control .
1588360efbdSAlfred PerlsteinThis routine returns
1598360efbdSAlfred Perlstein.Dv NULL
1608360efbdSAlfred Perlsteinif it fails.
1618360efbdSAlfred PerlsteinThe
1628360efbdSAlfred Perlstein.Fn clnt_pcreateerror
1638360efbdSAlfred Perlsteinroutine can be used to print the reason for failure.
1648360efbdSAlfred Perlstein.Pp
1658360efbdSAlfred PerlsteinNote:
1668360efbdSAlfred Perlstein.Fn clnt_create
1678360efbdSAlfred Perlsteinreturns a valid client handle even
1688360efbdSAlfred Perlsteinif the particular version number supplied to
1698360efbdSAlfred Perlstein.Fn clnt_create
1708360efbdSAlfred Perlsteinis not registered with the
1718360efbdSAlfred Perlstein.Xr rpcbind 8
1728360efbdSAlfred Perlsteinservice.
1738360efbdSAlfred PerlsteinThis mismatch will be discovered by a
1748360efbdSAlfred Perlstein.Fn clnt_call
1758360efbdSAlfred Perlsteinlater (see
1768360efbdSAlfred Perlstein.Xr rpc_clnt_calls 3 ) .
1774e37855eSAlfred Perlstein.It Fn clnt_create_timed
1784e37855eSAlfred PerlsteinGeneric client creation routine which is similar to
1794e37855eSAlfred Perlstein.Fn clnt_create
1802efeeba5SRuslan Ermilovbut which also has the additional argument
1814e37855eSAlfred Perlstein.Fa timeout
1824e37855eSAlfred Perlsteinthat specifies the maximum amount of time allowed for
183bebfe08fSRuslan Ermiloveach transport class tried.
184bebfe08fSRuslan ErmilovIn all other respects, the
1854e37855eSAlfred Perlstein.Fn clnt_create_timed
1864e37855eSAlfred Perlsteincall behaves exactly like the
1874e37855eSAlfred Perlstein.Fn clnt_create
1884e37855eSAlfred Perlsteincall.
1898360efbdSAlfred Perlstein.It Fn clnt_create_vers
1908360efbdSAlfred PerlsteinGeneric client creation routine which is similar to
1918360efbdSAlfred Perlstein.Fn clnt_create
1928360efbdSAlfred Perlsteinbut which also checks for the
1938360efbdSAlfred Perlsteinversion availability.
1942efeeba5SRuslan ErmilovThe
1958360efbdSAlfred Perlstein.Fa host
1962efeeba5SRuslan Ermilovargument
1978360efbdSAlfred Perlsteinidentifies the name of the remote host where the server
1988360efbdSAlfred Perlsteinis located.
1992efeeba5SRuslan ErmilovThe
2008360efbdSAlfred Perlstein.Fa nettype
2012efeeba5SRuslan Ermilovargument
2028360efbdSAlfred Perlsteinindicates the class transport protocols to be used.
2038360efbdSAlfred PerlsteinIf the routine is successful it returns a client handle created for
2048360efbdSAlfred Perlsteinthe highest version between
2058360efbdSAlfred Perlstein.Fa vers_low
2068360efbdSAlfred Perlsteinand
2078360efbdSAlfred Perlstein.Fa vers_high
2088360efbdSAlfred Perlsteinthat is supported by the server.
2092efeeba5SRuslan ErmilovThe
2108360efbdSAlfred Perlstein.Fa vers_outp
2112efeeba5SRuslan Ermilovargument
2128360efbdSAlfred Perlsteinis set to this value.
2138360efbdSAlfred PerlsteinThat is, after a successful return
2148360efbdSAlfred Perlstein.Fa vers_low
2158360efbdSAlfred Perlstein<=
2168360efbdSAlfred Perlstein.Fa *vers_outp
2178360efbdSAlfred Perlstein<=
2188360efbdSAlfred Perlstein.Fa vers_high .
2198360efbdSAlfred PerlsteinIf no version between
2208360efbdSAlfred Perlstein.Fa vers_low
2218360efbdSAlfred Perlsteinand
2228360efbdSAlfred Perlstein.Fa vers_high
2238360efbdSAlfred Perlsteinis supported by the server then the routine fails and returns
2248360efbdSAlfred Perlstein.Dv NULL .
2258360efbdSAlfred PerlsteinA default timeout is set and can be modified using
2268360efbdSAlfred Perlstein.Fn clnt_control .
2278360efbdSAlfred PerlsteinThis routine returns
2288360efbdSAlfred Perlstein.Dv NULL
2298360efbdSAlfred Perlsteinif it fails.
2308360efbdSAlfred PerlsteinThe
2318360efbdSAlfred Perlstein.Fn clnt_pcreateerror
2328360efbdSAlfred Perlsteinroutine can be used to print the reason for failure.
2338360efbdSAlfred PerlsteinNote:
2348360efbdSAlfred Perlstein.Fn clnt_create
2358360efbdSAlfred Perlsteinreturns a valid client handle even
2368360efbdSAlfred Perlsteinif the particular version number supplied to
2378360efbdSAlfred Perlstein.Fn clnt_create
2388360efbdSAlfred Perlsteinis not registered with the
2398360efbdSAlfred Perlstein.Xr rpcbind 8
2408360efbdSAlfred Perlsteinservice.
2418360efbdSAlfred PerlsteinThis mismatch will be discovered by a
2428360efbdSAlfred Perlstein.Fn clnt_call
2438360efbdSAlfred Perlsteinlater (see
2448360efbdSAlfred Perlstein.Xr rpc_clnt_calls 3 ) .
2458360efbdSAlfred PerlsteinHowever,
2468360efbdSAlfred Perlstein.Fn clnt_create_vers
2478360efbdSAlfred Perlsteindoes this for you and returns a valid handle
2488360efbdSAlfred Perlsteinonly if a version within
2498360efbdSAlfred Perlsteinthe range supplied is supported by the server.
2504e37855eSAlfred Perlstein.It Fn clnt_create_vers_timed
2514e37855eSAlfred PerlsteinGeneric client creation routine which is similar to
2524e37855eSAlfred Perlstein.Fn clnt_create_vers
2532efeeba5SRuslan Ermilovbut which also has the additional argument
2544e37855eSAlfred Perlstein.Fa timeout
2554e37855eSAlfred Perlsteinthat specifies the maximum amount of time allowed for
256bebfe08fSRuslan Ermiloveach transport class tried.
257bebfe08fSRuslan ErmilovIn all other respects, the
2584e37855eSAlfred Perlstein.Fn clnt_create_vers_timed
2594e37855eSAlfred Perlsteincall behaves exactly like the
2604e37855eSAlfred Perlstein.Fn clnt_create_vers
2614e37855eSAlfred Perlsteincall.
2628360efbdSAlfred Perlstein.It Fn clnt_destroy
2638360efbdSAlfred PerlsteinA function macro that destroys the client's RPC handle.
2648360efbdSAlfred PerlsteinDestruction usually involves deallocation
2658360efbdSAlfred Perlsteinof private data structures, including
2668360efbdSAlfred Perlstein.Fa clnt
2678360efbdSAlfred Perlsteinitself.
2688360efbdSAlfred PerlsteinUse of
2698360efbdSAlfred Perlstein.Fa clnt
2708360efbdSAlfred Perlsteinis undefined after calling
2718360efbdSAlfred Perlstein.Fn clnt_destroy .
2728360efbdSAlfred PerlsteinIf the RPC library opened the associated file descriptor, or
2738360efbdSAlfred Perlstein.Dv CLSET_FD_CLOSE
2748360efbdSAlfred Perlsteinwas set using
2758360efbdSAlfred Perlstein.Fn clnt_control ,
2768360efbdSAlfred Perlsteinthe file descriptor will be closed.
2778360efbdSAlfred PerlsteinThe caller should call
2788360efbdSAlfred Perlstein.Fn auth_destroy "clnt->cl_auth"
2798360efbdSAlfred Perlstein(before calling
2808360efbdSAlfred Perlstein.Fn clnt_destroy )
2818360efbdSAlfred Perlsteinto destroy the associated
2828360efbdSAlfred Perlstein.Vt AUTH
2838360efbdSAlfred Perlsteinstructure (see
2848360efbdSAlfred Perlstein.Xr rpc_clnt_auth 3 ) .
2858360efbdSAlfred Perlstein.It Fn clnt_dg_create
2868360efbdSAlfred PerlsteinThis routine creates an RPC client for the remote program
2878360efbdSAlfred Perlstein.Fa prognum
2888360efbdSAlfred Perlsteinand version
2898360efbdSAlfred Perlstein.Fa versnum ;
2908360efbdSAlfred Perlsteinthe client uses a connectionless transport.
2918360efbdSAlfred PerlsteinThe remote program is located at address
2928360efbdSAlfred Perlstein.Fa svcaddr .
2932efeeba5SRuslan ErmilovThe
2948360efbdSAlfred Perlstein.Fa fildes
2952efeeba5SRuslan Ermilovargument
2968360efbdSAlfred Perlsteinis an open and bound file descriptor.
2978360efbdSAlfred PerlsteinThis routine will resend the call message in intervals of
2988360efbdSAlfred Perlstein15 seconds until a response is received or until the
2998360efbdSAlfred Perlsteincall times out.
3008360efbdSAlfred PerlsteinThe total time for the call to time out is specified by
3018360efbdSAlfred Perlstein.Fn clnt_call
3028360efbdSAlfred Perlstein(see
3038360efbdSAlfred Perlstein.Fn clnt_call
3048360efbdSAlfred Perlsteinin
3058360efbdSAlfred Perlstein.Xr rpc_clnt_calls 3 ) .
3068360efbdSAlfred PerlsteinThe retry time out and the total time out periods can
3078360efbdSAlfred Perlsteinbe changed using
3088360efbdSAlfred Perlstein.Fn clnt_control .
3098360efbdSAlfred PerlsteinThe user may set the size of the send and receive
3102efeeba5SRuslan Ermilovbuffers with the
3118360efbdSAlfred Perlstein.Fa sendsz
3128360efbdSAlfred Perlsteinand
3132efeeba5SRuslan Ermilov.Fa recvsz
3142efeeba5SRuslan Ermilovarguments;
3158360efbdSAlfred Perlsteinvalues of 0 choose suitable defaults.
3168360efbdSAlfred PerlsteinThis routine returns
3178360efbdSAlfred Perlstein.Dv NULL
3188360efbdSAlfred Perlsteinif it fails.
3198360efbdSAlfred Perlstein.It Fn clnt_pcreateerror
3208360efbdSAlfred PerlsteinPrint a message to standard error indicating
3218360efbdSAlfred Perlsteinwhy a client RPC handle could not be created.
3228360efbdSAlfred PerlsteinThe message is prepended with the string
3238360efbdSAlfred Perlstein.Fa s
3248360efbdSAlfred Perlsteinand a colon, and appended with a newline.
3258360efbdSAlfred Perlstein.It Fn clnt_spcreateerror
3268360efbdSAlfred PerlsteinLike
3278360efbdSAlfred Perlstein.Fn clnt_pcreateerror ,
3288360efbdSAlfred Perlsteinexcept that it returns a string
3298360efbdSAlfred Perlsteininstead of printing to the standard error.
3308360efbdSAlfred PerlsteinA newline is not appended to the message in this case.
3318360efbdSAlfred PerlsteinWarning:
3328360efbdSAlfred Perlsteinreturns a pointer to a buffer that is overwritten
3338360efbdSAlfred Perlsteinon each call.
3348360efbdSAlfred Perlstein.It Fn clnt_raw_create
3358360efbdSAlfred PerlsteinThis routine creates an RPC
3368360efbdSAlfred Perlsteinclient handle for the remote program
3378360efbdSAlfred Perlstein.Fa prognum
3388360efbdSAlfred Perlsteinand version
3398360efbdSAlfred Perlstein.Fa versnum .
3408360efbdSAlfred PerlsteinThe transport used to pass messages to the service is
3418360efbdSAlfred Perlsteina buffer within the process's address space,
3428360efbdSAlfred Perlsteinso the corresponding RPC
3438360efbdSAlfred Perlsteinserver should live in the same address space;
3448360efbdSAlfred Perlstein(see
3458360efbdSAlfred Perlstein.Fn svc_raw_create
3468360efbdSAlfred Perlsteinin
3478360efbdSAlfred Perlstein.Xr rpc_svc_create 3 ) .
3488360efbdSAlfred PerlsteinThis allows simulation of RPC and measurement of
3498360efbdSAlfred PerlsteinRPC overheads, such as round trip times,
3508360efbdSAlfred Perlsteinwithout any kernel or networking interference.
3518360efbdSAlfred PerlsteinThis routine returns
3528360efbdSAlfred Perlstein.Dv NULL
3538360efbdSAlfred Perlsteinif it fails.
3541fae73b1SRuslan ErmilovThe
3558360efbdSAlfred Perlstein.Fn clnt_raw_create
3561fae73b1SRuslan Ermilovfunction
3578360efbdSAlfred Perlsteinshould be called after
3588360efbdSAlfred Perlstein.Fn svc_raw_create .
3598360efbdSAlfred Perlstein.It Fn clnt_tli_create
3608360efbdSAlfred PerlsteinThis routine creates an RPC
3618360efbdSAlfred Perlsteinclient handle for the remote program
3628360efbdSAlfred Perlstein.Fa prognum
3638360efbdSAlfred Perlsteinand version
3648360efbdSAlfred Perlstein.Fa versnum .
3658360efbdSAlfred PerlsteinThe remote program is located at address
3668360efbdSAlfred Perlstein.Fa svcaddr .
3678360efbdSAlfred PerlsteinIf
3688360efbdSAlfred Perlstein.Fa svcaddr
3698360efbdSAlfred Perlsteinis
3708360efbdSAlfred Perlstein.Dv NULL
3718360efbdSAlfred Perlsteinand it is connection-oriented, it is assumed that the file descriptor
3728360efbdSAlfred Perlsteinis connected.
3738360efbdSAlfred PerlsteinFor connectionless transports, if
3748360efbdSAlfred Perlstein.Fa svcaddr
3758360efbdSAlfred Perlsteinis
3768360efbdSAlfred Perlstein.Dv NULL ,
3778360efbdSAlfred Perlstein.Dv RPC_UNKNOWNADDR
3788360efbdSAlfred Perlsteinerror is set.
3792efeeba5SRuslan ErmilovThe
3808360efbdSAlfred Perlstein.Fa fildes
3812efeeba5SRuslan Ermilovargument
3828360efbdSAlfred Perlsteinis a file descriptor which may be open, bound and connected.
3838360efbdSAlfred PerlsteinIf it is
3848360efbdSAlfred Perlstein.Dv RPC_ANYFD ,
3858360efbdSAlfred Perlsteinit opens a file descriptor on the transport specified by
3868360efbdSAlfred Perlstein.Fa netconf .
3878360efbdSAlfred PerlsteinIf
3888360efbdSAlfred Perlstein.Fa fildes
3898360efbdSAlfred Perlsteinis
3908360efbdSAlfred Perlstein.Dv RPC_ANYFD
3918360efbdSAlfred Perlsteinand
3928360efbdSAlfred Perlstein.Fa netconf
3938360efbdSAlfred Perlsteinis
3948360efbdSAlfred Perlstein.Dv NULL ,
3958360efbdSAlfred Perlsteina
3968360efbdSAlfred Perlstein.Dv RPC_UNKNOWNPROTO
3978360efbdSAlfred Perlsteinerror is set.
3988360efbdSAlfred PerlsteinIf
3998360efbdSAlfred Perlstein.Fa fildes
4008360efbdSAlfred Perlsteinis unbound, then it will attempt to bind the descriptor.
4012efeeba5SRuslan ErmilovThe user may specify the size of the buffers with the
4028360efbdSAlfred Perlstein.Fa sendsz
4038360efbdSAlfred Perlsteinand
4042efeeba5SRuslan Ermilov.Fa recvsz
4052efeeba5SRuslan Ermilovarguments;
4068360efbdSAlfred Perlsteinvalues of 0 choose suitable defaults.
4078360efbdSAlfred PerlsteinDepending upon the type of the transport (connection-oriented
4088360efbdSAlfred Perlsteinor connectionless),
4098360efbdSAlfred Perlstein.Fn clnt_tli_create
4108360efbdSAlfred Perlsteincalls appropriate client creation routines.
4118360efbdSAlfred PerlsteinThis routine returns
4128360efbdSAlfred Perlstein.Dv NULL
4138360efbdSAlfred Perlsteinif it fails.
4148360efbdSAlfred PerlsteinThe
4158360efbdSAlfred Perlstein.Fn clnt_pcreateerror
4168360efbdSAlfred Perlsteinroutine can be used to print the reason for failure.
4178360efbdSAlfred PerlsteinThe remote rpcbind
4188360efbdSAlfred Perlsteinservice (see
4198360efbdSAlfred Perlstein.Xr rpcbind 8 )
4208360efbdSAlfred Perlsteinis not consulted for the address of the remote
4218360efbdSAlfred Perlsteinservice.
4228360efbdSAlfred Perlstein.It Fn clnt_tp_create
4238360efbdSAlfred PerlsteinLike
4248360efbdSAlfred Perlstein.Fn clnt_create
4258360efbdSAlfred Perlsteinexcept
4268360efbdSAlfred Perlstein.Fn clnt_tp_create
4278360efbdSAlfred Perlsteintries only one transport specified through
4288360efbdSAlfred Perlstein.Fa netconf .
4291fae73b1SRuslan ErmilovThe
4308360efbdSAlfred Perlstein.Fn clnt_tp_create
4311fae73b1SRuslan Ermilovfunction
4328360efbdSAlfred Perlsteincreates a client handle for the program
4338360efbdSAlfred Perlstein.Fa prognum ,
4348360efbdSAlfred Perlsteinthe version
4358360efbdSAlfred Perlstein.Fa versnum ,
4368360efbdSAlfred Perlsteinand for the transport specified by
4378360efbdSAlfred Perlstein.Fa netconf .
4388360efbdSAlfred PerlsteinDefault options are set,
4398360efbdSAlfred Perlsteinwhich can be changed using
4408360efbdSAlfred Perlstein.Fn clnt_control
4418360efbdSAlfred Perlsteincalls.
4428360efbdSAlfred PerlsteinThe remote rpcbind service on the host
4438360efbdSAlfred Perlstein.Fa host
4448360efbdSAlfred Perlsteinis consulted for the address of the remote service.
4458360efbdSAlfred PerlsteinThis routine returns
4468360efbdSAlfred Perlstein.Dv NULL
4478360efbdSAlfred Perlsteinif it fails.
4488360efbdSAlfred PerlsteinThe
4498360efbdSAlfred Perlstein.Fn clnt_pcreateerror
4508360efbdSAlfred Perlsteinroutine can be used to print the reason for failure.
4514e37855eSAlfred Perlstein.It Fn clnt_tp_create_timed
4524e37855eSAlfred PerlsteinLike
4534e37855eSAlfred Perlstein.Fn clnt_tp_create
4544e37855eSAlfred Perlsteinexcept
4554e37855eSAlfred Perlstein.Fn clnt_tp_create_timed
4562efeeba5SRuslan Ermilovhas the extra argument
4574e37855eSAlfred Perlstein.Fa timeout
4584e37855eSAlfred Perlsteinwhich specifies the maximum time allowed for
459959d6c24SRuslan Ermilovthe creation attempt to succeed.
4604e37855eSAlfred PerlsteinIn all other respects, the
4614e37855eSAlfred Perlstein.Fn clnt_tp_create_timed
4624e37855eSAlfred Perlsteincall behaves exactly like the
4634e37855eSAlfred Perlstein.Fn clnt_tp_create
4644e37855eSAlfred Perlsteincall.
4658360efbdSAlfred Perlstein.It Fn clnt_vc_create
4668360efbdSAlfred PerlsteinThis routine creates an RPC
4678360efbdSAlfred Perlsteinclient for the remote program
4688360efbdSAlfred Perlstein.Fa prognum
4698360efbdSAlfred Perlsteinand version
4708360efbdSAlfred Perlstein.Fa versnum ;
4718360efbdSAlfred Perlsteinthe client uses a connection-oriented transport.
4728360efbdSAlfred PerlsteinThe remote program is located at address
4738360efbdSAlfred Perlstein.Fa svcaddr .
4742efeeba5SRuslan ErmilovThe
4758360efbdSAlfred Perlstein.Fa fildes
4762efeeba5SRuslan Ermilovargument
4778360efbdSAlfred Perlsteinis an open and bound file descriptor.
4788360efbdSAlfred PerlsteinThe user may specify the size of the send and receive buffers
4792efeeba5SRuslan Ermilovwith the
4808360efbdSAlfred Perlstein.Fa sendsz
4818360efbdSAlfred Perlsteinand
4822efeeba5SRuslan Ermilov.Fa recvsz
4832efeeba5SRuslan Ermilovarguments;
4848360efbdSAlfred Perlsteinvalues of 0 choose suitable defaults.
4858360efbdSAlfred PerlsteinThis routine returns
4868360efbdSAlfred Perlstein.Dv NULL
4878360efbdSAlfred Perlsteinif it fails.
4888360efbdSAlfred PerlsteinThe address
4898360efbdSAlfred Perlstein.Fa svcaddr
4908360efbdSAlfred Perlsteinshould not be
4918360efbdSAlfred Perlstein.Dv NULL
4928360efbdSAlfred Perlsteinand should point to the actual address of the remote program.
4931fae73b1SRuslan ErmilovThe
4948360efbdSAlfred Perlstein.Fn clnt_vc_create
4951fae73b1SRuslan Ermilovfunction
4968360efbdSAlfred Perlsteindoes not consult the remote rpcbind service for this information.
4978360efbdSAlfred Perlstein.It Xo
4988360efbdSAlfred Perlstein.Vt "struct rpc_createerr" Va rpc_createerr ;
4998360efbdSAlfred Perlstein.Xc
5008360efbdSAlfred PerlsteinA global variable whose value is set by any RPC
5018360efbdSAlfred Perlsteinclient handle creation routine
5028360efbdSAlfred Perlsteinthat fails.
5038360efbdSAlfred PerlsteinIt is used by the routine
5048360efbdSAlfred Perlstein.Fn clnt_pcreateerror
5058360efbdSAlfred Perlsteinto print the reason for the failure.
5068360efbdSAlfred Perlstein.El
5078360efbdSAlfred Perlstein.Sh SEE ALSO
5088360efbdSAlfred Perlstein.Xr rpc 3 ,
5098360efbdSAlfred Perlstein.Xr rpc_clnt_auth 3 ,
5108360efbdSAlfred Perlstein.Xr rpc_clnt_calls 3 ,
5118360efbdSAlfred Perlstein.Xr rpcbind 8
512