summaryrefslogtreecommitdiffstats
path: root/lib/libc/rpc/rpc.3
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/rpc/rpc.3')
-rw-r--r--lib/libc/rpc/rpc.31992
1 files changed, 490 insertions, 1502 deletions
diff --git a/lib/libc/rpc/rpc.3 b/lib/libc/rpc/rpc.3
index e2c73cf..fdd2851 100644
--- a/lib/libc/rpc/rpc.3
+++ b/lib/libc/rpc/rpc.3
@@ -1,1519 +1,507 @@
-.\" @(#)rpc.3n 2.4 88/08/08 4.0 RPCSRC; from 1.19 88/06/24 SMI
+.\" @(#)rpc.3n 1.31 93/08/31 SMI; from SVr4
+.\" Copyright 1989 AT&T
+.\" $NetBSD: rpc.3,v 1.10 2000/06/02 23:11:12 fvdl Exp $
.\" $FreeBSD$
-.\"
-.Dd February 16, 1988
+.Dd May 7, 1993
.Dt RPC 3
.Os
.Sh NAME
.Nm rpc
-.Nd "library routines for remote procedure calls"
+.Nd library routines for remote procedure calls
.Sh LIBRARY
.Lb libc
.Sh SYNOPSIS
-.Fd "#include <rpc/rpc.h>"
-.Pp
-See
-.Sx DESCRIPTION
-for function declarations.
+.Fd #include <rpc/rpc.h>
+.Fd #include <netconfig.h>
.Sh DESCRIPTION
-These routines allow C programs to make procedure
-calls on other machines across the network.
-First, the client calls a procedure to send a
-data packet to the server.
-Upon receipt of the packet, the server calls a dispatch routine
-to perform the requested service, and then sends back a
-reply.
-Finally, the procedure call returns to the client.
-.Pp
-Routines that are used for Secure
-.Tn RPC ( DES
-authentication) are described in
-.Xr rpc_secure 3 .
-Secure
-.Tn RPC
-can be used only if
-.Tn DES
-encryption is available.
-.Bl -tag -width indent -compact
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn auth_destroy "AUTH *auth"
-.Xc
-.Pp
-A macro that destroys the authentication information associated with
-.Fa auth .
-Destruction usually involves deallocation of private data
-structures.
-The use of
-.Fa auth
-is undefined after calling
-.Fn auth_destroy .
-.Pp
-.It Xo
-.Ft "AUTH *"
-.Xc
-.It Xo
-.Fn authnone_create
-.Xc
-.Pp
-Create and return an
-.Tn RPC
-authentication handle that passes nonusable authentication
-information with each remote procedure call.
-This is the
-default authentication used by
-.Tn RPC .
-.Pp
-.It Xo
-.Ft "AUTH *"
-.Xc
-.It Xo
-.Fn authunix_create "char *host" "int uid" "int gid" "int len" "int *aup_gids"
-.Xc
-.Pp
-Create and return an
-.Tn RPC
-authentication handle that contains
-.Ux
-authentication information.
-The parameter
-.Fa host
-is the name of the machine on which the information was
-created;
-.Fa uid
-is the user's user ID;
-.Fa gid
-is the user's current group ID;
-.Fa len
-and
-.Fa aup_gids
-refer to a counted array of groups to which the user belongs.
-It is easy to impersonate a user.
-.Pp
-.It Xo
-.Ft "AUTH *"
-.Xc
-.It Xo
-.Fn authunix_create_default
-.Xc
-.Pp
-Calls
-.Fn authunix_create
-with the appropriate parameters.
-.Pp
-.It Xo
-.Fo callrpc
-.Fa "char *host"
-.Fa "u_long prognum"
-.Fa "u_long versnum"
-.Fa "u_long procnum"
-.Fa "xdrproc_t inproc"
-.Fa "char *in"
-.Fa "xdrproc_t outproc"
-.Fa "char *out"
-.Fc
-.Xc
-.Pp
-Call the remote procedure associated with
-.Fa prognum ,
-.Fa versnum ,
-and
-.Fa procnum
-on the machine
-.Fa host .
-The parameter
-.Fa in
-is the address of the procedure's argument(s), and
-.Fa out
-is the address of where to place the result(s);
-.Fa inproc
-is used to encode the procedure's parameters, and
-.Fa outproc
-is used to decode the procedure's results.
-This routine returns zero if it succeeds, or the value of
-.Vt "enum clnt_stat"
-cast to an integer if it fails.
-The routine
-.Fn clnt_perrno
-is handy for translating failure statuses into messages.
-.Pp
-Warning: calling remote procedures with this routine
-uses
-.Tn UDP/IP
-as a transport; see
-.Fn clntudp_create
-for restrictions.
-You do not have control of timeouts or authentication using
-this routine.
-.Pp
-.It Xo
-.Ft "enum clnt_stat"
-.Xc
-.It Xo
-.Fo clnt_broadcast
-.Fa "u_long prognum"
-.Fa "u_long versnum"
-.Fa "u_long procnum"
-.Fa "xdrproc_t inproc"
-.Fa "char *in"
-.Fa "xdrproc_t outproc"
-.Fa "char *out"
-.Fa "bool_t (*eachresult)(caddr_t, struct sockaddr_in *)
-.Fc
-.Xc
-.Pp
-Like
-.Fn callrpc ,
-except the call message is broadcast to all locally
-connected broadcast nets.
-Each time it receives a
-response, this routine calls
-.Fn eachresult ,
-whose form is:
-.Bd -ragged -offset indent
-.Ft bool_t
-.Fn eachresult "caddr_t out" "struct sockaddr_in *addr"
-.Ed
-.Pp
-where
-.Fa out
-is the same as
-.Fa out
-passed to
-.Fn clnt_broadcast ,
-except that the remote procedure's output is decoded there;
-.Fa addr
-points to the address of the machine that sent the results.
-If
-.Fn eachresult
-returns zero,
-.Fn clnt_broadcast
-waits for more replies; otherwise it returns with appropriate
-status.
-.Pp
-Warning: broadcast sockets are limited in size to the
-maximum transfer unit of the data link.
-For ethernet,
-this value is 1500 bytes.
-.Pp
-.It Xo
-.Ft "enum clnt_stat"
-.Xc
-.It Xo
-.Fo clnt_call
-.Fa "CLIENT *clnt"
-.Fa "u_long procnum"
-.Fa "xdrproc_t inproc"
-.Fa "char *in"
-.Fa "xdrproc_t outproc"
-.Fa "char *out"
-.Fa "struct timeval tout"
-.Fc
-.Xc
-.Pp
-A macro that calls the remote procedure
-.Fa procnum
-associated with the client handle,
-.Fa clnt ,
-which is obtained with an
-.Tn RPC
-client creation routine such as
-.Fn clnt_create .
-The parameter
-.Fa in
-is the address of the procedure's argument(s), and
-.Fa out
-is the address of where to place the result(s);
-.Fa inproc
-is used to encode the procedure's parameters, and
-.Fa outproc
-is used to decode the procedure's results;
-.Fa tout
-is the time allowed for results to come back.
-.Pp
-.It Xo
-.Ft void
-.Fn clnt_destroy "CLIENT *clnt"
-.Xc
-.Pp
-A macro that destroys the client's
-.Tn RPC
-handle.
-Destruction usually involves deallocation
-of private data structures, including
-.Fa clnt
-itself.
-Use of
-.Fa clnt
-is undefined after calling
-.Fn clnt_destroy .
-If the
-.Tn RPC
-library opened the associated socket, it will close it also.
-Otherwise, the socket remains open.
-.Pp
-.It Xo
-.Ft CLIENT *
-.Xc
-.It Xo
-.Fn clnt_create "char *host" "u_long prog" "u_long vers" "char *proto"
-.Xc
-.Pp
-Generic client creation routine.
-.Fa host
-identifies the name of the remote host where the server
-is located.
-.Fa proto
-indicates which kind of transport protocol to use.
-The
-currently supported values for this field are
-.Qq Li udp
-and
-.Qq Li tcp .
-Default timeouts are set, but can be modified using
-.Fn clnt_control .
-.Pp
-Warning: Using
-.Tn UDP
-has its shortcomings.
-Since
-.Tn UDP Ns \-based
-.Tn RPC
-messages can only hold up to 8 Kbytes of encoded data,
-this transport cannot be used for procedures that take
-large arguments or return huge results.
-.Pp
-.It Xo
-.Ft bool_t
-.Xc
-.It Xo
-.Fn clnt_control "CLIENT *cl" "u_int req" "char *info"
-.Xc
-.Pp
-A macro used to change or retrieve various information
-about a client object.
-.Fa req
-indicates the type of operation, and
-.Fa info
-is a pointer to the information.
-For both
-.Tn UDP
-and
-.Tn TCP ,
-the supported values of
-.Fa req
-and their argument types and what they do are:
-.Bl -column "CLSET_RETRY_TIMEOUT" "struct sockaddr_in"
-.It Dv CLSET_TIMEOUT Ta Xo
-.Vt "struct timeval" Ta "set total timeout"
-.Xc
-.It Dv CLGET_TIMEOUT Ta Xo
-.Vt "struct timeval" Ta "get total timeout"
-.Xc
-.El
-.Pp
-Note: if you set the timeout using
-.Fn clnt_control ,
-the timeout parameter passed to
-.Fn clnt_call
-will be ignored in all future calls.
-.Bl -column "CLSET_RETRY_TIMEOUT" "struct sockaddr_in"
-.It Dv CLGET_SERVER_ADDR Ta Xo
-.Vt "struct sockaddr_in" Ta "get server's address"
-.Xc
-.El
-.Pp
-The following operations are valid for
-.Tn UDP
-only:
-.Bl -column "CLSET_RETRY_TIMEOUT" "struct sockaddr_in"
-.It Dv CLSET_RETRY_TIMEOUT Ta Xo
-.Vt "struct timeval" Ta "set the retry timeout"
-.Xc
-.It Dv CLGET_RETRY_TIMEOUT Ta Xo
-.Vt "struct timeval" Ta "get the retry timeout"
-.Xc
-.El
-.Pp
-The retry timeout is the time that
-.Tn "UDP RPC"
-waits for the server to reply before
-retransmitting the request.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn clnt_freeres "CLIENT *clnt" "xdrproc_t outproc" "char *out"
-.Xc
-.Pp
-A macro that frees any data allocated by the
-.Tn RPC/XDR
-system when it decoded the results of an
-.Tn RPC
-call.
-The parameter
-.Fa out
-is the address of the results, and
-.Fa outproc
-is the
-.Tn XDR
-routine describing the results.
-This routine returns one if the results were successfully
-freed,
-and zero otherwise.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn clnt_geterr "CLIENT *clnt" "struct rpc_err *errp"
-.Xc
-.Pp
-A macro that copies the error structure out of the client
-handle
-to the structure at address
-.Fa errp .
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn clnt_pcreateerror "char *s"
-.Xc
-.Pp
-prints a message to standard error indicating
-why a client
-.Tn RPC
-handle could not be created.
-The message is prepended with string
-.Fa s
-and a colon.
-Used when a
+These
+routines allow C language programs to make procedure
+calls on other machines across a network.
+First, the client sends a request to the server.
+On receipt of the request, the server calls a dispatch routine
+to perform the requested service, and then sends back a reply.
+.Pp
+All
+RPC routines require the header
+.Aq Pa rpc/rpc.h .
+Routines that take a
+.Vt "struct netconfig"
+also require that
+.Aq Pa netconfig.h
+be included.
+.Sh Nettype
+Some of the high-level
+RPC interface routines take a
+.Fa nettype
+string as one of the parameters
+(for example,
.Fn clnt_create ,
-.Fn clntraw_create ,
-.Fn clnttcp_create ,
-or
-.Fn clntudp_create
-call fails.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn clnt_perrno "enum clnt_stat stat"
-.Xc
-.Pp
-Print a message to standard error corresponding
-to the condition indicated by
-.Fa stat .
-Used after
-.Fn callrpc .
-.Pp
-.It Xo
-.Ft void
-.Fn clnt_perror "CLIENT *clnt" "char *s"
-.Xc
-.Pp
-Print a message to standard error indicating why an
-.Tn RPC
-call failed;
-.Fa clnt
-is the handle used to do the call.
-The message is prepended with string
-.Fa s
-and a colon.
-Used after
-.Fn clnt_call .
-.Pp
-.It Xo
-.Ft "char *"
-.Xc
-.It Xo
-.Fn clnt_spcreateerror "char *s"
-.Xc
-.Pp
-Like
-.Fn clnt_pcreateerror ,
-except that it returns a string
-instead of printing to the standard error.
-.Pp
-Bugs: returns pointer to static data that is overwritten
-on each call.
-.Pp
-.It Xo
-.Ft "char *"
-.Xc
-.It Xo
-.Fn clnt_sperrno "enum clnt_stat stat"
-.Xc
-.Pp
-Take the same arguments as
-.Fn clnt_perrno ,
-but instead of sending a message to the standard error
-indicating why an
-.Tn RPC
-call failed, return a pointer to a string which contains
-the message.
-The string ends with a newline
-.Pq Ql "\en" .
-.Pp
-.Fn clnt_sperrno
-is used instead of
-.Fn clnt_perrno
-if the program does not have a standard error (as a program
-running as a server quite likely does not), or if the
-programmer
-does not want the message to be output with
-.Fn printf ,
-or if a message format different from that supported by
-.Fn clnt_perrno
-is to be used.
-.Pp
-Note: unlike
-.Fn clnt_sperror
-and
-.Fn clnt_spcreaterror ,
-.Fn clnt_sperrno
-returns pointer to static data, but the
-result will not get overwritten on each call.
-.Pp
-.It Xo
-.Ft "char *"
-.Xc
-.It Xo
-.Fn clnt_sperror "CLIENT *rpch" "char *s"
-.Xc
-.Pp
-Like
-.Fn clnt_perror ,
-except that (like
-.Fn clnt_sperrno )
-it returns a string instead of printing to standard error.
-.Pp
-Bugs: returns pointer to static data that is overwritten
-on each call.
-.Pp
-.It Xo
-.Ft "CLIENT *"
-.Xc
-.It Xo
-.Fn clntraw_create "u_long prognum" "u_long versnum"
-.Xc
-.Pp
-This routine creates a toy
-.Tn RPC
-client for the remote program
-.Fa prognum ,
-version
-.Fa versnum .
-The transport used to pass messages to the service is
-actually a buffer within the process's address space, so the
-corresponding
-.Tn RPC
-server should live in the same address space; see
-.Fn svcraw_create .
-This allows simulation of
-.Tn RPC
-and acquisition of
-.Tn RPC
-overheads, such as round trip times, without any
-kernel interference.
-This routine returns
-.Dv NULL
-if it fails.
-.Pp
-.It Xo
-.Ft "CLIENT *"
-.Xc
-.It Xo
-.Fo clnttcp_create
-.Fa "struct sockaddr_in *addr"
-.Fa "u_long prognum"
-.Fa "u_long versnum"
-.Fa "int *sockp"
-.Fa "u_int sendsz"
-.Fa "u_int recvsz"
-.Fc
-.Xc
-.Pp
-This routine creates an
-.Tn RPC
-client for the remote program
-.Fa prognum ,
-version
-.Fa versnum ;
-the client uses
-.Tn TCP/IP
-as a transport.
-The remote program is located at Internet
-address
-.Fa addr .
-If
-.Fa addr\->sin_port
-is zero, then it is set to the actual port that the remote
-program is listening on (the remote
-.Xr portmap 8
-service is consulted for this information).
-The parameter
-.Fa sockp
-is a socket; if it is
-.Dv RPC_ANYSOCK ,
-then this routine opens a new one and sets
-.Fa sockp .
-Since
-.Tn TCP Ns \-based
-.Tn RPC
-uses buffered
-.Tn I/O ,
-the user may specify the size of the send and receive buffers
-with the parameters
-.Fa sendsz
-and
-.Fa recvsz ;
-values of zero choose suitable defaults.
-This routine returns
-.Dv NULL
-if it fails.
-.Pp
-.It Xo
-.Ft "CLIENT *"
-.Xc
-.It Xo
-.Fo clntudp_create
-.Fa "struct sockaddr_in *addr"
-.Fa "u_long prognum"
-.Fa "u_long versnum"
-.Fa "struct timeval wait"
-.Fa "int *sockp"
-.Fc
-.Xc
-.Pp
-This routine creates an
-.Tn RPC
-client for the remote program
-.Fa prognum ,
-version
-.Fa versnum ;
-the client uses
-.Tn UDP/IP
-as a transport.
-The remote program is located at Internet
-address
-.Fa addr .
-If
-.Fa addr\->sin_port
-is zero, then it is set to actual port that the remote
-program is listening on (the remote
-.Xr portmap 8
-service is consulted for this information).
-The parameter
-.Fa sockp
-is a socket; if it is
-.Dv RPC_ANYSOCK ,
-then this routine opens a new one and sets
-.Fa sockp .
-The
-.Tn UDP
-transport resends the call message in intervals of
-.Fa wait
-time until a response is received or until the call times
-out.
-The total time for the call to time out is specified by
-.Fn clnt_call .
-.Pp
-Warning: since
-.Tn UDP Ns \-based
-.Tn RPC
-messages can only hold up to 8 Kbytes
-of encoded data, this transport cannot be used for procedures
-that take large arguments or return huge results.
-.Pp
-.It Xo
-.Ft "CLIENT *"
-.Xc
-.It Xo
-.Fo clntudp_bufcreate
-.Fa "struct sockaddr_in *addr"
-.Fa "u_long prognum"
-.Fa "u_long versnum"
-.Fa "struct timeval wait"
-.Fa "int *sockp"
-.Fa "unsigned int sendsize"
-.Fa "unsigned int recosize"
-.Fc
-.Xc
-.Pp
-This routine creates an
-.Tn RPC
-client for the remote program
-.Fa prognum ,
-on
-.Fa versnum ;
-the client uses
-.Tn UDP/IP
-as a transport.
-The remote program is located at Internet
-address
-.Fa addr .
-If
-.Fa addr\->sin_port
-is zero, then it is set to actual port that the remote
-program is listening on (the remote
-.Xr portmap 8
-service is consulted for this information).
-The parameter
-.Fa sockp
-is a socket; if it is
-.Dv RPC_ANYSOCK ,
-then this routine opens a new one and sets
-.Fa sockp .
-The
-.Tn UDP
-transport resends the call message in intervals of
-.Fa wait
-time until a response is received or until the call times
-out.
-The total time for the call to time out is specified by
-.Fn clnt_call .
-.Pp
-This allows the user to specify the maximum packet size
-for sending and receiving
-.Tn UDP Ns \-based
-.Tn RPC
-messages.
-.Pp
-.It Xo
-.Ft int
-.Xc
-.It Xo
-.Fn get_myaddress "struct sockaddr_in *addr"
-.Xc
-.Pp
-Stuff the machine's
-.Tn IP
-address into
-.Fa addr ,
-without consulting the library routines that deal with
-.Pa /etc/hosts .
-The port number is always set to
-.Fn htons PMAPPORT .
-Returns zero on success, non-zero on failure.
-.Pp
-.It Xo
-.Ft "struct pmaplist *"
-.Xc
-.It Xo
-.Fn pmap_getmaps "struct sockaddr_in *addr"
-.Xc
-.Pp
-A user interface to the
-.Xr portmap 8
-service, which returns a list of the current
-.Tn RPC
-program\-to\-port mappings
-on the host located at
-.Tn IP
-address
-.Fa addr .
-This routine can return
-.Dv NULL .
-The command
-.Dq Nm rpcinfo Fl p
-uses this routine.
-.Pp
-.It Xo
-.Ft u_short
-.Xc
-.It Xo
-.Fo pmap_getport
-.Fa "struct sockaddr_in *addr"
-.Fa "u_long prognum"
-.Fa "u_long versnum"
-.Fa "u_long protocol"
-.Fc
-.Xc
-.Pp
-A user interface to the
-.Xr portmap 8
-service, which returns the port number
-on which waits a service that supports program number
-.Fa prognum ,
-version
-.Fa versnum ,
-and speaks the transport protocol associated with
-.Fa protocol .
-The value of
-.Fa protocol
-is most likely
-.Dv IPPROTO_UDP
+.Fn svc_create ,
+.Fn rpc_reg ,
+.Fn rpc_call ) .
+This string defines a class of transports which can be used
+for a particular application.
+.Pp
+.Fa nettype
+can be one of the following:
+.Bl -tag -width datagram_v
+.It netpath
+Choose from the transports which have been
+indicated by their token names in the
+.Ev NETPATH
+environment variable.
+.Ev NETPATH
+is unset or
+.Dv NULL ,
+it defaults to
+.Qq visible .
+.Qq netpath
+is the default
+.Fa nettype .
+.It visible
+Choose the transports which have the visible flag (v)
+set in the
+.Pa /etc/netconfig
+file.
+.It circuit_v
+This is same as
+.Qq visible
+except that it chooses only the connection oriented transports
+(semantics
+.Qq tpi_cots
or
-.Dv IPPROTO_TCP .
-A return value of zero means that the mapping does not exist
-or that
-the
-.Tn RPC
-system failed to contact the remote
-.Xr portmap 8
-service.
-In the latter case, the global variable
-.Va rpc_createerr
-contains the
-.Tn RPC
-status.
-.Pp
-.It Xo
-.Ft "enum clnt_stat"
-.Xc
-.It Xo
-.Fo pmap_rmtcall
-.Fa "struct sockaddr_in *addr"
-.Fa "u_long prognum"
-.Fa "u_long versnum"
-.Fa "u_long procnum"
-.Fa "xdrproc_t inproc"
-.Fa "char *in"
-.Fa "xdrproc_t outproc"
-.Fa "char *out"
-.Fa "struct timeval tout"
-.Fa "u_long *portp"
-.Fc
-.Xc
-.Pp
-A user interface to the
-.Xr portmap 8
-service, which instructs
-.Xr portmap 8
-on the host at
-.Tn IP
-address
-.Fa addr
-to make an
-.Tn RPC
-call on your behalf to a procedure on that host.
-The parameter
-.Fa portp
-will be modified to the program's port number if the
-procedure
-succeeds.
-The definitions of other parameters are discussed
-in
-.Fn callrpc
-and
-.Fn clnt_call .
-This procedure should be used for a
-.Dq ping
-and nothing
-else.
-See also
-.Fn clnt_broadcast .
-.Pp
-.It Xo
-.Ft bool_t
-.Fn pmap_set "u_long prognum" "u_long versnum" "u_long protocol" "u_short port"
-.Xc
-.Pp
-A user interface to the
-.Xr portmap 8
-service, which establishes a mapping between the triple
-.Pq Fa prognum , versnum , protocol
-and
-.Fa port
-on the machine's
-.Xr portmap 8
-service.
-The value of
-.Fa protocol
-is most likely
-.Dv IPPROTO_UDP
+.Qq tpi_cots_ord )
+from the entries in the
+.Pa /etc/netconfig
+file.
+.It datagram_v
+This is same as
+.Qq visible
+except that it chooses only the connectionless datagram transports
+(semantics
+.Qq tpi_clts )
+from the entries in the
+.Pa /etc/netconfig
+file.
+.It circuit_n
+This is same as
+.Qq netpath
+except that it chooses only the connection oriented datagram transports
+(semantics
+.Qq tpi_cots
or
-.Dv IPPROTO_TCP .
-This routine returns one if it succeeds, zero otherwise.
-Automatically done by
-.Fn svc_register .
-.Pp
-.It Xo
-.Ft bool_t
-.Fn pmap_unset "u_long prognum" "u_long versnum"
-.Xc
-.Pp
-A user interface to the
-.Xr portmap 8
-service, which destroys all mapping between the triple
-.Pq Fa prognum , versnum , *
-and
-.Fa ports
-on the machine's
-.Xr portmap 8
-service.
-This routine returns one if it succeeds, zero
-otherwise.
-.Pp
-.It Xo
-.Ft bool_t
-.Fo registerrpc
-.Fa "u_long prognum"
-.Fa "u_long versnum"
-.Fa "u_long procnum"
-.Fa "char *(*procname)(void)"
-.Fa "xdrproc_t inproc"
-.Fa "xdrproc_t outproc"
-.Fc
-.Xc
-.Pp
-Register procedure
-.Fa procname
-with the
-.Tn RPC
-service package.
-If a request arrives for program
-.Fa prognum ,
-version
-.Fa versnum ,
-and procedure
-.Fa procnum ,
-.Fa procname
-is called with a pointer to its parameter(s);
-.Fa progname
-should return a pointer to its static result(s);
-.Fa inproc
-is used to decode the parameters while
-.Fa outproc
-is used to encode the results.
-This routine returns zero if the registration succeeded, \-1
-otherwise.
-.Pp
-Warning: remote procedures registered in this form
-are accessed using the
-.Tn UDP/IP
-transport; see
-.Fn svcudp_create
-for restrictions.
-.Pp
-.It Xo
-.Vt "struct rpc_createerr" rpc_createerr ;
-.Xc
-.Pp
-A global variable whose value is set by any
-.Tn RPC
-client creation routine
-that does not succeed.
-Use the routine
-.Fn clnt_pcreateerror
-to print the reason why.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn svc_destroy "SVCXPRT * xprt"
-.Xc
-.Pp
-A macro that destroys the
-.Tn RPC
-service transport handle,
-.Fa xprt .
-Destruction usually involves deallocation
-of private data structures, including
-.Fa xprt
-itself.
-Use of
-.Fa xprt
-is undefined after calling this routine.
-.Pp
-.It Xo
-.Vt fd_set svc_fdset ;
-.Xc
-.Pp
-A global variable reflecting the
-.Tn RPC
-service side's
-read file descriptor bit mask; it is suitable as a template parameter
-to the
-.Xr select 2
-system call.
-This is only of interest
-if a service implementor does not call
-.Fn svc_run ,
-but rather does his own asynchronous event processing.
-This variable is read\-only (do not pass its address to
-.Xr select 2 ! ) ,
-yet it may change after calls to
-.Fn svc_getreqset
-or any creation routines.
-As well, note that if the process has descriptor limits
-which are extended beyond
-.Dv FD_SETSIZE ,
-this variable will only be usable for the first
-.Dv FD_SETSIZE
-descriptors.
-.Pp
-.It Xo
-.Vt int svc_fds ;
-.Xc
-.Pp
-Similar to
-.Va svc_fdset ,
-but limited to 32 descriptors.
-This
-interface is obsoleted by
-.Va svc_fdset .
-.Pp
-.It Xo
-.Ft bool_t
-.Fn svc_freeargs "SVCXPRT *xprt" "xdrproc_t inproc" "char *in"
-.Xc
-.Pp
-A macro that frees any data allocated by the
-.Tn RPC/XDR
-system when it decoded the arguments to a service procedure
-using
-.Fn svc_getargs .
-This routine returns 1 if the results were successfully
-freed,
-and zero otherwise.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn svc_getargs "SVCXPRT *xprt" "xdrproc_t inproc" "char *in"
-.Xc
-.Pp
-A macro that decodes the arguments of an
-.Tn RPC
-request
-associated with the
-.Tn RPC
-service transport handle,
-.Fa xprt .
-The parameter
-.Fa in
-is the address where the arguments will be placed;
-.Fa inproc
-is the
-.Tn XDR
-routine used to decode the arguments.
-This routine returns one if decoding succeeds, and zero
-otherwise.
-.Pp
-.It Xo
-.Ft "struct sockaddr_in *"
-.Xc
-.It Xo
-.Fn svc_getcaller "SVCXPRT *xprt"
-.Xc
-.Pp
-The approved way of getting the network address of the caller
-of a procedure associated with the
-.Tn RPC
-service transport handle,
-.Fa xprt .
-.Pp
-.It Xo
-.Ft void
-.Fn svc_getreqset "fd_set *rdfds"
-.Xc
-.Pp
-This routine is only of interest if a service implementor
-does not call
-.Fn svc_run ,
-but instead implements custom asynchronous event processing.
-It is called when the
-.Xr select 2
-system call has determined that an
-.Tn RPC
-request has arrived on some
-.Tn RPC
-socket(s);
-.Fa rdfds
-is the resultant read file descriptor bit mask.
-The routine returns when all sockets associated with the
-value of
-.Fa rdfds
-have been serviced.
-.Pp
-.It Xo
-.Ft void
-.Fn svc_getreq "int rdfds"
-.Xc
-.Pp
-Similar to
-.Fn svc_getreqset ,
-but limited to 32 descriptors.
-This interface is obsoleted by
-.Fn svc_getreqset .
-.Pp
-.It Xo
-.Ft bool_t
-.Fo svc_register
-.Fa "SVCXPRT *xprt"
-.Fa "u_long prognum"
-.Fa "u_long versnum"
-.Fa "void (*dispatch)(struct svc_req *, SVCXPRT *)"
-.Fa "int protocol"
-.Fc
-.Xc
+.Qq tpi_cots_ord ) .
+.It datagram_n
+This is same as
+.Qq netpath
+except that it chooses only the connectionless datagram transports
+(semantics
+.Qq tpi_clts ) .
+.It udp
+This refers to Internet UDP, both version 4 and 6.
+.It tcp
+This refers to Internet TCP, both version 4 and 6.
+.El
.Pp
-Associates
-.Fa prognum
-and
-.Fa versnum
-with the service dispatch procedure,
-.Fn dispatch .
If
-.Fa protocol
-is zero, the service is not registered with the
-.Xr portmap 8
-service.
-If
-.Fa protocol
-is non-zero, then a mapping of the triple
-.Pq Fa prognum , versnum , protocol
-to
-.Fa xprt\->xp_port
-is established with the local
-.Xr portmap 8
-service (generally
-.Fa protocol
-is zero,
-.Dv IPPROTO_UDP
-or
-.Dv IPPROTO_TCP ) .
-The procedure
-.Fn dispatch
-has the following form:
-.Bd -ragged -offset indent
-.Ft bool_t
-.Fn dispatch "struct svc_req *request" "SVCXPRT *xprt"
+.Fa nettype
+is
+.Dv NULL ,
+it defaults to
+.Qq netpath .
+The transports are tried in left to right order in the
+.Ev NETPATH
+variable or in top to down order in the
+.Pa /etc/netconfig
+file.
+.Sh Derived Types
+The derived types used in the RPC interfaces are defined as follows:
+.Bd -literal
+ typedef u_int32_t rpcprog_t;
+ typedef u_int32_t rpcvers_t;
+ typedef u_int32_t rpcproc_t;
+ typedef u_int32_t rpcprot_t;
+ typedef u_int32_t rpcport_t;
+ typedef int32_t rpc_inline_t;
.Ed
-.Pp
-The
-.Fn svc_register
-routine returns one if it succeeds, and zero otherwise.
-.Pp
-.It Xo
-.Fn svc_run
-.Xc
-.Pp
-This routine never returns.
-It waits for
-.Tn RPC
-requests to arrive, and calls the appropriate service
-procedure using
-.Fn svc_getreq
-when one arrives.
-This procedure is usually waiting for a
-.Xr select 2
-system call to return.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn svc_sendreply "SVCXPRT *xprt" "xdrproc_t outproc" "char *out"
-.Xc
-.Pp
-Called by an
-.Tn RPC
-service's dispatch routine to send the results of a
-remote procedure call.
-The parameter
-.Fa xprt
-is the request's associated transport handle;
-.Fa outproc
-is the
-.Tn XDR
-routine which is used to encode the results; and
-.Fa out
-is the address of the results.
-This routine returns one if it succeeds, zero otherwise.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn svc_unregister "u_long prognum" "u_long versnum"
-.Xc
-.Pp
-Remove all mapping of the double
-.Pq Fa prognum , versnum
-to dispatch routines, and of the triple
-.Pq Fa prognum , versnum , *
-to port number.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn svcerr_auth "SVCXPRT *xprt" "enum auth_stat why"
-.Xc
-.Pp
-Called by a service dispatch routine that refuses to perform
-a remote procedure call due to an authentication error.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn svcerr_decode "SVCXPRT *xprt"
-.Xc
-.Pp
-Called by a service dispatch routine that cannot successfully
-decode its parameters.
-See also
-.Fn svc_getargs .
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn svcerr_noproc "SVCXPRT *xprt"
-.Xc
-.Pp
-Called by a service dispatch routine that does not implement
-the procedure number that the caller requests.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn svcerr_noprog "SVCXPRT *xprt"
-.Xc
-.Pp
-Called when the desired program is not registered with the
-.Tn RPC
-package.
-Service implementors usually do not need this routine.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn svcerr_progvers "SVCXPRT *xprt" "u_long low_vers" "u_long high_vers"
-.Xc
-.Pp
-Called when the desired version of a program is not registered
-with the
-.Tn RPC
-package.
-Service implementors usually do not need this routine.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn svcerr_systemerr "SVCXPRT *xprt"
-.Xc
-.Pp
-Called by a service dispatch routine when it detects a system
-error
-not covered by any particular protocol.
-For example, if a service can no longer allocate storage,
-it may call this routine.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn svcerr_weakauth "SVCXPRT *xprt"
-.Xc
-.Pp
-Called by a service dispatch routine that refuses to perform
-a remote procedure call due to insufficient
-authentication parameters.
-The routine calls
-.Fn svcerr_auth xprt AUTH_TOOWEAK .
-.Pp
-.It Xo
-.Ft "SVCXPRT *"
-.Xc
-.It Xo
-.Fn svcraw_create void
-.Xc
-.Pp
-This routine creates a toy
-.Tn RPC
-service transport, to which it returns a pointer.
-The transport
-is really a buffer within the process's address space,
-so the corresponding
-.Tn RPC
-client should live in the same
-address space;
-see
-.Fn clntraw_create .
-This routine allows simulation of
-.Tn RPC
-and acquisition of
-.Tn RPC
-overheads (such as round trip times), without any kernel
-interference.
-This routine returns
-.Dv NULL
-if it fails.
-.Pp
-.It Xo
-.Ft "SVCXPRT *"
-.Xc
-.It Xo
-.Fn svctcp_create "int sock" "u_int send_buf_size" "u_int recv_buf_size"
-.Xc
-.Pp
-This routine creates a
-.Tn TCP/IP Ns \-based
-.Tn RPC
-service transport, to which it returns a pointer.
-The transport is associated with the socket
-.Fa sock ,
-which may be
-.Dv RPC_ANYSOCK ,
-in which case a new socket is created.
-If the socket is not bound to a local
-.Tn TCP
-port, then this routine binds it to an arbitrary port.
-Upon completion,
-.Fa xprt\->xp_sock
-is the transport's socket descriptor, and
-.Fa xprt\->xp_port
-is the transport's port number.
-This routine returns
-.Dv NULL
-if it fails.
-Since
-.Tn TCP Ns \-based
-.Tn RPC
-uses buffered
-.Tn I/O ,
-users may specify the size of buffers; values of zero
-choose suitable defaults.
-.Pp
-.It Xo
-.Ft "SVCXPRT *"
-.Xc
-.It Xo
-.Fn svcfd_create "int fd" "u_int sendsize" "u_int recvsize"
-.Xc
-.Pp
-Create a service on top of any open descriptor.
-Typically,
-this
-descriptor is a connected socket for a stream protocol such
-as
-.Tn TCP .
-.Fa sendsize
-and
-.Fa recvsize
-indicate sizes for the send and receive buffers.
-If they are
-zero, a reasonable default is chosen.
-.Pp
-.It Xo
-.Ft "SVCXPRT *"
-.Xc
-.It Xo
-.Fn svcudp_bufcreate "int sock" "u_int sendsize" "u_int recvsize"
-.Xc
-.Pp
-This routine creates a
-.Tn UDP/IP Ns \-based
-.Tn RPC
-service transport, to which it returns a pointer.
-The transport is associated with the socket
-.Fa sock ,
-which may be
-.Dv RPC_ANYSOCK ,
-in which case a new socket is created.
-If the socket is not bound to a local
-.Tn UDP
-port, then this routine binds it to an arbitrary port.
-Upon
-completion,
-.Fa xprt\->xp_sock
-is the transport's socket descriptor, and
-.Fa xprt\->xp_port
-is the transport's port number.
-This routine returns
-.Dv NULL
-if it fails.
-.Pp
-This allows the user to specify the maximum packet size for sending and
-receiving
-.Tn UDP Ns \-based
-.Tn RPC
-messages.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn xdr_accepted_reply "XDR *xdrs" "struct accepted_reply *ar"
-.Xc
-.Pp
-Used for encoding
-.Tn RPC
-reply messages.
-This routine is useful for users who
-wish to generate
-.Tn RPC Ns \-style
-messages without using the
-.Tn RPC
-package.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn xdr_authunix_parms "XDR *xdrs" "struct authunix_parms *aupp"
-.Xc
-.Pp
-Used for describing
-.Ux
-credentials.
-This routine is useful for users
-who wish to generate these credentials without using the
-.Tn RPC
-authentication package.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Ft bool_t
-.Fn xdr_callhdr "XDR *xdrs" "struct rpc_msg *chdr"
-.Xc
-.Pp
-Used for describing
-.Tn RPC
-call header messages.
-This routine is useful for users who wish to generate
-.Tn RPC Ns \-style
-messages without using the
-.Tn RPC
-package.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn xdr_callmsg "XDR *xdrs" "struct rpc_msg *cmsg"
-.Xc
-.Pp
-Used for describing
-.Tn RPC
-call messages.
-This routine is useful for users who wish to generate
-.Tn RPC Ns \-style
-messages without using the
-.Tn RPC
-package.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn xdr_opaque_auth "XDR *xdrs" "struct opaque_auth *ap"
-.Xc
-.Pp
-Used for describing
-.Tn RPC
-authentication information messages.
-This routine is useful for users who wish to generate
-.Tn RPC Ns \-style
-messages without using the
-.Tn RPC
-package.
-.Pp
-.It Xo
-.Vt struct pmap ;
-.Xc
-.It Xo
-.Ft bool_t
-.Fn xdr_pmap "XDR *xdrs" "struct pmap *regs"
-.Xc
-.Pp
-Used for describing parameters to various
-.Xr portmap 8
-procedures, externally.
-This routine is useful for users who wish to generate
-these parameters without using the
-.Fn pmap_*
-interface.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn xdr_pmaplist "XDR *xdrs" "struct pmaplist **rp"
-.Xc
-.Pp
-Used for describing a list of port mappings, externally.
-This routine is useful for users who wish to generate
-these parameters without using the
-.Fn pmap_*
-interface.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn xdr_rejected_reply "XDR *xdrs" "struct rejected_reply *rr"
-.Xc
-.Pp
-Used for describing
-.Tn RPC
-reply messages.
-This routine is useful for users who wish to generate
-.Tn RPC Ns \-style
-messages without using the
-.Tn RPC
-package.
-.Pp
-.It Xo
-.Ft bool_t
-.Fn xdr_replymsg "XDR *xdrs" "struct rpc_msg *rmsg"
-.Xc
-.Pp
-Used for describing
-.Tn RPC
-reply messages.
-This routine is useful for users who wish to generate
-.Tn RPC
-style messages without using the
-.Tn RPC
-package.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn xprt_register "SVCXPRT *xprt"
-.Xc
-.Pp
-After
-.Tn RPC
-service transport handles are created,
-they should register themselves with the
-.Tn RPC
-service package.
-This routine modifies the global variable
-.Va svc_fds .
-Service implementors usually do not need this routine.
-.Pp
-.It Xo
-.Ft void
-.Xc
-.It Xo
-.Fn xprt_unregister "SVCXPRT *xprt"
-.Xc
-.Pp
-Before an
-.Tn RPC
-service transport handle is destroyed,
-it should unregister itself with the
-.Tn RPC
-service package.
-This routine modifies the global variable
-.Va svc_fds .
-Service implementors usually do not need this routine.
+.Sh "Data Structures"
+Some of the data structures used by the
+RPC package are shown below.
+.Sh "The AUTH Structure"
+.Bd -literal
+/*
+ * Authentication info. Opaque to client.
+ */
+struct opaque_auth {
+ enum_t oa_flavor; /* flavor of auth */
+ caddr_t oa_base; /* address of more auth stuff */
+ u_int oa_length; /* not to exceed MAX_AUTH_BYTES */
+};
+
+/*
+ * Auth handle, interface to client side authenticators.
+ */
+typedef struct {
+ struct opaque_auth ah_cred;
+ struct opaque_auth ah_verf;
+ struct auth_ops {
+ void (*ah_nextverf)(\|);
+ int (*ah_marshal)(\|); /* nextverf & serialize */
+ int (*ah_validate)(\|); /* validate verifier */
+ int (*ah_refresh)(\|); /* refresh credentials */
+ void (*ah_destroy)(\|); /* destroy this structure */
+ } *ah_ops;
+ caddr_t ah_private;
+} AUTH;
+.Ed
+.Sh "The CLIENT Structure"
+.Bd -literal
+/*
+ * Client rpc handle.
+ * Created by individual implementations.
+ * Client is responsible for initializing auth.
+ */
+
+typedef struct {
+ AUTH *cl_auth; /* authenticator */
+ struct clnt_ops {
+ enum clnt_stat (*cl_call)(); /* call remote procedure */
+ void (*cl_abort)(); /* abort a call */
+ void (*cl_geterr)(); /* get specific error code */
+ bool_t (*cl_freeres)(); /* frees results */
+ void (*cl_destroy)(); /* destroy this structure */
+ bool_t (*cl_control)(); /* the ioctl() of rpc */
+ } *cl_ops;
+ caddr_t cl_private; /* private stuff */
+ char *cl_netid; /* network identifier */
+ char *cl_tp; /* device name */
+} CLIENT;
+.Ed
+.Sh "The SVCXPRT structure"
+.Bd -literal
+enum xprt_stat {
+ XPRT_DIED,
+ XPRT_MOREREQS,
+ XPRT_IDLE
+};
+
+/*
+ * Server side transport handle
+ */
+typedef struct {
+ int xp_fd; /* file descriptor for the server handle */
+ u_short xp_port; /* obsolete */
+ const struct xp_ops {
+ bool_t (*xp_recv)(); /* receive incoming requests */
+ enum xprt_stat (*xp_stat)(); /* get transport status */
+ bool_t (*xp_getargs)(); /* get arguments */
+ bool_t (*xp_reply)(); /* send reply */
+ bool_t (*xp_freeargs)(); /* free mem allocated for args */
+ void (*xp_destroy)(); /* destroy this struct */
+ } *xp_ops;
+ int xp_addrlen; /* length of remote addr. Obsolete */
+ struct sockaddr_in xp_raddr; /* Obsolete */
+ const struct xp_ops2 {
+ bool_t (*xp_control)(); /* catch-all function */
+ } *xp_ops2;
+ char *xp_tp; /* transport provider device name */
+ char *xp_netid; /* network identifier */
+ struct netbuf xp_ltaddr; /* local transport address */
+ struct netbuf xp_rtaddr; /* remote transport address */
+ struct opaque_auth xp_verf; /* raw response verifier */
+ caddr_t xp_p1; /* private: for use by svc ops */
+ caddr_t xp_p2; /* private: for use by svc ops */
+ caddr_t xp_p3; /* private: for use by svc lib */
+ int xp_type /* transport type */
+} SVCXPRT;
+.Ed
+.Sh "The svc_reg structure"
+.Bd -literal
+struct svc_req {
+ rpcprog_t rq_prog; /* service program number */
+ rpcvers_t rq_vers; /* service protocol version */
+ rpcproc_t rq_proc; /* the desired procedure */
+ struct opaque_auth rq_cred; /* raw creds from the wire */
+ caddr_t rq_clntcred; /* read only cooked cred */
+ SVCXPRT *rq_xprt; /* associated transport */
+};
+.Ed
+.Sh "The XDR structure"
+.Bd -literal
+/*
+ * XDR operations.
+ * XDR_ENCODE causes the type to be encoded into the stream.
+ * XDR_DECODE causes the type to be extracted from the stream.
+ * XDR_FREE can be used to release the space allocated by an XDR_DECODE
+ * request.
+ */
+enum xdr_op {
+ XDR_ENCODE=0,
+ XDR_DECODE=1,
+ XDR_FREE=2
+};
+/*
+ * This is the number of bytes per unit of external data.
+ */
+#define BYTES_PER_XDR_UNIT (4)
+#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) /
+ BYTES_PER_XDR_UNIT) \e * BYTES_PER_XDR_UNIT)
+
+/*
+ * A xdrproc_t exists for each data type which is to be encoded or
+ * decoded. The second argument to the xdrproc_t is a pointer to
+ * an opaque pointer. The opaque pointer generally points to a
+ * structure of the data type to be decoded. If this points to 0,
+ * then the type routines should allocate dynamic storage of the
+ * appropriate size and return it.
+ * bool_t (*xdrproc_t)(XDR *, caddr_t *);
+ */
+typedef bool_t (*xdrproc_t)();
+
+/*
+ * The XDR handle.
+ * Contains operation which is being applied to the stream,
+ * an operations vector for the particular implementation
+ */
+typedef struct {
+ enum xdr_op x_op; /* operation; fast additional param */
+ struct xdr_ops {
+ bool_t (*x_getlong)(); /* get a long from underlying stream */
+ bool_t (*x_putlong)(); /* put a long to underlying stream */
+ bool_t (*x_getbytes)(); /* get bytes from underlying stream */
+ bool_t (*x_putbytes)(); /* put bytes to underlying stream */
+ u_int (*x_getpostn)(); /* returns bytes off from beginning */
+ bool_t (*x_setpostn)(); /* lets you reposition the stream */
+ long * (*x_inline)(); /* buf quick ptr to buffered data */
+ void (*x_destroy)(); /* free privates of this xdr_stream */
+ } *x_ops;
+ caddr_t x_public; /* users' data */
+ caddr_t x_private; /* pointer to private data */
+ caddr_t x_base; /* private used for position info */
+ int x_handy; /* extra private word */
+} XDR;
+
+/*
+ * The netbuf structure. This structure is defined in <xti.h> on SysV
+ * systems, but NetBSD / FreeBSD do not use XTI.
+ *
+ * Usually, buf will point to a struct sockaddr, and len and maxlen
+ * will contain the length and maximum length of that socket address,
+ * respectively.
+ */
+struct netbuf {
+ unsigned int maxlen;
+ unsigned int len;
+ void *buf;
+};
+
+/*
+ * The format of the addres and options arguments of the XTI t_bind call.
+ * Only provided for compatibility, it should not be used other than
+ * as an argument to svc_tli_create().
+ */
+
+struct t_bind {
+ struct netbuf addr;
+ unsigned int qlen;
+};
+.Ed
+.Sh "Index to Routines"
+The following table lists RPC routines and the manual reference
+pages on which they are described:
+.Pp
+.Bl -tag -width "authunix_create_default()" -compact
+.It Em "RPC Routine"
+.Em "Manual Reference Page"
+.Pp
+.It Fn auth_destroy
+.Xr rpc_clnt_auth 3
+.It Fn authdes_create
+.Xr rpc_soc 3
+.It Fn authnone_create
+.Xr rpc_clnt_auth 3
+.It Fn authsys_create
+.Xr rpc_clnt_auth 3
+.It Fn authsys_create_default
+.Xr rpc_clnt_auth 3
+.It Fn authunix_create
+.Xr rpc_soc 3
+.It Fn authunix_create_default
+.Xr rpc_soc 3
+.It Fn callrpc
+.Xr rpc_soc 3
+.It Fn clnt_broadcast
+.Xr rpc_soc 3
+.It Fn clnt_call
+.Xr rpc_clnt_calls 3
+.It Fn clnt_control
+.Xr rpc_clnt_create 3
+.It Fn clnt_create
+.Xr rpc_clnt_create 3
+.It Fn clnt_destroy
+.Xr rpc_clnt_create 3
+.It Fn clnt_dg_create
+.Xr rpc_clnt_create 3
+.It Fn clnt_freeres
+.Xr rpc_clnt_calls 3
+.It Fn clnt_geterr
+.Xr rpc_clnt_calls 3
+.It Fn clnt_pcreateerror
+.Xr rpc_clnt_create 3
+.It Fn clnt_perrno
+.Xr rpc_clnt_calls 3
+.It Fn clnt_perror
+.Xr rpc_clnt_calls 3
+.It Fn clnt_raw_create
+.Xr rpc_clnt_create 3
+.It Fn clnt_spcreateerror
+.Xr rpc_clnt_create 3
+.It Fn clnt_sperrno
+.Xr rpc_clnt_calls 3
+.It Fn clnt_sperror
+.Xr rpc_clnt_calls 3
+.It Fn clnt_tli_create
+.Xr rpc_clnt_create 3
+.It Fn clnt_tp_create
+.Xr rpc_clnt_create 3
+.It Fn clnt_udpcreate
+.Xr rpc_soc 3
+.It Fn clnt_vc_create
+.Xr rpc_clnt_create 3
+.It Fn clntraw_create
+.Xr rpc_soc 3
+.It Fn clnttcp_create
+.Xr rpc_soc 3
+.It Fn clntudp_bufcreate
+.Xr rpc_soc 3
+.It Fn get_myaddress
+.Xr rpc_soc 3
+.It Fn pmap_getmaps
+.Xr rpc_soc 3
+.It Fn pmap_getport
+.Xr rpc_soc 3
+.It Fn pmap_rmtcall
+.Xr rpc_soc 3
+.It Fn pmap_set
+.Xr rpc_soc 3
+.It Fn pmap_unset
+.Xr rpc_soc 3
+.It Fn registerrpc
+.Xr rpc_soc 3
+.It Fn rpc_broadcast
+.Xr rpc_clnt_calls 3
+.It Fn rpc_broadcast_exp
+.Xr rpc_clnt_calls 3
+.It Fn rpc_call
+.Xr rpc_clnt_calls 3
+.It Fn rpc_reg
+.Xr rpc_svc_calls 3
+.It Fn svc_create
+.Xr rpc_svc_create 3
+.It Fn svc_destroy
+.Xr rpc_svc_create 3
+.It Fn svc_dg_create
+.Xr rpc_svc_create 3
+.It Fn svc_dg_enablecache
+.Xr rpc_svc_calls 3
+.It Fn svc_fd_create
+.Xr rpc_svc_create 3
+.It Fn svc_fds
+.Xr rpc_soc 3
+.It Fn svc_freeargs
+.Xr rpc_svc_reg 3
+.It Fn svc_getargs
+.Xr rpc_svc_reg 3
+.It Fn svc_getcaller
+.Xr rpc_soc 3
+.It Fn svc_getreq
+.Xr rpc_soc 3
+.It Fn svc_getreqset
+.Xr rpc_svc_calls 3
+.It Fn svc_getrpccaller
+.Xr rpc_svc_calls 3
+.It Fn svc_kerb_reg
+.Xr kerberos_rpc 3
+.It Fn svc_raw_create
+.Xr rpc_svc_create 3
+.It Fn svc_reg
+.Xr rpc_svc_calls 3
+.It Fn svc_register
+.Xr rpc_soc 3
+.It Fn svc_run
+.Xr rpc_svc_reg 3
+.It Fn svc_sendreply
+.Xr rpc_svc_reg 3
+.It Fn svc_tli_create
+.Xr rpc_svc_create 3
+.It Fn svc_tp_create
+.Xr rpc_svc_create 3
+.It Fn svc_unreg
+.Xr rpc_svc_calls 3
+.It Fn svc_unregister
+.Xr rpc_soc 3
+.It Fn svc_vc_create
+.Xr rpc_svc_create 3
+.It Fn svcerr_auth
+.Xr rpc_svc_err 3
+.It Fn svcerr_decode
+.Xr rpc_svc_err 3
+.It Fn svcerr_noproc
+.Xr rpc_svc_err 3
+.It Fn svcerr_noprog
+.Xr rpc_svc_err 3
+.It Fn svcerr_progvers
+.Xr rpc_svc_err 3
+.It Fn svcerr_systemerr
+.Xr rpc_svc_err 3
+.It Fn svcerr_weakauth
+.Xr rpc_svc_err 3
+.It Fn svcfd_create
+.Xr rpc_soc 3
+.It Fn svcraw_create
+.Xr rpc_soc 3
+.It Fn svctcp_create
+.Xr rpc_soc 3
+.It Fn svcudp_bufcreate
+.Xr rpc_soc 3
+.It Fn svcudp_create
+.Xr rpc_soc 3
+.It Fn xdr_accepted_reply
+.Xr rpc_xdr 3
+.It Fn xdr_authsys_parms
+.Xr rpc_xdr 3
+.It Fn xdr_authunix_parms
+.Xr rpc_soc 3
+.It Fn xdr_callhdr
+.Xr rpc_xdr 3
+.It Fn xdr_callmsg
+.Xr rpc_xdr 3
+.It Fn xdr_opaque_auth
+.Xr rpc_xdr 3
+.It Fn xdr_rejected_reply
+.Xr rpc_xdr 3
+.It Fn xdr_replymsg
+.Xr rpc_xdr 3
+.It Fn xprt_register
+.Xr rpc_svc_calls 3
+.It Fn xprt_unregister
+.Xr rpc_svc_calls 3
+.El
+.Sh FILES
+.Bl -tag -width /etc/netconfig
+.It Pa /etc/netconfig
.El
.Sh SEE ALSO
-.Xr rpc_secure 3 ,
-.Xr xdr 3
-.Rs
-.%T "Remote Procedure Calls: Protocol Specification"
-.Re
-.Rs
-.%T "Remote Procedure Call Programming Guide"
-.Re
-.Rs
-.%T "rpcgen Programming Guide"
-.Re
-.Rs
-.%T "RPC: Remote Procedure Call Protocol Specification"
-.%O RFC1050
-.%Q "Sun Microsystems, Inc., USC-ISI"
-.Re
+.Xr getnetconfig 3 ,
+.Xr getnetpath 3 ,
+.Xr rpc_clnt_auth 3 ,
+.Xr rpc_clnt_calls 3 ,
+.Xr rpc_clnt_create 3 ,
+.Xr rpc_svc_calls 3 ,
+.Xr rpc_svc_create 3 ,
+.Xr rpc_svc_err 3 ,
+.Xr rpc_svc_reg 3 ,
+.Xr rpc_xdr 3 ,
+.Xr rpcbind 3 ,
+.Xr xdr 3 ,
+.Xr netconfig 5
OpenPOWER on IntegriCloud