freebsd_amp_hwpstate/lib/libc/rpc/rpc.3

1520 lines
28 KiB
Groff
Raw Normal View History

.\" @(#)rpc.3n 2.4 88/08/08 4.0 RPCSRC; from 1.19 88/06/24 SMI
1999-08-28 00:22:10 +00:00
.\" $FreeBSD$
.\"
2001-01-17 18:26:21 +00:00
.Dd February 16, 1988
.Dt RPC 3
.Os
.Sh NAME
.Nm rpc
.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.
.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.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fa auth .
Destruction usually involves deallocation of private data
structures.
The use of
2001-01-17 18:26:21 +00:00
.Fa auth
is undefined after calling
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn RPC
authentication handle that contains
2001-01-17 18:26:21 +00:00
.Ux
authentication information.
The parameter
2001-01-17 18:26:21 +00:00
.Fa host
is the name of the machine on which the information was
created;
2001-01-17 18:26:21 +00:00
.Fa uid
is the user's user ID;
.Fa gid
is the user's current group ID;
.Fa len
and
2001-01-17 18:26:21 +00:00
.Fa aup_gids
refer to a counted array of groups to which the user belongs.
It is easy to impersonate a user.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft "AUTH *"
.Xc
.It Xo
.Fn authunix_create_default
.Xc
.Pp
Calls
2001-01-17 18:26:21 +00:00
.Fn authunix_create
with the appropriate parameters.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fa prognum ,
.Fa versnum ,
and
2001-01-17 18:26:21 +00:00
.Fa procnum
on the machine
.Fa host .
The parameter
2001-01-17 18:26:21 +00:00
.Fa in
is the address of the procedure's argument(s), and
2001-01-17 18:26:21 +00:00
.Fa out
is the address of where to place the result(s);
2001-01-17 18:26:21 +00:00
.Fa inproc
is used to encode the procedure's parameters, and
2001-01-17 18:26:21 +00:00
.Fa outproc
is used to decode the procedure's results.
This routine returns zero if it succeeds, or the value of
2001-01-17 18:26:21 +00:00
.Vt "enum clnt_stat"
cast to an integer if it fails.
The routine
2001-01-17 18:26:21 +00:00
.Fn clnt_perrno
is handy for translating failure statuses into messages.
2001-01-17 18:26:21 +00:00
.Pp
Warning: calling remote procedures with this routine
uses
2001-01-17 18:26:21 +00:00
.Tn UDP/IP
as a transport; see
2001-01-17 18:26:21 +00:00
.Fn clntudp_create
for restrictions.
You do not have control of timeouts or authentication using
this routine.
2001-01-17 18:26:21 +00:00
.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 *)
2001-01-17 18:26:21 +00:00
.Fc
.Xc
.Pp
Like
2001-01-17 18:26:21 +00:00
.Fn callrpc ,
except the call message is broadcast to all locally
connected broadcast nets.
Each time it receives a
response, this routine calls
2001-01-17 18:26:21 +00:00
.Fn eachresult ,
whose form is:
2001-01-17 18:26:21 +00:00
.Bd -ragged -offset indent
.Ft bool_t
.Fn eachresult "caddr_t out" "struct sockaddr_in *addr"
2001-01-17 18:26:21 +00:00
.Ed
.Pp
where
2001-01-17 18:26:21 +00:00
.Fa out
is the same as
2001-01-17 18:26:21 +00:00
.Fa out
passed to
2001-01-17 18:26:21 +00:00
.Fn clnt_broadcast ,
except that the remote procedure's output is decoded there;
2001-01-17 18:26:21 +00:00
.Fa addr
points to the address of the machine that sent the results.
If
2001-01-17 18:26:21 +00:00
.Fn eachresult
returns zero,
2001-01-17 18:26:21 +00:00
.Fn clnt_broadcast
waits for more replies; otherwise it returns with appropriate
status.
2001-01-17 18:26:21 +00:00
.Pp
Warning: broadcast sockets are limited in size to the
maximum transfer unit of the data link.
For ethernet,
this value is 1500 bytes.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fa procnum
associated with the client handle,
2001-01-17 18:26:21 +00:00
.Fa clnt ,
which is obtained with an
2001-01-17 18:26:21 +00:00
.Tn RPC
client creation routine such as
2001-01-17 18:26:21 +00:00
.Fn clnt_create .
The parameter
2001-01-17 18:26:21 +00:00
.Fa in
is the address of the procedure's argument(s), and
2001-01-17 18:26:21 +00:00
.Fa out
is the address of where to place the result(s);
2001-01-17 18:26:21 +00:00
.Fa inproc
is used to encode the procedure's parameters, and
2001-01-17 18:26:21 +00:00
.Fa outproc
is used to decode the procedure's results;
2001-01-17 18:26:21 +00:00
.Fa tout
is the time allowed for results to come back.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft void
2001-01-17 18:26:21 +00:00
.Fn clnt_destroy "CLIENT *clnt"
.Xc
.Pp
A macro that destroys the client's
2001-01-17 18:26:21 +00:00
.Tn RPC
handle.
Destruction usually involves deallocation
of private data structures, including
2001-01-17 18:26:21 +00:00
.Fa clnt
itself.
Use of
.Fa clnt
is undefined after calling
2001-01-17 18:26:21 +00:00
.Fn clnt_destroy .
If the
2001-01-17 18:26:21 +00:00
.Tn RPC
library opened the associated socket, it will close it also.
Otherwise, the socket remains open.
2001-01-17 18:26:21 +00:00
.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.
2001-01-17 18:26:21 +00:00
.Fa host
identifies the name of the remote host where the server
is located.
2001-01-17 18:26:21 +00:00
.Fa proto
indicates which kind of transport protocol to use.
The
2001-01-17 18:26:21 +00:00
currently supported values for this field are
.Qq Li udp
and
.Qq Li tcp .
Default timeouts are set, but can be modified using
2001-01-17 18:26:21 +00:00
.Fn clnt_control .
.Pp
Warning: Using
2001-01-17 18:26:21 +00:00
.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.
2001-01-17 18:26:21 +00:00
.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.
2001-01-17 18:26:21 +00:00
.Fa req
indicates the type of operation, and
2001-01-17 18:26:21 +00:00
.Fa info
is a pointer to the information.
For both
2001-01-17 18:26:21 +00:00
.Tn UDP
and
2001-01-17 18:26:21 +00:00
.Tn TCP ,
the supported values of
2001-01-17 18:26:21 +00:00
.Fa req
and their argument types and what they do are:
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fn clnt_control ,
the timeout parameter passed to
2001-01-17 18:26:21 +00:00
.Fn clnt_call
will be ignored in all future calls.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn UDP
only:
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn "UDP RPC"
waits for the server to reply before
retransmitting the request.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn clnt_freeres "CLIENT *clnt" "xdrproc_t outproc" "char *out"
.Xc
.Pp
A macro that frees any data allocated by the
2001-01-17 18:26:21 +00:00
.Tn RPC/XDR
system when it decoded the results of an
2001-01-17 18:26:21 +00:00
.Tn RPC
call.
The parameter
.Fa out
is the address of the results, and
2001-01-17 18:26:21 +00:00
.Fa outproc
is the
2001-01-17 18:26:21 +00:00
.Tn XDR
routine describing the results.
This routine returns one if the results were successfully
freed,
and zero otherwise.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn RPC
handle could not be created.
The message is prepended with string
2001-01-17 18:26:21 +00:00
.Fa s
and a colon.
Used when a
2001-01-17 18:26:21 +00:00
.Fn clnt_create ,
.Fn clntraw_create ,
.Fn clnttcp_create ,
or
2001-01-17 18:26:21 +00:00
.Fn clntudp_create
call fails.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fa stat .
Used after
2001-01-17 18:26:21 +00:00
.Fn callrpc .
.Pp
.It Xo
.Ft void
2001-01-17 18:26:21 +00:00
.Fn clnt_perror "CLIENT *clnt" "char *s"
.Xc
.Pp
Print a message to standard error indicating why an
2001-01-17 18:26:21 +00:00
.Tn RPC
call failed;
2001-01-17 18:26:21 +00:00
.Fa clnt
is the handle used to do the call.
The message is prepended with string
2001-01-17 18:26:21 +00:00
.Fa s
and a colon.
Used after
2001-01-17 18:26:21 +00:00
.Fn clnt_call .
.Pp
.It Xo
.Ft "char *"
.Xc
.It Xo
.Fn clnt_spcreateerror "char *s"
.Xc
.Pp
Like
2001-01-17 18:26:21 +00:00
.Fn clnt_pcreateerror ,
except that it returns a string
instead of printing to the standard error.
2001-01-17 18:26:21 +00:00
.Pp
Bugs: returns pointer to static data that is overwritten
on each call.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft "char *"
.Xc
.It Xo
.Fn clnt_sperrno "enum clnt_stat stat"
.Xc
.Pp
Take the same arguments as
2001-01-17 18:26:21 +00:00
.Fn clnt_perrno ,
but instead of sending a message to the standard error
indicating why an
2001-01-17 18:26:21 +00:00
.Tn RPC
call failed, return a pointer to a string which contains
2001-01-17 18:26:21 +00:00
the message.
The string ends with a newline
.Pq Ql "\en" .
.Pp
.Fn clnt_sperrno
is used instead of
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fn printf ,
or if a message format different from that supported by
2001-01-17 18:26:21 +00:00
.Fn clnt_perrno
is to be used.
2001-01-17 18:26:21 +00:00
.Pp
Note: unlike
2001-01-17 18:26:21 +00:00
.Fn clnt_sperror
and
2001-01-17 18:26:21 +00:00
.Fn clnt_spcreaterror ,
.Fn clnt_sperrno
returns pointer to static data, but the
result will not get overwritten on each call.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft "char *"
.Xc
.It Xo
.Fn clnt_sperror "CLIENT *rpch" "char *s"
.Xc
.Pp
Like
2001-01-17 18:26:21 +00:00
.Fn clnt_perror ,
except that (like
2001-01-17 18:26:21 +00:00
.Fn clnt_sperrno )
it returns a string instead of printing to standard error.
2001-01-17 18:26:21 +00:00
.Pp
Bugs: returns pointer to static data that is overwritten
on each call.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft "CLIENT *"
.Xc
.It Xo
.Fn clntraw_create "u_long prognum" "u_long versnum"
.Xc
.Pp
This routine creates a toy
2001-01-17 18:26:21 +00:00
.Tn RPC
client for the remote program
2001-01-17 18:26:21 +00:00
.Fa prognum ,
version
2001-01-17 18:26:21 +00:00
.Fa versnum .
The transport used to pass messages to the service is
actually a buffer within the process's address space, so the
corresponding
2001-01-17 18:26:21 +00:00
.Tn RPC
server should live in the same address space; see
2001-01-17 18:26:21 +00:00
.Fn svcraw_create .
This allows simulation of
2001-01-17 18:26:21 +00:00
.Tn RPC
and acquisition of
2001-01-17 18:26:21 +00:00
.Tn RPC
overheads, such as round trip times, without any
kernel interference.
This routine returns
2001-01-17 18:26:21 +00:00
.Dv NULL
if it fails.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn RPC
client for the remote program
2001-01-17 18:26:21 +00:00
.Fa prognum ,
version
2001-01-17 18:26:21 +00:00
.Fa versnum ;
the client uses
2001-01-17 18:26:21 +00:00
.Tn TCP/IP
as a transport.
The remote program is located at Internet
address
2001-01-17 18:26:21 +00:00
.Fa addr .
If
2001-01-17 18:26:21 +00:00
.Fa addr\->sin_port
is zero, then it is set to the actual port that the remote
program is listening on (the remote
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service is consulted for this information).
The parameter
.Fa sockp
is a socket; if it is
2001-01-17 18:26:21 +00:00
.Dv RPC_ANYSOCK ,
then this routine opens a new one and sets
2001-01-17 18:26:21 +00:00
.Fa sockp .
Since
2001-01-17 18:26:21 +00:00
.Tn TCP Ns \-based
.Tn RPC
uses buffered
2001-01-17 18:26:21 +00:00
.Tn I/O ,
the user may specify the size of the send and receive buffers
with the parameters
2001-01-17 18:26:21 +00:00
.Fa sendsz
and
2001-01-17 18:26:21 +00:00
.Fa recvsz ;
values of zero choose suitable defaults.
This routine returns
2001-01-17 18:26:21 +00:00
.Dv NULL
if it fails.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn RPC
client for the remote program
2001-01-17 18:26:21 +00:00
.Fa prognum ,
version
2001-01-17 18:26:21 +00:00
.Fa versnum ;
1995-10-27 16:56:53 +00:00
the client uses
2001-01-17 18:26:21 +00:00
.Tn UDP/IP
as a transport.
The remote program is located at Internet
address
2001-01-17 18:26:21 +00:00
.Fa addr .
If
2001-01-17 18:26:21 +00:00
.Fa addr\->sin_port
is zero, then it is set to actual port that the remote
program is listening on (the remote
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service is consulted for this information).
The parameter
.Fa sockp
is a socket; if it is
2001-01-17 18:26:21 +00:00
.Dv RPC_ANYSOCK ,
then this routine opens a new one and sets
2001-01-17 18:26:21 +00:00
.Fa sockp .
The
2001-01-17 18:26:21 +00:00
.Tn UDP
transport resends the call message in intervals of
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fn clnt_call .
.Pp
Warning: since
2001-01-17 18:26:21 +00:00
.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.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn RPC
client for the remote program
2001-01-17 18:26:21 +00:00
.Fa prognum ,
on
2001-01-17 18:26:21 +00:00
.Fa versnum ;
1995-10-27 16:56:53 +00:00
the client uses
2001-01-17 18:26:21 +00:00
.Tn UDP/IP
as a transport.
The remote program is located at Internet
address
2001-01-17 18:26:21 +00:00
.Fa addr .
If
2001-01-17 18:26:21 +00:00
.Fa addr\->sin_port
is zero, then it is set to actual port that the remote
program is listening on (the remote
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service is consulted for this information).
The parameter
.Fa sockp
is a socket; if it is
2001-01-17 18:26:21 +00:00
.Dv RPC_ANYSOCK ,
then this routine opens a new one and sets
2001-01-17 18:26:21 +00:00
.Fa sockp .
The
2001-01-17 18:26:21 +00:00
.Tn UDP
transport resends the call message in intervals of
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.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.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft int
.Xc
.It Xo
.Fn get_myaddress "struct sockaddr_in *addr"
.Xc
.Pp
Stuff the machine's
2001-01-17 18:26:21 +00:00
.Tn IP
address into
2001-01-17 18:26:21 +00:00
.Fa addr ,
without consulting the library routines that deal with
2001-01-17 18:26:21 +00:00
.Pa /etc/hosts .
The port number is always set to
2001-01-17 18:26:21 +00:00
.Fn htons PMAPPORT .
Returns zero on success, non-zero on failure.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft "struct pmaplist *"
.Xc
.It Xo
.Fn pmap_getmaps "struct sockaddr_in *addr"
.Xc
.Pp
A user interface to the
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service, which returns a list of the current
2001-01-17 18:26:21 +00:00
.Tn RPC
program\-to\-port mappings
on the host located at
2001-01-17 18:26:21 +00:00
.Tn IP
address
2001-01-17 18:26:21 +00:00
.Fa addr .
This routine can return
2001-01-17 18:26:21 +00:00
.Dv NULL .
The command
2001-01-17 18:26:21 +00:00
.Dq Nm rpcinfo Fl p
uses this routine.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service, which returns the port number
on which waits a service that supports program number
2001-01-17 18:26:21 +00:00
.Fa prognum ,
version
2001-01-17 18:26:21 +00:00
.Fa versnum ,
and speaks the transport protocol associated with
2001-01-17 18:26:21 +00:00
.Fa protocol .
The value of
2001-01-17 18:26:21 +00:00
.Fa protocol
is most likely
2001-01-17 18:26:21 +00:00
.Dv IPPROTO_UDP
or
.Dv IPPROTO_TCP .
A return value of zero means that the mapping does not exist
or that
the
2001-01-17 18:26:21 +00:00
.Tn RPC
system failed to contact the remote
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service.
In the latter case, the global variable
.Va rpc_createerr
contains the
2001-01-17 18:26:21 +00:00
.Tn RPC
status.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service, which instructs
2001-01-17 18:26:21 +00:00
.Xr portmap 8
on the host at
2001-01-17 18:26:21 +00:00
.Tn IP
address
2001-01-17 18:26:21 +00:00
.Fa addr
to make an
2001-01-17 18:26:21 +00:00
.Tn RPC
call on your behalf to a procedure on that host.
The parameter
2001-01-17 18:26:21 +00:00
.Fa portp
will be modified to the program's port number if the
procedure
succeeds.
The definitions of other parameters are discussed
in
2001-01-17 18:26:21 +00:00
.Fn callrpc
and
2001-01-17 18:26:21 +00:00
.Fn clnt_call .
This procedure should be used for a
.Dq ping
and nothing
else.
See also
2001-01-17 18:26:21 +00:00
.Fn clnt_broadcast .
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn pmap_set "u_long prognum" "u_long versnum" "u_long protocol" "u_short port"
.Xc
.Pp
A user interface to the
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service, which establishes a mapping between the triple
2001-01-17 18:26:21 +00:00
.Pq Fa prognum , versnum , protocol
and
2001-01-17 18:26:21 +00:00
.Fa port
on the machine's
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service.
The value of
2001-01-17 18:26:21 +00:00
.Fa protocol
is most likely
2001-01-17 18:26:21 +00:00
.Dv IPPROTO_UDP
or
.Dv IPPROTO_TCP .
This routine returns one if it succeeds, zero otherwise.
Automatically done by
2001-01-17 18:26:21 +00:00
.Fn svc_register .
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn pmap_unset "u_long prognum" "u_long versnum"
.Xc
.Pp
A user interface to the
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service, which destroys all mapping between the triple
2001-01-17 18:26:21 +00:00
.Pq Fa prognum , versnum , *
and
2001-01-17 18:26:21 +00:00
.Fa ports
on the machine's
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service.
This routine returns one if it succeeds, zero
otherwise.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fa procname
with the
2001-01-17 18:26:21 +00:00
.Tn RPC
service package.
If a request arrives for program
.Fa prognum ,
version
2001-01-17 18:26:21 +00:00
.Fa versnum ,
and procedure
2001-01-17 18:26:21 +00:00
.Fa procnum ,
.Fa procname
is called with a pointer to its parameter(s);
2001-01-17 18:26:21 +00:00
.Fa progname
should return a pointer to its static result(s);
2001-01-17 18:26:21 +00:00
.Fa inproc
is used to decode the parameters while
2001-01-17 18:26:21 +00:00
.Fa outproc
is used to encode the results.
This routine returns zero if the registration succeeded, \-1
otherwise.
2001-01-17 18:26:21 +00:00
.Pp
Warning: remote procedures registered in this form
are accessed using the
2001-01-17 18:26:21 +00:00
.Tn UDP/IP
transport; see
2001-01-17 18:26:21 +00:00
.Fn svcudp_create
for restrictions.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Vt "struct rpc_createerr" rpc_createerr ;
.Xc
.Pp
A global variable whose value is set by any
2001-01-17 18:26:21 +00:00
.Tn RPC
client creation routine
2001-01-17 18:26:21 +00:00
that does not succeed.
Use the routine
.Fn clnt_pcreateerror
to print the reason why.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn svc_destroy "SVCXPRT * xprt"
.Xc
.Pp
A macro that destroys the
2001-01-17 18:26:21 +00:00
.Tn RPC
service transport handle,
2001-01-17 18:26:21 +00:00
.Fa xprt .
Destruction usually involves deallocation
of private data structures, including
2001-01-17 18:26:21 +00:00
.Fa xprt
itself.
Use of
.Fa xprt
is undefined after calling this routine.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Vt fd_set svc_fdset ;
.Xc
.Pp
A global variable reflecting the
2001-01-17 18:26:21 +00:00
.Tn RPC
service side's
read file descriptor bit mask; it is suitable as a template parameter
to the
2001-01-17 18:26:21 +00:00
.Xr select 2
system call.
This is only of interest
if a service implementor does not call
2001-01-17 18:26:21 +00:00
.Fn svc_run ,
but rather does his own asynchronous event processing.
2001-01-17 18:26:21 +00:00
This variable is read\-only (do not pass its address to
.Xr select 2 ! ) ,
yet it may change after calls to
2001-01-17 18:26:21 +00:00
.Fn svc_getreqset
or any creation routines.
As well, note that if the process has descriptor limits
which are extended beyond
2001-01-17 18:26:21 +00:00
.Dv FD_SETSIZE ,
this variable will only be usable for the first
2001-01-17 18:26:21 +00:00
.Dv FD_SETSIZE
descriptors.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Vt int svc_fds ;
.Xc
.Pp
Similar to
2001-01-17 18:26:21 +00:00
.Va svc_fdset ,
but limited to 32 descriptors.
This
interface is obsoleted by
2001-01-17 18:26:21 +00:00
.Va svc_fdset .
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn svc_freeargs "SVCXPRT *xprt" "xdrproc_t inproc" "char *in"
.Xc
.Pp
A macro that frees any data allocated by the
2001-01-17 18:26:21 +00:00
.Tn RPC/XDR
system when it decoded the arguments to a service procedure
using
2001-01-17 18:26:21 +00:00
.Fn svc_getargs .
This routine returns 1 if the results were successfully
freed,
and zero otherwise.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn svc_getargs "SVCXPRT *xprt" "xdrproc_t inproc" "char *in"
.Xc
.Pp
A macro that decodes the arguments of an
2001-01-17 18:26:21 +00:00
.Tn RPC
request
associated with the
2001-01-17 18:26:21 +00:00
.Tn RPC
service transport handle,
2001-01-17 18:26:21 +00:00
.Fa xprt .
The parameter
2001-01-17 18:26:21 +00:00
.Fa in
is the address where the arguments will be placed;
2001-01-17 18:26:21 +00:00
.Fa inproc
is the
2001-01-17 18:26:21 +00:00
.Tn XDR
routine used to decode the arguments.
This routine returns one if decoding succeeds, and zero
otherwise.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn RPC
service transport handle,
2001-01-17 18:26:21 +00:00
.Fa xprt .
.Pp
.It Xo
.Ft void
2001-01-17 18:26:21 +00:00
.Fn svc_getreqset "fd_set *rdfds"
.Xc
.Pp
This routine is only of interest if a service implementor
does not call
2001-01-17 18:26:21 +00:00
.Fn svc_run ,
but instead implements custom asynchronous event processing.
It is called when the
2001-01-17 18:26:21 +00:00
.Xr select 2
system call has determined that an
2001-01-17 18:26:21 +00:00
.Tn RPC
request has arrived on some
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fa rdfds
have been serviced.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft void
2001-01-17 18:26:21 +00:00
.Fn svc_getreq "int rdfds"
.Xc
.Pp
Similar to
2001-01-17 18:26:21 +00:00
.Fn svc_getreqset ,
but limited to 32 descriptors.
This interface is obsoleted by
2001-01-17 18:26:21 +00:00
.Fn svc_getreqset .
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fo svc_register
.Fa "SVCXPRT *xprt"
.Fa "u_long prognum"
.Fa "u_long versnum"
.Fa "void (*dispatch)(struct svc_req *, SVCXPRT *)"
.Fa "int protocol"
2001-01-17 18:26:21 +00:00
.Fc
.Xc
.Pp
Associates
2001-01-17 18:26:21 +00:00
.Fa prognum
and
2001-01-17 18:26:21 +00:00
.Fa versnum
with the service dispatch procedure,
2001-01-17 18:26:21 +00:00
.Fn dispatch .
If
2001-01-17 18:26:21 +00:00
.Fa protocol
is zero, the service is not registered with the
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service.
If
.Fa protocol
is non-zero, then a mapping of the triple
2001-01-17 18:26:21 +00:00
.Pq Fa prognum , versnum , protocol
to
2001-01-17 18:26:21 +00:00
.Fa xprt\->xp_port
is established with the local
2001-01-17 18:26:21 +00:00
.Xr portmap 8
service (generally
2001-01-17 18:26:21 +00:00
.Fa protocol
is zero,
2001-01-17 18:26:21 +00:00
.Dv IPPROTO_UDP
or
.Dv IPPROTO_TCP ) .
The procedure
2001-01-17 18:26:21 +00:00
.Fn dispatch
has the following form:
2001-01-17 18:26:21 +00:00
.Bd -ragged -offset indent
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn dispatch "struct svc_req *request" "SVCXPRT *xprt"
.Ed
.Pp
The
2001-01-17 18:26:21 +00:00
.Fn svc_register
routine returns one if it succeeds, and zero otherwise.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Fn svc_run
.Xc
.Pp
This routine never returns.
It waits for
2001-01-17 18:26:21 +00:00
.Tn RPC
requests to arrive, and calls the appropriate service
procedure using
2001-01-17 18:26:21 +00:00
.Fn svc_getreq
when one arrives.
This procedure is usually waiting for a
2001-01-17 18:26:21 +00:00
.Xr select 2
system call to return.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn svc_sendreply "SVCXPRT *xprt" "xdrproc_t outproc" "char *out"
.Xc
.Pp
Called by an
2001-01-17 18:26:21 +00:00
.Tn RPC
service's dispatch routine to send the results of a
2001-01-17 18:26:21 +00:00
remote procedure call.
The parameter
.Fa xprt
is the request's associated transport handle;
2001-01-17 18:26:21 +00:00
.Fa outproc
is the
2001-01-17 18:26:21 +00:00
.Tn XDR
routine which is used to encode the results; and
2001-01-17 18:26:21 +00:00
.Fa out
is the address of the results.
This routine returns one if it succeeds, zero otherwise.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Pq Fa prognum , versnum
to dispatch routines, and of the triple
2001-01-17 18:26:21 +00:00
.Pq Fa prognum , versnum , *
to port number.
2001-01-17 18:26:21 +00:00
.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.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.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.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn RPC
package.
Service implementors usually do not need this routine.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn svcerr_progvers "SVCXPRT *xprt" "u_long low_vers" "u_long high_vers"
2001-01-17 18:26:21 +00:00
.Xc
.Pp
Called when the desired version of a program is not registered
with the
2001-01-17 18:26:21 +00:00
.Tn RPC
package.
Service implementors usually do not need this routine.
2001-01-17 18:26:21 +00:00
.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.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
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
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn RPC
client should live in the same
address space;
see
2001-01-17 18:26:21 +00:00
.Fn clntraw_create .
This routine allows simulation of
2001-01-17 18:26:21 +00:00
.Tn RPC
and acquisition of
2001-01-17 18:26:21 +00:00
.Tn RPC
overheads (such as round trip times), without any kernel
interference.
This routine returns
2001-01-17 18:26:21 +00:00
.Dv NULL
if it fails.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn TCP/IP Ns \-based
.Tn RPC
service transport, to which it returns a pointer.
The transport is associated with the socket
2001-01-17 18:26:21 +00:00
.Fa sock ,
which may be
2001-01-17 18:26:21 +00:00
.Dv RPC_ANYSOCK ,
in which case a new socket is created.
If the socket is not bound to a local
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fa xprt\->xp_port
is the transport's port number.
This routine returns
2001-01-17 18:26:21 +00:00
.Dv NULL
if it fails.
Since
2001-01-17 18:26:21 +00:00
.Tn TCP Ns \-based
.Tn RPC
uses buffered
2001-01-17 18:26:21 +00:00
.Tn I/O ,
users may specify the size of buffers; values of zero
choose suitable defaults.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn TCP .
.Fa sendsize
and
2001-01-17 18:26:21 +00:00
.Fa recvsize
indicate sizes for the send and receive buffers.
If they are
zero, a reasonable default is chosen.
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Tn UDP/IP Ns \-based
.Tn RPC
service transport, to which it returns a pointer.
The transport is associated with the socket
2001-01-17 18:26:21 +00:00
.Fa sock ,
which may be
2001-01-17 18:26:21 +00:00
.Dv RPC_ANYSOCK ,
in which case a new socket is created.
If the socket is not bound to a local
2001-01-17 18:26:21 +00:00
.Tn UDP
port, then this routine binds it to an arbitrary port.
Upon
completion,
2001-01-17 18:26:21 +00:00
.Fa xprt\->xp_sock
is the transport's socket descriptor, and
2001-01-17 18:26:21 +00:00
.Fa xprt\->xp_port
is the transport's port number.
This routine returns
2001-01-17 18:26:21 +00:00
.Dv NULL
if it fails.
2001-01-17 18:26:21 +00:00
.Pp
This allows the user to specify the maximum packet size for sending and
receiving
2001-01-17 18:26:21 +00:00
.Tn UDP Ns \-based
.Tn RPC
messages.
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn xdr_accepted_reply "XDR *xdrs" "struct accepted_reply *ar"
.Xc
.Pp
Used for encoding
2001-01-17 18:26:21 +00:00
.Tn RPC
reply messages.
This routine is useful for users who
wish to generate
2001-01-17 18:26:21 +00:00
.Tn RPC Ns \-style
messages without using the
2001-01-17 18:26:21 +00:00
.Tn RPC
package.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn xdr_authunix_parms "XDR *xdrs" "struct authunix_parms *aupp"
.Xc
.Pp
Used for describing
2001-01-17 18:26:21 +00:00
.Ux
credentials.
This routine is useful for users
who wish to generate these credentials without using the
2001-01-17 18:26:21 +00:00
.Tn RPC
authentication package.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn xdr_callhdr "XDR *xdrs" "struct rpc_msg *chdr"
.Xc
.Pp
Used for describing
2001-01-17 18:26:21 +00:00
.Tn RPC
call header messages.
This routine is useful for users who wish to generate
2001-01-17 18:26:21 +00:00
.Tn RPC Ns \-style
messages without using the
2001-01-17 18:26:21 +00:00
.Tn RPC
package.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn xdr_callmsg "XDR *xdrs" "struct rpc_msg *cmsg"
.Xc
.Pp
Used for describing
2001-01-17 18:26:21 +00:00
.Tn RPC
call messages.
This routine is useful for users who wish to generate
2001-01-17 18:26:21 +00:00
.Tn RPC Ns \-style
messages without using the
2001-01-17 18:26:21 +00:00
.Tn RPC
package.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn xdr_opaque_auth "XDR *xdrs" "struct opaque_auth *ap"
.Xc
.Pp
Used for describing
2001-01-17 18:26:21 +00:00
.Tn RPC
authentication information messages.
This routine is useful for users who wish to generate
2001-01-17 18:26:21 +00:00
.Tn RPC Ns \-style
messages without using the
2001-01-17 18:26:21 +00:00
.Tn RPC
package.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Vt struct pmap ;
.Xc
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn xdr_pmap "XDR *xdrs" "struct pmap *regs"
.Xc
.Pp
Used for describing parameters to various
2001-01-17 18:26:21 +00:00
.Xr portmap 8
procedures, externally.
This routine is useful for users who wish to generate
these parameters without using the
2001-01-17 18:26:21 +00:00
.Fn pmap_*
interface.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.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
2001-01-17 18:26:21 +00:00
.Fn pmap_*
interface.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn xdr_rejected_reply "XDR *xdrs" "struct rejected_reply *rr"
.Xc
.Pp
Used for describing
2001-01-17 18:26:21 +00:00
.Tn RPC
reply messages.
This routine is useful for users who wish to generate
2001-01-17 18:26:21 +00:00
.Tn RPC Ns \-style
messages without using the
2001-01-17 18:26:21 +00:00
.Tn RPC
package.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft bool_t
2001-01-17 18:26:21 +00:00
.Fn xdr_replymsg "XDR *xdrs" "struct rpc_msg *rmsg"
.Xc
.Pp
Used for describing
2001-01-17 18:26:21 +00:00
.Tn RPC
reply messages.
This routine is useful for users who wish to generate
2001-01-17 18:26:21 +00:00
.Tn RPC
style messages without using the
2001-01-17 18:26:21 +00:00
.Tn RPC
package.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn xprt_register "SVCXPRT *xprt"
.Xc
.Pp
After
2001-01-17 18:26:21 +00:00
.Tn RPC
service transport handles are created,
they should register themselves with the
2001-01-17 18:26:21 +00:00
.Tn RPC
service package.
This routine modifies the global variable
2001-01-17 18:26:21 +00:00
.Va svc_fds .
Service implementors usually do not need this routine.
2001-01-17 18:26:21 +00:00
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn xprt_unregister "SVCXPRT *xprt"
.Xc
.Pp
Before an
2001-01-17 18:26:21 +00:00
.Tn RPC
service transport handle is destroyed,
it should unregister itself with the
2001-01-17 18:26:21 +00:00
.Tn RPC
service package.
This routine modifies the global variable
2001-01-17 18:26:21 +00:00
.Va svc_fds .
Service implementors usually do not need this routine.
2001-01-17 18:26:21 +00:00
.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