xref: /dflybsd-src/lib/libc/rpc/rpc_clnt_create.3 (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
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