summaryrefslogtreecommitdiffstats
path: root/lib/libc/rpc
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2001-01-17 18:26:21 +0000
committerru <ru@FreeBSD.org>2001-01-17 18:26:21 +0000
commit2b24819cd873cc1df3cdf7e18c87c9cf18f8b12c (patch)
tree0349b5edb0bb8b4bdb3f49b6c0d915f846dc3a78 /lib/libc/rpc
parent295d5f80dc42943707c9e8a1996233b48ffa20ae (diff)
downloadFreeBSD-src-2b24819cd873cc1df3cdf7e18c87c9cf18f8b12c.zip
FreeBSD-src-2b24819cd873cc1df3cdf7e18c87c9cf18f8b12c.tar.gz
man(7) -> mdoc(7).
Diffstat (limited to 'lib/libc/rpc')
-rw-r--r--lib/libc/rpc/des_crypt.3157
-rw-r--r--lib/libc/rpc/publickey.370
-rw-r--r--lib/libc/rpc/publickey.544
-rw-r--r--lib/libc/rpc/rpc.32221
-rw-r--r--lib/libc/rpc/rtime.367
5 files changed, 1143 insertions, 1416 deletions
diff --git a/lib/libc/rpc/des_crypt.3 b/lib/libc/rpc/des_crypt.3
index e8651fe..4b65d6d 100644
--- a/lib/libc/rpc/des_crypt.3
+++ b/lib/libc/rpc/des_crypt.3
@@ -1,130 +1,123 @@
.\" @(#)des_crypt.3 2.1 88/08/11 4.0 RPCSRC; from 1.16 88/03/02 SMI;
.\" $FreeBSD$
.\"
-.TH DES_CRYPT 3 "6 October 1987"
-.SH NAME
-des_crypt, ecb_crypt, cbc_crypt, des_setparity \- fast DES encryption
-.SH SYNOPSIS
-.nf
-.B #include <des_crypt.h>
-.LP
-.B int ecb_crypt(key, data, datalen, mode)
-.B char *key;
-.B char *data;
-.B unsigned datalen;
-.B unsigned mode;
-.LP
-.B int cbc_crypt(key, data, datalen, mode, ivec)
-.B char *key;
-.B char *data;
-.B unsigned datalen;
-.B unsigned mode;
-.B char *ivec;
-.LP
-.B void des_setparity(key)
-.B char *key;
-.fi
-.SH DESCRIPTION
-.IX encryption cbc_crypt "" \fLcbc_crypt\fP
-.IX "des encryption" cbc_crypt "DES encryption" \fLcbc_crypt\fP
-.IX encryption des_setparity "" \fLdes_setparity\fP
-.IX "des encryption" des_setparity "DES encryption" \fLdes_setparity\fP
-.B ecb_crypt(\|)
+.Dd October 6, 1987
+.Dt DES_CRYPT 3
+.Os
+.Sh NAME
+.Nm des_crypt , ecb_crypt , cbc_crypt , des_setparity
+.Nd "fast DES encryption"
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.Fd "#include <rpc/des_crypt.h>"
+.Ft int
+.Fn ecb_crypt "char *key" "char *data" "unsigned datalen" "unsigned mode"
+.Ft int
+.Fn cbc_crypt "char *key" "char *data" "unsigned datalen" "unsigned mode" "char *ivec"
+.Ft void
+.Fn des_setparity "char *key"
+.Sh DESCRIPTION
+.Fn ecb_crypt
and
-.B cbc_crypt(\|)
+.Fn cbc_crypt
implement the
-.SM NBS
-.SM DES
+.Tn NBS
+.Tn DES
(Data Encryption Standard).
These routines are faster and more general purpose than
-.BR crypt (3).
+.Xr crypt 3 .
They also are able to utilize
-.SM DES
+.Tn DES
hardware if it is available.
-.B ecb_crypt(\|)
+.Fn ecb_crypt
encrypts in
-.SM ECB
+.Tn ECB
(Electronic Code Book)
mode, which encrypts blocks of data independently.
-.B cbc_crypt(\|)
+.Fn cbc_crypt
encrypts in
-.SM CBC
+.Tn CBC
(Cipher Block Chaining)
mode, which chains together
successive blocks.
-.SM CBC
+.Tn CBC
mode protects against insertions, deletions and
substitutions of blocks.
Also, regularities in the clear text will
not appear in the cipher text.
-.LP
-Here is how to use these routines. The first parameter,
-.IR key ,
+.Pp
+Here is how to use these routines.
+The first parameter,
+.Fa key ,
is the 8-byte encryption key with parity.
To set the key's parity, which for
-.SM DES
+.Tn DES
is in the low bit of each byte, use
-.IR des_setparity .
+.Fn des_setparity .
The second parameter,
-.IR data ,
+.Fa data ,
contains the data to be encrypted or decrypted.
The
third parameter,
-.IR datalen ,
+.Fa datalen ,
is the length in bytes of
-.IR data ,
-which must be a multiple of 8. The fourth parameter,
-.IR mode ,
+.Fa data ,
+which must be a multiple of 8.
+The fourth parameter,
+.Fa mode ,
is formed by
-.SM OR\s0'ing
-together some things. For the encryption direction 'or' in either
-.SM DES_ENCRYPT
+.Em OR Ns 'ing
+together some things.
+For the encryption direction
+.Em OR
+in either
+.Dv DES_ENCRYPT
or
-.SM DES_DECRYPT\s0.
+.Dv DES_DECRYPT .
For software versus hardware
-encryption, 'or' in either
-.SM DES_HW
+encryption,
+.Em OR
+in either
+.Dv DES_HW
or
-.SM DES_SW\s0.
+.Dv DES_SW .
If
-.SM DES_HW
+.Dv DES_HW
is specified, and there is no hardware, then the encryption is performed
in software and the routine returns
-.SM DESERR_NOHWDEVICE\s0.
+.Er DESERR_NOHWDEVICE .
For
-.IR cbc_crypt ,
+.Fn cbc_crypt ,
the parameter
-.I ivec
+.Fa ivec
is the the 8-byte initialization
-vector for the chaining. It is updated to the next initialization
+vector for the chaining.
+It is updated to the next initialization
vector upon return.
-.LP
-.SH "SEE ALSO"
-.BR des (1),
-.BR crypt (3)
-.SH DIAGNOSTICS
-.PD 0
-.TP 20
-.SM DESERR_NONE
+.Sh ERRORS
+.Bl -tag -width [DESERR_NOHWDEVICE] -compact
+.It Bq Er DESERR_NONE
No error.
-.TP
-.SM DESERR_NOHWDEVICE
+.It Bq Er DESERR_NOHWDEVICE
Encryption succeeded, but done in software instead of the requested hardware.
-.TP
-.SM DESERR_HWERR
+.It Bq Er DESERR_HWERR
An error occurred in the hardware or driver.
-.TP
-.SM DESERR_BADPARAM
+.It Bq Er DESERR_BADPARAM
Bad parameter to routine.
-.PD
-.LP
+.El
+.Pp
Given a result status
-.IR stat ,
+.Va stat ,
the macro
-.SM DES_FAILED\c
-.BR ( stat )
+.Fn DES_FAILED stat
is false only for the first two statuses.
-.SH RESTRICTIONS
+.Sh SEE ALSO
+.\" .Xr des 1 ,
+.Xr crypt 3
+.Sh RESTRICTIONS
These routines are not available in RPCSRC 4.0.
-This information is provided to describe the DES interface expected by
+This information is provided to describe the
+.Tn DES
+interface expected by
Secure RPC.
diff --git a/lib/libc/rpc/publickey.3 b/lib/libc/rpc/publickey.3
index 79608d6..5f9489b 100644
--- a/lib/libc/rpc/publickey.3
+++ b/lib/libc/rpc/publickey.3
@@ -1,47 +1,51 @@
.\" @(#)publickey.3r 2.1 88/08/07 4.0 RPCSRC
.\" $FreeBSD$
.\"
-.TH PUBLICKEY 3R "6 October 1987"
-.SH NAME
-publickey, getpublickey, getsecretkey \- get public or secret key
-.SH SYNOPSIS
-.nf
-.B #include <rpc/rpc.h>
-.B #include <rpc/key_prot.h>
-.LP
-.B getpublickey(netname, publickey)
-.B char netname[\s-1MAXNETNAMELEN\s0+1];
-.B char publickey[\s-1HEXKEYBYTES\s0+1];
-.LP
-.B getsecretkey(netname, secretkey, passwd)
-.B char netname[\s-1MAXNETNAMELEN\s0+1];
-.B char secretkey[\s-1HEXKEYBYTES\s0+1];
-.B char *passwd;
-.fi
-.SH DESCRIPTION
-.IX "getpublickey function" "" "\fLgetpublickey()\fP function"
-.IX "getsecretkey function" "" "\fLgetsecretkey()\fP function"
+.Dd October 6, 1987
+.Dt PUBLICKEY 3
+.Os
+.Sh NAME
+.Nm publickey , getpublickey , getsecretkey
+.Nd "get public or secret key"
+.Sh LIBRARY
+.Lb librpcsvc
+.Sh SYNOPSIS
+.Fd "#include <rpc/rpc.h>"
+.Fd "#include <rpc/key_prot.h>"
+.Ft int
+.Fo getpublickey
+.Fa "char netname[MAXNETNAMELEN+1]"
+.Fa "char publickey[HEXKEYBYTES+1]"
+.Fc
+.Ft int
+.Fo getsecretkey
+.Fa "char netname[MAXNETNAMELEN+1]"
+.Fa "char secretkey[HEXKEYBYTES+1]"
+.Fa "char *passwd"
+.Fc
+.Sh DESCRIPTION
These routines are used to get public and secret keys from the
-.SM YP
+.Tn YP
database.
-.B getsecretkey(\|)
+.Fn getsecretkey
has an extra argument,
-.IR passwd ,
+.Fa passwd ,
which is used to decrypt the encrypted secret key stored in the database.
Both routines return 1 if they are successful in finding the key, 0 otherwise.
The keys are returned as
-.SM NULL\s0-terminated,
+.Dv NULL Ns \-terminated ,
hexadecimal strings.
If the password supplied to
-.B getsecretkey(\|)
+.Fn getsecretkey
fails to decrypt the secret key, the routine will return 1 but the
-.I secretkey
+.Fa secretkey
argument will be a
-.SM NULL
-string (``'').
-.SH "SEE ALSO"
-.BR publickey (5)
-.LP
-.I \s-1RPC\s0 Programmer's Manual
+.Dv NULL
+string
+.Pq Dq .
+.Sh SEE ALSO
+.Xr publickey 5
+.Pp
+.%T "RPC Programmer's Manual"
in
-.TX NETP
+.Pa /usr/share/doc/psd/23.rpc .
diff --git a/lib/libc/rpc/publickey.5 b/lib/libc/rpc/publickey.5
index b289933..0f008f2 100644
--- a/lib/libc/rpc/publickey.5
+++ b/lib/libc/rpc/publickey.5
@@ -1,13 +1,15 @@
.\" $FreeBSD$
.\" @(#)publickey.5 2.1 88/08/07 4.0 RPCSRC; from 1.6 88/02/29 SMI;
-.TH PUBLICKEY 5 "19 October 1987"
-.SH NAME
-publickey \- public key database
-.SH SYNOPSIS
-.B /etc/publickey
-.SH DESCRIPTION
-.LP
-.B /etc/publickey
+.Dd October 19, 1987
+.Dt PUBLICKEY 5
+.Os
+.Sh NAME
+.Nm publickey
+.Nd "public key database"
+.Sh SYNOPSIS
+.Pa /etc/publickey
+.Sh DESCRIPTION
+.Pa /etc/publickey
is the public key database used for secure
networking.
Each entry in
@@ -18,21 +20,23 @@ public key (in hex
notation), a colon, and then the user's
secret key encrypted with
its login password (also in hex notation).
-.LP
+.Pp
This file is altered either by the user through the
-.BR chkey (1)
+.Xr chkey 1
command or by the system administrator through the
-.BR newkey (8)
+.Xr newkey 8
command.
The file
-.B /etc/publickey
-should only contain data on the NIS master machine, where it
+.Pa /etc/publickey
+should only contain data on the
+.Tn NIS
+master machine, where it
is converted into the
-.SM NIS
+.Tn NIS
database
-.BR publickey.byname .
-.SH SEE ALSO
-.BR chkey (1),
-.BR publickey (3R),
-.BR newkey (8),
-.BR ypupdated (8C)
+.Pa publickey.byname .
+.Sh SEE ALSO
+.Xr chkey 1 ,
+.Xr publickey 3 ,
+.Xr newkey 8 ,
+.Xr ypupdated 8
diff --git a/lib/libc/rpc/rpc.3 b/lib/libc/rpc/rpc.3
index 89d8942..4e9001d 100644
--- a/lib/libc/rpc/rpc.3
+++ b/lib/libc/rpc/rpc.3
@@ -1,10 +1,21 @@
.\" @(#)rpc.3n 2.4 88/08/08 4.0 RPCSRC; from 1.19 88/06/24 SMI
.\" $FreeBSD$
.\"
-.TH RPC 3 "16 February 1988"
-.SH NAME
-rpc \- library routines for remote procedure calls
-.SH SYNOPSIS AND DESCRIPTION
+.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
@@ -13,1755 +24,1469 @@ 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.
-.LP
-Routines that are used for Secure RPC (DES authentication) are described in
-.BR rpc_secure (3).
-Secure RPC can be used only if DES encryption is available.
-.LP
-.ft B
-.nf
-.sp .5
-#include <rpc/rpc.h>
-.fi
-.ft R
-.br
-.if t .ne 8
-.LP
-.ft B
-.nf
-.sp .5
-void
-auth_destroy(auth)
-\s-1AUTH\s0 *auth;
-.fi
-.ft R
-.IP
+.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
-.IR auth .
+.Fa auth .
Destruction usually involves deallocation of private data
structures.
The use of
-.I auth
+.Fa auth
is undefined after calling
-.BR auth_destroy(\|) .
-.br
-.if t .ne 6
-.LP
-.ft B
-.nf
-.sp .5
-\s-1AUTH\s0 *
-authnone_create(\|)
-.fi
-.ft R
-.IP
-Create and returns an
-.SM RPC
+.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
-.SM RPC.
-.if t .ne 10
-.LP
-.ft B
-.nf
-.sp .5
-\s-1AUTH\s0 *
-authunix_create(host, uid, gid, len, aup_gids)
-char *host;
-int uid, gid, len, *aup.gids;
-.fi
-.ft R
-.IP
+.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
-.SM RPC
+.Tn RPC
authentication handle that contains
-.UX
+.Ux
authentication information.
The parameter
-.I host
+.Fa host
is the name of the machine on which the information was
created;
-.I uid
-is the user's user
-.SM ID ;
-.I gid
-is the user's current group
-.SM ID ;
-.I len
+.Fa uid
+is the user's user ID;
+.Fa gid
+is the user's current group ID;
+.Fa len
and
-.I aup_gids
+.Fa aup_gids
refer to a counted array of groups to which the user belongs.
It is easy to impersonate a user.
-.br
-.if t .ne 5
-.LP
-.ft B
-.nf
-.sp .5
-\s-1AUTH\s0 *
-authunix_create_default(\|)
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Ft "AUTH *"
+.Xc
+.It Xo
+.Fn authunix_create_default
+.Xc
+.Pp
Calls
-.B authunix_create(\|)
+.Fn authunix_create
with the appropriate parameters.
-.br
-.if t .ne 13
-.LP
-.ft B
-.nf
-.sp .5
-callrpc(host, prognum, versnum, procnum, inproc, in, outproc, out)
-char *host;
-u_long prognum, versnum, procnum;
-char *in, *out;
-xdrproc_t inproc, outproc;
-.fi
-.ft R
-.IP
+.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
-.IR prognum ,
-.IR versnum ,
+.Fa prognum ,
+.Fa versnum ,
and
-.I procnum
-on the machine,
-.IR host .
+.Fa procnum
+on the machine
+.Fa host .
The parameter
-.I in
+.Fa in
is the address of the procedure's argument(s), and
-.I out
+.Fa out
is the address of where to place the result(s);
-.I inproc
+.Fa inproc
is used to encode the procedure's parameters, and
-.I outproc
+.Fa outproc
is used to decode the procedure's results.
This routine returns zero if it succeeds, or the value of
-.B "enum clnt_stat"
+.Vt "enum clnt_stat"
cast to an integer if it fails.
The routine
-.B clnt_perrno(\|)
+.Fn clnt_perrno
is handy for translating failure statuses into messages.
-.IP
+.Pp
Warning: calling remote procedures with this routine
uses
-.SM UDP/IP
+.Tn UDP/IP
as a transport; see
-.B clntudp_create(\|)
+.Fn clntudp_create
for restrictions.
You do not have control of timeouts or authentication using
this routine.
-.br
-.if t .ne 16
-.LP
-.ft B
-.nf
-.sp .5
-enum clnt_stat
-clnt_broadcast(prognum, versnum, procnum, inproc, in, outproc, out, eachresult)
-u_long prognum, versnum, procnum;
-char *in, *out;
-xdrproc_t inproc, outproc;
-resultproc_t eachresult;
-.fi
-.ft R
-.IP
+.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 "resultproc_t eachresult"
+.Fc
+.Xc
+.Pp
Like
-.BR callrpc(\|) ,
+.Fn callrpc ,
except the call message is broadcast to all locally
connected broadcast nets.
Each time it receives a
response, this routine calls
-.BR eachresult(\|) ,
+.Fn eachresult ,
whose form is:
-.IP
-.RS 1i
-.ft B
-.nf
-eachresult(out, addr)
-char *out;
-struct sockaddr_in *addr;
-.ft R
-.fi
-.RE
-.IP
+.Bd -ragged -offset indent
+.Fn eachresult "char *out" "struct sockaddr_in *addr"
+.Ed
+.Pp
where
-.I out
+.Fa out
is the same as
-.I out
+.Fa out
passed to
-.BR clnt_broadcast(\|) ,
+.Fn clnt_broadcast ,
except that the remote procedure's output is decoded there;
-.I addr
+.Fa addr
points to the address of the machine that sent the results.
If
-.B eachresult(\|)
+.Fn eachresult
returns zero,
-.B clnt_broadcast(\|)
+.Fn clnt_broadcast
waits for more replies; otherwise it returns with appropriate
status.
-.IP
+.Pp
Warning: broadcast sockets are limited in size to the
maximum transfer unit of the data link.
For ethernet,
this value is 1500 bytes.
-.br
-.if t .ne 13
-.LP
-.ft B
-.nf
-.sp .5
-enum clnt_stat
-clnt_call(clnt, procnum, inproc, in, outproc, out, tout)
-\s-1CLIENT\s0 *clnt;
-u_long
-procnum;
-xdrproc_t inproc, outproc;
-char *in, *out;
-struct timeval tout;
-.fi
-.ft R
-.IP
+.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
-.I procnum
+.Fa procnum
associated with the client handle,
-.IR clnt ,
+.Fa clnt ,
which is obtained with an
-.SM RPC
+.Tn RPC
client creation routine such as
-.BR clnt_create(\|) .
+.Fn clnt_create .
The parameter
-.I in
+.Fa in
is the address of the procedure's argument(s), and
-.I out
+.Fa out
is the address of where to place the result(s);
-.I inproc
+.Fa inproc
is used to encode the procedure's parameters, and
-.I outproc
+.Fa outproc
is used to decode the procedure's results;
-.I tout
+.Fa tout
is the time allowed for results to come back.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-clnt_destroy(clnt)
-\s-1CLIENT\s0 *clnt;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn clnt_destroy "CLIENT *clnt"
+.Xc
+.Pp
A macro that destroys the client's
-.SM RPC
+.Tn RPC
handle.
Destruction usually involves deallocation
of private data structures, including
-.I clnt
-itself. Use of
-.I clnt
+.Fa clnt
+itself.
+Use of
+.Fa clnt
is undefined after calling
-.BR clnt_destroy(\|) .
+.Fn clnt_destroy .
If the
-.SM RPC
+.Tn RPC
library opened the associated socket, it will close it also.
Otherwise, the socket remains open.
-.br
-.if t .ne 10
-.LP
-.ft B
-.nf
-.sp .5
-\s-1CLIENT\s0 *
-clnt_create(host, prog, vers, proto)
-char *host;
-u_long prog, vers;
-char *proto;
-.fi
-.ft R
-.IP
+.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.
-.I host
+.Fa host
identifies the name of the remote host where the server
is located.
-.I proto
+.Fa proto
indicates which kind of transport protocol to use.
The
-currently supported values for this field are \(lqudp\(rq
-and \(lqtcp\(rq.
+currently supported values for this field are
+.Qq Li udp
+and
+.Qq Li tcp .
Default timeouts are set, but can be modified using
-.BR clnt_control(\|) .
-.IP
+.Fn clnt_control .
+.Pp
Warning: Using
-.SM UDP
-has its shortcomings. Since
-.SM UDP\s0-based
-.SM RPC
+.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.
-.br
-.if t .ne 10
-.LP
-.ft B
-.nf
-.sp .5
-bool_t
-clnt_control(cl, req, info)
-\s-1CLIENT\s0 *cl;
-u_int req;
-char *info;
-.fi
-.ft R
-.IP
+.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.
-.I req
+.Fa req
indicates the type of operation, and
-.I info
+.Fa info
is a pointer to the information.
For both
-.SM UDP
+.Tn UDP
and
-.SM TCP\s0,
+.Tn TCP ,
the supported values of
-.I req
+.Fa req
and their argument types and what they do are:
-.IP
-.nf
-.ta +2.0i +2.0i +2.0i
-.SM CLSET_TIMEOUT\s0 struct timeval set total timeout
-.SM CLGET_TIMEOUT\s0 struct timeval get total timeout
-.fi
-.IP
+.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
-.BR clnt_control(\|) ,
+.Fn clnt_control ,
the timeout parameter passed to
-.B clnt_call(\|)
+.Fn clnt_call
will be ignored in all future calls.
-.IP
-.nf
-.SM CLGET_SERVER_ADDR\s0 struct sockaddr_in get server's address
-.fi
-.br
-.IP
+.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
-.SM UDP
+.Tn UDP
only:
-.IP
-.nf
-.ta +2.0i ; +2.0i ; +2.0i
-.SM CLSET_RETRY_TIMEOUT\s0 struct timeval set the retry timeout
-.SM CLGET_RETRY_TIMEOUT\s0 struct timeval get the retry timeout
-.fi
-.br
-.IP
+.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
-.SM "UDP RPC"
+.Tn "UDP RPC"
waits for the server to reply before
retransmitting the request.
-.br
-.if t .ne 10
-.LP
-.ft B
-.nf
-.sp .5
-clnt_freeres(clnt, outproc, out)
-\s-1CLIENT\s0 *clnt;
-xdrproc_t outproc;
-char *out;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn clnt_freeres "CLIENT *clnt" "xdrproc_t outproc" "char *out"
+.Xc
+.Pp
A macro that frees any data allocated by the
-.SM RPC/XDR
+.Tn RPC/XDR
system when it decoded the results of an
-.SM RPC
-call. The
-parameter
-.I out
+.Tn RPC
+call.
+The parameter
+.Fa out
is the address of the results, and
-.I outproc
+.Fa outproc
is the
-.SM XDR
+.Tn XDR
routine describing the results.
This routine returns one if the results were successfully
freed,
and zero otherwise.
-.br
-.if t .ne 6
-.LP
-.ft B
-.nf
-.sp .5
-void
-clnt_geterr(clnt, errp)
-\s-1CLIENT\s0 *clnt;
-struct rpc_err *errp;
-.fi
-.ft R
-.IP
+.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
-.IR errp .
-.br
-.if t .ne 8
-.LP
-.ft B
-.nf
-.sp .5
-void
-clnt_pcreateerror(s)
-char *s;
-.fi
-.ft R
-.IP
-Print a message to standard error indicating
+.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
-.SM RPC
+.Tn RPC
handle could not be created.
The message is prepended with string
-.I s
+.Fa s
and a colon.
Used when a
-.BR clnt_create(\|) ,
-.BR clntraw_create(\|) ,
-.BR clnttcp_create(\|) ,
+.Fn clnt_create ,
+.Fn clntraw_create ,
+.Fn clnttcp_create ,
or
-.B clntudp_create(\|)
+.Fn clntudp_create
call fails.
-.br
-.if t .ne 8
-.LP
-.ft B
-.nf
-.sp .5
-void
-clnt_perrno(stat)
-enum clnt_stat stat;
-.fi
-.ft R
-.IP
+.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
-.IR stat .
+.Fa stat .
Used after
-.BR callrpc(\|) .
-.br
-.if t .ne 8
-.LP
-.ft B
-.nf
-.sp .5
-clnt_perror(clnt, s)
-\s-1CLIENT\s0 *clnt;
-char *s;
-.fi
-.ft R
-.IP
+.Fn callrpc .
+.Pp
+.It Xo
+.Fn clnt_perror "CLIENT *clnt" "char *s"
+.Xc
+.Pp
Print a message to standard error indicating why an
-.SM RPC
+.Tn RPC
call failed;
-.I clnt
+.Fa clnt
is the handle used to do the call.
The message is prepended with string
-.I s
+.Fa s
and a colon.
Used after
-.BR clnt_call(\|) .
-.br
-.if t .ne 9
-.LP
-.ft B
-.nf
-.sp .5
-char *
-clnt_spcreateerror
-char *s;
-.fi
-.ft R
-.IP
+.Fn clnt_call .
+.Pp
+.It Xo
+.Ft "char *"
+.Xc
+.It Xo
+.Fn clnt_spcreateerror "char *s"
+.Xc
+.Pp
Like
-.BR clnt_pcreateerror(\|) ,
+.Fn clnt_pcreateerror ,
except that it returns a string
instead of printing to the standard error.
-.IP
+.Pp
Bugs: returns pointer to static data that is overwritten
on each call.
-.br
-.if t .ne 9
-.LP
-.ft B
-.nf
-.sp .5
-char *
-clnt_sperrno(stat)
-enum clnt_stat stat;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Ft "char *"
+.Xc
+.It Xo
+.Fn clnt_sperrno "enum clnt_stat stat"
+.Xc
+.Pp
Take the same arguments as
-.BR clnt_perrno(\|) ,
+.Fn clnt_perrno ,
but instead of sending a message to the standard error
indicating why an
-.SM RPC
+.Tn RPC
call failed, return a pointer to a string which contains
-the message. The string ends with a
-.SM NEWLINE\s0.
-.IP
-.B clnt_sperrno(\|)
+the message.
+The string ends with a newline
+.Pq Ql "\en" .
+.Pp
+.Fn clnt_sperrno
is used instead of
-.B clnt_perrno(\|)
+.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
-.BR printf ,
+.Fn printf ,
or if a message format different from that supported by
-.B clnt_perrno(\|)
+.Fn clnt_perrno
is to be used.
+.Pp
Note: unlike
-.B clnt_sperror(\|)
+.Fn clnt_sperror
and
-.BR clnt_spcreaterror(\|) ,
-.B clnt_sperrno(\|)
+.Fn clnt_spcreaterror ,
+.Fn clnt_sperrno
returns pointer to static data, but the
result will not get overwritten on each call.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-char *
-clnt_sperror(rpch, s)
-\s-1CLIENT\s0 *rpch;
-char *s;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Ft "char *"
+.Xc
+.It Xo
+.Fn clnt_sperror "CLIENT *rpch" "char *s"
+.Xc
+.Pp
Like
-.BR clnt_perror(\|) ,
+.Fn clnt_perror ,
except that (like
-.BR clnt_sperrno(\|) )
+.Fn clnt_sperrno )
it returns a string instead of printing to standard error.
-.IP
+.Pp
Bugs: returns pointer to static data that is overwritten
on each call.
-.br
-.if t .ne 10
-.LP
-.ft B
-.nf
-.sp .5
-\s-1CLIENT\s0 *
-clntraw_create(prognum, versnum)
-u_long prognum, versnum;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Ft "CLIENT *"
+.Xc
+.It Xo
+.Fn clntraw_create "u_long prognum" "u_long versnum"
+.Xc
+.Pp
This routine creates a toy
-.SM RPC
+.Tn RPC
client for the remote program
-.IR prognum ,
+.Fa prognum ,
version
-.IR versnum .
+.Fa versnum .
The transport used to pass messages to the service is
actually a buffer within the process's address space, so the
corresponding
-.SM RPC
+.Tn RPC
server should live in the same address space; see
-.BR svcraw_create(\|) .
+.Fn svcraw_create .
This allows simulation of
-.SM RPC
+.Tn RPC
and acquisition of
-.SM RPC
+.Tn RPC
overheads, such as round trip times, without any
kernel interference.
This routine returns
-.SM NULL
+.Dv NULL
if it fails.
-.br
-.if t .ne 15
-.LP
-.ft B
-.nf
-.sp .5
-\s-1CLIENT\s0 *
-clnttcp_create(addr, prognum, versnum, sockp, sendsz, recvsz)
-struct sockaddr_in *addr;
-u_long prognum, versnum;
-int *sockp;
-u_int sendsz, recvsz;
-.fi
-.ft R
-.IP
+.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
-.SM RPC
+.Tn RPC
client for the remote program
-.IR prognum ,
+.Fa prognum ,
version
-.IR versnum ;
+.Fa versnum ;
the client uses
-.SM TCP/IP
+.Tn TCP/IP
as a transport.
The remote program is located at Internet
address
-.IR *addr .
+.Fa addr .
If
-.\"The following in-line font conversion is necessary for the hyphen indicator
-\fB\%addr\->sin_port\fR
+.Fa addr\->sin_port
is zero, then it is set to the actual port that the remote
program is listening on (the remote
-.B portmap
-service is consulted for this information). The parameter
-.I sockp
+.Xr portmap 8
+service is consulted for this information).
+The parameter
+.Fa sockp
is a socket; if it is
-.BR \s-1RPC_ANYSOCK\s0 ,
+.Dv RPC_ANYSOCK ,
then this routine opens a new one and sets
-.IR sockp .
+.Fa sockp .
Since
-.SM TCP\s0-based
-.SM RPC
+.Tn TCP Ns \-based
+.Tn RPC
uses buffered
-.SM I/O ,
+.Tn I/O ,
the user may specify the size of the send and receive buffers
with the parameters
-.I sendsz
+.Fa sendsz
and
-.IR recvsz ;
+.Fa recvsz ;
values of zero choose suitable defaults.
This routine returns
-.SM NULL
+.Dv NULL
if it fails.
-.br
-.if t .ne 15
-.LP
-.ft B
-.nf
-.sp .5
-\s-1CLIENT\s0 *
-clntudp_create(addr, prognum, versnum, wait, sockp)
-struct sockaddr_in *addr;
-u_long prognum, versnum;
-struct timeval wait;
-int *sockp;
-.fi
-.ft R
-.IP
+.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
-.SM RPC
+.Tn RPC
client for the remote program
-.IR prognum ,
+.Fa prognum ,
version
-.IR versnum ;
+.Fa versnum ;
the client uses
-.SM UDP/IP
+.Tn UDP/IP
as a transport.
The remote program is located at Internet
address
-.IR addr .
+.Fa addr .
If
-\fB\%addr\->sin_port\fR
+.Fa addr\->sin_port
is zero, then it is set to actual port that the remote
program is listening on (the remote
-.B portmap
-service is consulted for this information). The parameter
-.I sockp
+.Xr portmap 8
+service is consulted for this information).
+The parameter
+.Fa sockp
is a socket; if it is
-.BR \s-1RPC_ANYSOCK\s0 ,
+.Dv RPC_ANYSOCK ,
then this routine opens a new one and sets
-.IR sockp .
+.Fa sockp .
The
-.SM UDP
+.Tn UDP
transport resends the call message in intervals of
-.B wait
+.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
-.BR clnt_call(\|) .
-.IP
+.Fn clnt_call .
+.Pp
Warning: since
-.SM UDP\s0-based
-.SM RPC
+.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.
-.br
-.if t .ne 8
-.LP
-.ft B
-.nf
-.sp .5
-\s-1CLIENT\s0 *
-clntudp_bufcreate(addr, prognum, versnum, wait, sockp, sendsize, recosize)
-struct sockaddr_in *addr;
-u_long prognum, versnum;
-struct timeval wait;
-int *sockp;
-unsigned int sendsize;
-unsigned int recosize;
-.fi
-.ft R
-.IP
+.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
-.SM RPC
+.Tn RPC
client for the remote program
-.IR prognum ,
+.Fa prognum ,
on
-.IR versnum ;
+.Fa versnum ;
the client uses
-.SM UDP/IP
+.Tn UDP/IP
as a transport.
The remote program is located at Internet
address
-.IR addr .
+.Fa addr .
If
-\fB\%addr\->sin_port\fR
+.Fa addr\->sin_port
is zero, then it is set to actual port that the remote
program is listening on (the remote
-.B portmap
-service is consulted for this information). The parameter
-.I sockp
+.Xr portmap 8
+service is consulted for this information).
+The parameter
+.Fa sockp
is a socket; if it is
-.BR \s-1RPC_ANYSOCK\s0 ,
+.Dv RPC_ANYSOCK ,
then this routine opens a new one and sets
-.BR sockp .
+.Fa sockp .
The
-.SM UDP
+.Tn UDP
transport resends the call message in intervals of
-.B wait
+.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
-.BR clnt_call(\|) .
-.IP
-This allows the user to specify the maximum packet size for sending and receiving
-.SM UDP\s0-based
-.SM RPC
+.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.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-int
-get_myaddress(addr)
-struct sockaddr_in *addr;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Ft int
+.Xc
+.It Xo
+.Fn get_myaddress "struct sockaddr_in *addr"
+.Xc
+.Pp
Stuff the machine's
-.SM IP
+.Tn IP
address into
-.IR *addr ,
+.Fa addr ,
without consulting the library routines that deal with
-.BR /etc/hosts .
+.Pa /etc/hosts .
The port number is always set to
-.BR htons(\s-1PMAPPORT\s0) .
+.Fn htons PMAPPORT .
Returns zero on success, non-zero on failure.
-.br
-.if t .ne 10
-.LP
-.ft B
-.nf
-.sp .5
-struct pmaplist *
-pmap_getmaps(addr)
-struct sockaddr_in *addr;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Ft "struct pmaplist *"
+.Xc
+.It Xo
+.Fn pmap_getmaps "struct sockaddr_in *addr"
+.Xc
+.Pp
A user interface to the
-.B portmap
+.Xr portmap 8
service, which returns a list of the current
-.SM RPC
-program-to-port mappings
+.Tn RPC
+program\-to\-port mappings
on the host located at
-.SM IP
+.Tn IP
address
-.IR *addr .
+.Fa addr .
This routine can return
-.SM NULL .
+.Dv NULL .
The command
-.RB ` "rpcinfo \-p" '
+.Dq Nm rpcinfo Fl p
uses this routine.
-.br
-.if t .ne 12
-.LP
-.ft B
-.nf
-.sp .5
-u_short
-pmap_getport(addr, prognum, versnum, protocol)
-struct sockaddr_in *addr;
-u_long prognum, versnum, protocol;
-.fi
-.ft R
-.IP
+.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
-.B portmap
+.Xr portmap 8
service, which returns the port number
on which waits a service that supports program number
-.IR prognum ,
+.Fa prognum ,
version
-.IR versnum ,
+.Fa versnum ,
and speaks the transport protocol associated with
-.IR protocol .
+.Fa protocol .
The value of
-.I protocol
+.Fa protocol
is most likely
-.B
-.SM IPPROTO_UDP
-or
-.BR \s-1IPPROTO_TCP\s0 .
+.Dv IPPROTO_UDP
+or
+.Dv IPPROTO_TCP .
A return value of zero means that the mapping does not exist
or that
the
-.SM RPC
+.Tn RPC
system failed to contact the remote
-.B portmap
-service. In the latter case, the global variable
-.B rpc_createerr(\|)
+.Xr portmap 8
+service.
+In the latter case, the global variable
+.Va rpc_createerr
contains the
-.SM RPC
+.Tn RPC
status.
-.br
-.if t .ne 15
-.LP
-.ft B
-.nf
-.sp .5
-enum clnt_stat
-pmap_rmtcall(addr, prognum, versnum, procnum, inproc, in, outproc, out, tout, portp)
-struct sockaddr_in *addr;
-u_long prognum, versnum, procnum;
-char *in, *out;
-xdrproc_t inproc, outproc;
-struct timeval tout;
-u_long *portp;
-.fi
-.ft R
-.IP
+.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
-.B portmap
+.Xr portmap 8
service, which instructs
-.B portmap
+.Xr portmap 8
on the host at
-.SM IP
+.Tn IP
address
-.I *addr
+.Fa addr
to make an
-.SM RPC
+.Tn RPC
call on your behalf to a procedure on that host.
The parameter
-.I *portp
+.Fa portp
will be modified to the program's port number if the
procedure
succeeds.
The definitions of other parameters are discussed
in
-.B callrpc(\|)
+.Fn callrpc
and
-.BR clnt_call(\|) .
-This procedure should be used for a \(lqping\(rq and nothing
+.Fn clnt_call .
+This procedure should be used for a
+.Dq ping
+and nothing
else.
See also
-.BR clnt_broadcast(\|) .
-.br
-.if t .ne 9
-.LP
-.ft B
-.nf
-.sp .5
-pmap_set(prognum, versnum, protocol, port)
-u_long prognum, versnum, protocol;
-u_short port;
-.fi
-.ft R
-.IP
+.Fn clnt_broadcast .
+.Pp
+.It Xo
+.Fn pmap_set "u_long prognum" "u_long versnum" "u_long protocol" "u_short port"
+.Xc
+.Pp
A user interface to the
-.B portmap
+.Xr portmap 8
service, which establishes a mapping between the triple
-.RI [ prognum , versnum , protocol\fR]
+.Pq Fa prognum , versnum , protocol
and
-.I port
+.Fa port
on the machine's
-.B portmap
+.Xr portmap 8
service.
The value of
-.I protocol
+.Fa protocol
is most likely
-.B
-.SM IPPROTO_UDP
-or
-.BR \s-1IPPROTO_TCP\s0 .
+.Dv IPPROTO_UDP
+or
+.Dv IPPROTO_TCP .
This routine returns one if it succeeds, zero otherwise.
Automatically done by
-.BR svc_register(\|) .
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-pmap_unset(prognum, versnum)
-u_long prognum, versnum;
-.fi
-.ft R
-.IP
+.Fn svc_register .
+.Pp
+.It Xo
+.Fn pmap_unset "u_long prognum" "u_long versnum"
+.Xc
+.Pp
A user interface to the
-.B portmap
+.Xr portmap 8
service, which destroys all mapping between the triple
-.RI [ prognum , versnum , *\fR]
+.Pq Fa prognum , versnum , *
and
-.B ports
+.Fa ports
on the machine's
-.B portmap
+.Xr portmap 8
service.
This routine returns one if it succeeds, zero
otherwise.
-.br
-.if t .ne 15
-.LP
-.ft B
-.nf
-.sp .5
-registerrpc(prognum, versnum, procnum, procname, inproc, outproc)
-u_long prognum, versnum, procnum;
-char *(*procname) (\|) ;
-xdrproc_t inproc, outproc;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.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
-.I procname
+.Fa procname
with the
-.SM RPC
-service package. If a request arrives for program
-.IR prognum ,
+.Tn RPC
+service package.
+If a request arrives for program
+.Fa prognum ,
version
-.IR versnum ,
+.Fa versnum ,
and procedure
-.IR procnum ,
-.I procname
+.Fa procnum ,
+.Fa procname
is called with a pointer to its parameter(s);
-.I progname
+.Fa progname
should return a pointer to its static result(s);
-.I inproc
+.Fa inproc
is used to decode the parameters while
-.I outproc
+.Fa outproc
is used to encode the results.
This routine returns zero if the registration succeeded, \-1
otherwise.
-.IP
+.Pp
Warning: remote procedures registered in this form
are accessed using the
-.SM UDP/IP
+.Tn UDP/IP
transport; see
-.B svcudp_create(\|)
+.Fn svcudp_create
for restrictions.
-.br
-.if t .ne 5
-.LP
-.ft B
-.nf
-.sp .5
-struct rpc_createerr rpc_createerr;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Vt "struct rpc_createerr" rpc_createerr ;
+.Xc
+.Pp
A global variable whose value is set by any
-.SM RPC
+.Tn RPC
client creation routine
-that does not succeed. Use the routine
-.B clnt_pcreateerror(\|)
+that does not succeed.
+Use the routine
+.Fn clnt_pcreateerror
to print the reason why.
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-svc_destroy(xprt)
-\s-1SVCXPRT\s0 *
-xprt;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn svc_destroy "SVCXPRT * xprt"
+.Xc
+.Pp
A macro that destroys the
-.SM RPC
+.Tn RPC
service transport handle,
-.IR xprt .
+.Fa xprt .
Destruction usually involves deallocation
of private data structures, including
-.I xprt
-itself. Use of
-.I xprt
+.Fa xprt
+itself.
+Use of
+.Fa xprt
is undefined after calling this routine.
-.br
-.if t .ne 8
-.LP
-.ft B
-.nf
-.sp .5
-fd_set svc_fdset;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Vt fd_set svc_fdset ;
+.Xc
+.Pp
A global variable reflecting the
-.SM RPC
+.Tn RPC
service side's
read file descriptor bit mask; it is suitable as a template parameter
to the
-.B select
+.Xr select 2
system call.
This is only of interest
if a service implementor does not call
-.BR svc_run(\|) ,
+.Fn svc_run ,
but rather does his own asynchronous event processing.
-This variable is read-only (do not pass its address to
-.BR select !),
+This variable is read\-only (do not pass its address to
+.Xr select 2 ! ) ,
yet it may change after calls to
-.B svc_getreqset(\|)
+.Fn svc_getreqset
or any creation routines.
-.br
As well, note that if the process has descriptor limits
which are extended beyond
-.BR FD_SETSIZE ,
+.Dv FD_SETSIZE ,
this variable will only be usable for the first
-.BR FD_SETSIZE
+.Dv FD_SETSIZE
descriptors.
-.br
-.if t .ne 6
-.LP
-.ft B
-.nf
-.sp .5
-int svc_fds;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Vt int svc_fds ;
+.Xc
+.Pp
Similar to
-.BR svc_fedset(\|) ,
+.Va svc_fdset ,
but limited to 32 descriptors.
This
interface is obsoleted by
-.BR svc_fdset(\|) .
-.br
-.if t .ne 9
-.LP
-.ft B
-.nf
-.sp .5
-svc_freeargs(xprt, inproc, in)
-\s-1SVCXPRT\s0 *xprt;
-xdrproc_t inproc;
-char *in;
-.fi
-.ft R
-.IP
+.Va svc_fdset .
+.Pp
+.It Xo
+.Fn svc_freeargs "SVCXPRT *xprt" "xdrproc_t inproc" "char *in"
+.Xc
+.Pp
A macro that frees any data allocated by the
-.SM RPC/XDR
+.Tn RPC/XDR
system when it decoded the arguments to a service procedure
using
-.BR svc_getargs(\|) .
+.Fn svc_getargs .
This routine returns 1 if the results were successfully
freed,
and zero otherwise.
-.br
-.if t .ne 10
-.LP
-.ft B
-.nf
-.sp .5
-svc_getargs(xprt, inproc, in)
-\s-1SVCXPRT\s0 *xprt;
-xdrproc_t inproc;
-char *in;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn svc_getargs "SVCXPRT *xprt" "xdrproc_t inproc" "char *in"
+.Xc
+.Pp
A macro that decodes the arguments of an
-.SM RPC
+.Tn RPC
request
associated with the
-.SM RPC
+.Tn RPC
service transport handle,
-.IR xprt .
+.Fa xprt .
The parameter
-.I in
+.Fa in
is the address where the arguments will be placed;
-.I inproc
+.Fa inproc
is the
-.SM XDR
+.Tn XDR
routine used to decode the arguments.
This routine returns one if decoding succeeds, and zero
otherwise.
-.br
-.if t .ne 9
-.LP
-.ft B
-.nf
-.sp .5
-struct sockaddr_in *
-svc_getcaller(xprt)
-\s-1SVCXPRT\s0 *xprt;
-.fi
-.ft R
-.IP
+.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
-.SM RPC
+.Tn RPC
service transport handle,
-.IR xprt .
-.br
-.if t .ne 9
-.LP
-.ft B
-.nf
-.sp .5
-svc_getreqset(rdfds)
-fd_set *rdfds;
-.fi
-.ft R
-.IP
+.Fa xprt .
+.Pp
+.It Xo
+.Fn svc_getreqset "fd_set *rdfds"
+.Xc
+.Pp
This routine is only of interest if a service implementor
does not call
-.BR svc_run(\|) ,
+.Fn svc_run ,
but instead implements custom asynchronous event processing.
It is called when the
-.B select
+.Xr select 2
system call has determined that an
-.SM RPC
+.Tn RPC
request has arrived on some
-.SM RPC
-.B socket(s) ;
-.I rdfds
+.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
-.I rdfds
+.Fa rdfds
have been serviced.
-.br
-.if t .ne 6
-.LP
-.ft B
-.nf
-.sp .5
-svc_getreq(rdfds)
-int rdfds;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn svc_getreq "int rdfds"
+.Xc
+.Pp
Similar to
-.BR svc_getreqset(\|) ,
+.Fn svc_getreqset ,
but limited to 32 descriptors.
This interface is obsoleted by
-.BR svc_getreqset(\|) .
-.br
-.if t .ne 17
-.LP
-.ft B
-.nf
-.sp .5
-svc_register(xprt, prognum, versnum, dispatch, protocol)
-\s-1SVCXPRT\s0 *xprt;
-u_long prognum, versnum;
-void (*dispatch) (\|);
-u_long protocol;
-.fi
-.ft R
-.IP
+.Fn svc_getreqset .
+.Pp
+.It Xo
+.Fo svc_register
+.Fa "SVCXPRT *xprt"
+.Fa "u_long prognum"
+.Fa "u_long versnum"
+.Fa "void (*dispatch)(void)"
+.Fa "u_long protocol"
+.Fc
+.Xc
+.Pp
Associates
-.I prognum
+.Fa prognum
and
-.I versnum
+.Fa versnum
with the service dispatch procedure,
-.IR dispatch .
+.Fn dispatch .
If
-.I protocol
+.Fa protocol
is zero, the service is not registered with the
-.B portmap
-service. If
-.I protocol
+.Xr portmap 8
+service.
+If
+.Fa protocol
is non-zero, then a mapping of the triple
-.RI [ prognum , versnum , protocol\fR]
+.Pq Fa prognum , versnum , protocol
to
-\fB\%xprt\->xp_port\fR
+.Fa xprt\->xp_port
is established with the local
-.B portmap
+.Xr portmap 8
service (generally
-.I protocol
+.Fa protocol
is zero,
-.B
-.SM IPPROTO_UDP
-or
-.B
-.SM IPPROTO_TCP
-).
+.Dv IPPROTO_UDP
+or
+.Dv IPPROTO_TCP ) .
The procedure
-.I dispatch
+.Fn dispatch
has the following form:
-.RS 1i
-.ft B
-.nf
-dispatch(request, xprt)
-struct svc_req *request;
-\s-1SVCXPRT\s0 *xprt;
-.ft R
-.fi
-.RE
-.IP
+.Bd -ragged -offset indent
+.Fn dispatch "struct svc_req *request" "SVCXPRT *xprt"
+.Ed
+.Pp
The
-.B svc_register(\|)
+.Fn svc_register
routine returns one if it succeeds, and zero otherwise.
-.br
-.if t .ne 6
-.LP
-.ft B
-.nf
-.sp .5
-svc_run(\|)
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn svc_run
+.Xc
+.Pp
This routine never returns.
It waits for
-.SM RPC
+.Tn RPC
requests to arrive, and calls the appropriate service
procedure using
-.B svc_getreq(\|)
+.Fn svc_getreq
when one arrives.
This procedure is usually waiting for a
-.B select(\|)
+.Xr select 2
system call to return.
-.br
-.if t .ne 9
-.LP
-.ft B
-.nf
-.sp .5
-svc_sendreply(xprt, outproc, out)
-\s-1SVCXPRT\s0 *xprt;
-xdrproc_t outproc;
-char *out;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn svc_sendreply "SVCXPRT *xprt" "xdrproc_t outproc" "char *out"
+.Xc
+.Pp
Called by an
-.SM RPC
+.Tn RPC
service's dispatch routine to send the results of a
-remote procedure call. The parameter
-.I xprt
+remote procedure call.
+The parameter
+.Fa xprt
is the request's associated transport handle;
-.I outproc
+.Fa outproc
is the
-.SM XDR
+.Tn XDR
routine which is used to encode the results; and
-.I out
+.Fa out
is the address of the results.
This routine returns one if it succeeds, zero otherwise.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-void
-svc_unregister(prognum, versnum)
-u_long prognum, versnum;
-.fi
-.ft R
-.IP
+.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
-.RI [ prognum , versnum ]
+.Pq Fa prognum , versnum
to dispatch routines, and of the triple
-.RI [ prognum , versnum , *\fR]
+.Pq Fa prognum , versnum , *
to port number.
-.br
-.if t .ne 9
-.LP
-.ft B
-.nf
-.sp .5
-void
-svcerr_auth(xprt, why)
-\s-1SVCXPRT\s0 *xprt;
-enum auth_stat why;
-.fi
-.ft R
-.IP
+.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.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-void
-svcerr_decode(xprt)
-\s-1SVCXPRT\s0 *xprt;
-.fi
-.ft R
-.IP
+.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
-.BR svc_getargs(\|) .
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-void
-svcerr_noproc(xprt)
-\s-1SVCXPRT\s0 *xprt;
-.fi
-.ft R
-.IP
+.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.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-void
-svcerr_noprog(xprt)
-\s-1SVCXPRT\s0 *xprt;
-.fi
-.ft R
-.IP
+.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
-.SM RPC
+.Tn RPC
package.
Service implementors usually do not need this routine.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-void
-svcerr_progvers(xprt)
-\s-1SVCXPRT\s0 *xprt;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Ft void
+.Xc
+.It Xo
+.Fn svcerr_progvers "SVCXPRT *xprt"
+.Xc
+.Pp
Called when the desired version of a program is not registered
with the
-.SM RPC
+.Tn RPC
package.
Service implementors usually do not need this routine.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-void
-svcerr_systemerr(xprt)
-\s-1SVCXPRT\s0 *xprt;
-.fi
-.ft R
-.IP
+.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.
-.br
-.if t .ne 8
-.LP
-.ft B
-.nf
-.sp .5
-void
-svcerr_weakauth(xprt)
-\s-1SVCXPRT\s0 *xprt;
-.fi
-.ft R
-.IP
+.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
-.BR "svcerr_auth(xprt, \s-1AUTH_TOOWEAK\s0)" .
-.br
-.if t .ne 11
-.LP
-.ft B
-.nf
-.sp .5
-\s-1SVCXPRT\s0 *
-svcraw_create(\|)
-.fi
-.ft R
-.IP
+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
-.SM RPC
-service transport, to which it returns a pointer. The
-transport
+.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
-.SM RPC
+.Tn RPC
client should live in the same
address space;
see
-.BR clntraw_create(\|) .
+.Fn clntraw_create .
This routine allows simulation of
-.SM RPC
+.Tn RPC
and acquisition of
-.SM RPC
+.Tn RPC
overheads (such as round trip times), without any kernel
interference.
This routine returns
-.SM NULL
+.Dv NULL
if it fails.
-.br
-.if t .ne 11
-.LP
-.ft B
-.nf
-.sp .5
-\s-1SVCXPRT\s0 *
-svctcp_create(sock, send_buf_size, recv_buf_size)
-int sock;
-u_int send_buf_size, recv_buf_size;
-.fi
-.ft R
-.IP
+.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
-.SM TCP/IP\s0-based
-.SM RPC
+.Tn TCP/IP Ns \-based
+.Tn RPC
service transport, to which it returns a pointer.
The transport is associated with the socket
-.IR sock ,
+.Fa sock ,
which may be
-.BR \s-1RPC_ANYSOCK\s0 ,
+.Dv RPC_ANYSOCK ,
in which case a new socket is created.
If the socket is not bound to a local
-.SM TCP
-port, then this routine binds it to an arbitrary port. Upon
-completion,
-\fB\%xprt\->xp_sock\fR
+.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
-\fB\%xprt\->xp_port\fR
+.Fa xprt\->xp_port
is the transport's port number.
This routine returns
-.SM NULL
+.Dv NULL
if it fails.
Since
-.SM TCP\s0-based
-.SM RPC
+.Tn TCP Ns \-based
+.Tn RPC
uses buffered
-.SM I/O ,
+.Tn I/O ,
users may specify the size of buffers; values of zero
choose suitable defaults.
-.br
-.if t .ne 11
-.LP
-.ft B
-.nf
-.sp .5
-\s-1SVCXPRT\s0 *
-svcfd_create(fd, sendsize, recvsize)
-int fd;
-u_int sendsize;
-u_int recvsize;
-.fi
-.ft R
-.IP
+.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
-.SM TCP\s0.
-.I sendsize
+.Tn TCP .
+.Fa sendsize
and
-.I recvsize
-indicate sizes for the send and receive buffers. If they are
+.Fa recvsize
+indicate sizes for the send and receive buffers.
+If they are
zero, a reasonable default is chosen.
-.br
-.if t .ne 10
-.LP
-.ft B
-.nf
-.sp .5
-\s-1SVCXPRT\s0 *
-svcudp_bufcreate(sock, sendsize, recosize)
-int sock;
-.fi
-.ft R
-.IP
+.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
-.SM UDP/IP\s0-based
-.SM RPC
+.Tn UDP/IP Ns \-based
+.Tn RPC
service transport, to which it returns a pointer.
The transport is associated with the socket
-.IR sock ,
+.Fa sock ,
which may be
-.B \s-1RPC_ANYSOCK\s0 ,
+.Dv RPC_ANYSOCK ,
in which case a new socket is created.
If the socket is not bound to a local
-.SM UDP
+.Tn UDP
port, then this routine binds it to an arbitrary port.
Upon
completion,
-\fB\%xprt\->xp_sock\fR
+.Fa xprt\->xp_sock
is the transport's socket descriptor, and
-\fB\%xprt\->xp_port\fR
+.Fa xprt\->xp_port
is the transport's port number.
This routine returns
-.SM NULL
+.Dv NULL
if it fails.
-.IP
-This allows the user to specify the maximum packet size for sending and
+.Pp
+This allows the user to specify the maximum packet size for sending and
receiving
-.SM UDP\s0-based
-.SM RPC messages.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-xdr_accepted_reply(xdrs, ar)
-\s-1XDR\s0 *xdrs;
-struct accepted_reply *ar;
-.fi
-.ft R
-.IP
+.Tn UDP Ns \-based
+.Tn RPC
+messages.
+.Pp
+.It Xo
+.Fn xdr_accepted_reply "XDR *xdrs" "struct accepted_reply *ar"
+.Xc
+.Pp
Used for encoding
-.SM RPC
+.Tn RPC
reply messages.
This routine is useful for users who
wish to generate
-\s-1RPC\s0-style
+.Tn RPC Ns \-style
messages without using the
-.SM RPC
+.Tn RPC
package.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-xdr_authunix_parms(xdrs, aupp)
-\s-1XDR\s0 *xdrs;
-struct authunix_parms *aupp;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn xdr_authunix_parms "XDR *xdrs" "struct authunix_parms *aupp"
+.Xc
+.Pp
Used for describing
-.SM UNIX
+.Ux
credentials.
This routine is useful for users
who wish to generate these credentials without using the
-.SM RPC
+.Tn RPC
authentication package.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-void
-xdr_callhdr(xdrs, chdr)
-\s-1XDR\s0 *xdrs;
-struct rpc_msg *chdr;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Ft void
+.Xc
+.It Xo
+.Fn xdr_callhdr "XDR *xdrs" "struct rpc_msg *chdr"
+.Xc
+.Pp
Used for describing
-.SM RPC
+.Tn RPC
call header messages.
This routine is useful for users who wish to generate
-.SM RPC\s0-style
+.Tn RPC Ns \-style
messages without using the
-.SM RPC
+.Tn RPC
package.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-xdr_callmsg(xdrs, cmsg)
-\s-1XDR\s0 *xdrs;
-struct rpc_msg *cmsg;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn xdr_callmsg "XDR *xdrs" "struct rpc_msg *cmsg"
+.Xc
+.Pp
Used for describing
-.SM RPC
+.Tn RPC
call messages.
This routine is useful for users who wish to generate
-.SM RPC\s0-style
+.Tn RPC Ns \-style
messages without using the
-.SM RPC
+.Tn RPC
package.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-xdr_opaque_auth(xdrs, ap)
-\s-1XDR\s0 *xdrs;
-struct opaque_auth *ap;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn xdr_opaque_auth "XDR *xdrs" "struct opaque_auth *ap"
+.Xc
+.Pp
Used for describing
-.SM RPC
+.Tn RPC
authentication information messages.
This routine is useful for users who wish to generate
-.SM RPC\s0-style
+.Tn RPC Ns \-style
messages without using the
-.SM RPC
+.Tn RPC
package.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-xdr_pmap(xdrs, regs)
-\s-1XDR\s0 *xdrs;
-struct pmap *regs;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn xdr_pmap "XDR *xdrs" "struct pmap *regs"
+.Xc
+.Pp
Used for describing parameters to various
-.B portmap
+.Xr portmap 8
procedures, externally.
This routine is useful for users who wish to generate
these parameters without using the
-.B pmap
+.Fn pmap_*
interface.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-xdr_pmaplist(xdrs, rp)
-\s-1XDR\s0 *xdrs;
-struct pmaplist **rp;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.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
-.B pmap
+.Fn pmap_*
interface.
-.br
-.if t .ne 7
-.LP
-.ft B
-.nf
-.sp .5
-xdr_rejected_reply(xdrs, rr)
-\s-1XDR\s0 *xdrs;
-struct rejected_reply *rr;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn xdr_rejected_reply "XDR *xdrs" "struct rejected_reply *rr"
+.Xc
+.Pp
Used for describing
-.SM RPC
+.Tn RPC
reply messages.
This routine is useful for users who wish to generate
-.SM RPC\s0-style
+.Tn RPC Ns \-style
messages without using the
-.SM RPC
+.Tn RPC
package.
-.br
-.if t .ne 8
-.LP
-.ft B
-.nf
-.sp .5
-xdr_replymsg(xdrs, rmsg)
-\s-1XDR\s0 *xdrs;
-struct rpc_msg *rmsg;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Fn xdr_replymsg "XDR *xdrs" "struct rpc_msg *rmsg"
+.Xc
+.Pp
Used for describing
-.SM RPC
+.Tn RPC
reply messages.
This routine is useful for users who wish to generate
-.SM RPC
+.Tn RPC
style messages without using the
-.SM RPC
+.Tn RPC
package.
-.br
-.if t .ne 8
-.LP
-.ft B
-.nf
-.sp .5
-void
-xprt_register(xprt)
-\s-1SVCXPRT\s0 *xprt;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Ft void
+.Xc
+.It Xo
+.Fn xprt_register "SVCXPRT *xprt"
+.Xc
+.Pp
After
-.SM RPC
+.Tn RPC
service transport handles are created,
they should register themselves with the
-.SM RPC
+.Tn RPC
service package.
This routine modifies the global variable
-.BR svc_fds(\|) .
+.Va svc_fds .
Service implementors usually do not need this routine.
-.br
-.if t .ne 8
-.LP
-.ft B
-.nf
-.sp .5
-void
-xprt_unregister(xprt)
-\s-1SVCXPRT\s0 *xprt;
-.fi
-.ft R
-.IP
+.Pp
+.It Xo
+.Ft void
+.Xc
+.It Xo
+.Fn xprt_unregister "SVCXPRT *xprt"
+.Xc
+.Pp
Before an
-.SM RPC
+.Tn RPC
service transport handle is destroyed,
it should unregister itself with the
-.SM RPC
+.Tn RPC
service package.
This routine modifies the global variable
-.BR svc_fds(\|) .
+.Va svc_fds .
Service implementors usually do not need this routine.
-.SH SEE ALSO
-.BR rpc_secure (3),
-.BR xdr (3)
-.br
-The following manuals:
-.RS
-.ft I
-Remote Procedure Calls: Protocol Specification
-.br
-Remote Procedure Call Programming Guide
-.br
-rpcgen Programming Guide
-.br
-.ft R
-.RE
-.IR "\s-1RPC\s0: Remote Procedure Call Protocol Specification" ,
-.SM RFC1050, Sun Microsystems, Inc.,
-.SM USC-ISI\s0.
-
+.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
diff --git a/lib/libc/rpc/rtime.3 b/lib/libc/rpc/rtime.3
index 6847e15..3897fc8 100644
--- a/lib/libc/rpc/rtime.3
+++ b/lib/libc/rpc/rtime.3
@@ -1,47 +1,48 @@
.\" @(#)rtime.3n 2.1 88/08/08 4.0 RPCSRC; from 1.5 88/02/08 SMI
.\" $FreeBSD$
.\"
-.TH RTIME 3 "22 November 1987"
-.SH NAME
-rtime \- get remote time
-.SH SYNOPSIS
-.nf
-.B #include <sys/types.h>
-.B #include <sys/time.h>
-.B #include <netinet/in.h>
-.LP
-.B int rtime(addrp, timep, timeout)
-.B struct sockaddr_in \(**addrp;
-.B struct timeval \(**timep;
-.B struct timeval \(**timeout;
-.fi
-.SH DESCRIPTION
-.B rtime(\|)
+.Dd November 22, 1987
+.Dt RTIME 3
+.Os
+.Sh NAME
+.Nm rtime
+.Nd "get remote time"
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.Fd "#include <sys/types.h>"
+.Fd "#include <sys/time.h>"
+.Fd "#include <netinet/in.h>"
+.Ft int
+.Fo rtime
+.Fa "struct sockaddr_in *addrp"
+.Fa "struct timeval *timep"
+.Fa "struct timeval *timeout"
+.Fc
+.Sh DESCRIPTION
+.Fn rtime
consults the Internet Time Server at the address pointed to by
-.I addrp
+.Fa addrp
and returns the remote time in the
-.B timeval
+.Vt timeval
struct pointed to by
-.IR timep .
+.Fa timep .
Normally, the
-.SM UDP
+.Tn UDP
protocol is used when consulting the Time Server.
The
-.I timeout
+.Fa timeout
parameter specifies how long the
routine should wait before giving
-up when waiting for a reply. If
-.I timeout
+up when waiting for a reply.
+If
+.Fa timeout
is specified as
-.SM NULL\s0,
+.Dv NULL ,
however, the routine will instead use
-.SM TCP
+.Tn TCP
and block until a reply is received from the time server.
-.LP
-The routine returns 0 if it is successful.
-Otherwise,
-it returns \-1 and
-.B errno
-is set to reflect the cause of the error.
-.SH "SEE ALSO"
-.BR timed (8c)
+.Sh RETURN VALUES
+.Rv -std rtime
+.Sh SEE ALSO
+.Xr timed 8
OpenPOWER on IntegriCloud