diff options
author | ru <ru@FreeBSD.org> | 2001-01-17 18:26:21 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2001-01-17 18:26:21 +0000 |
commit | 2b24819cd873cc1df3cdf7e18c87c9cf18f8b12c (patch) | |
tree | 0349b5edb0bb8b4bdb3f49b6c0d915f846dc3a78 /lib | |
parent | 295d5f80dc42943707c9e8a1996233b48ffa20ae (diff) | |
download | FreeBSD-src-2b24819cd873cc1df3cdf7e18c87c9cf18f8b12c.zip FreeBSD-src-2b24819cd873cc1df3cdf7e18c87c9cf18f8b12c.tar.gz |
man(7) -> mdoc(7).
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/rpc/des_crypt.3 | 157 | ||||
-rw-r--r-- | lib/libc/rpc/publickey.3 | 70 | ||||
-rw-r--r-- | lib/libc/rpc/publickey.5 | 44 | ||||
-rw-r--r-- | lib/libc/rpc/rpc.3 | 2221 | ||||
-rw-r--r-- | lib/libc/rpc/rtime.3 | 67 |
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 |