From owner-man-jp-reviewer@jp.FreeBSD.org Wed Mar  6 22:23:16 2002
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id g26DNGs85510;
	Wed, 6 Mar 2002 22:23:16 +0900 (JST)
	(envelope-from owner-man-jp-reviewer@jp.FreeBSD.org)
Received: from mail.asahi-net.or.jp (mail2.asahi-net.or.jp [202.224.39.198])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet id g26DNGP85505
	for <man-jp-reviewer@jp.freebsd.org>; Wed, 6 Mar 2002 22:23:16 +0900 (JST)
	(envelope-from ht5t-fry@asahi-net.or.jp)
Received: from localhost (p93-dna09urasirohat.saitama.ocn.ne.jp [210.190.196.93])
	by mail.asahi-net.or.jp (Postfix) with ESMTP
	id 820456186; Wed,  6 Mar 2002 22:22:58 +0900 (JST)
To: man-jp-reviewer@jp.FreeBSD.org
From: Tetsuro Teddy FURUYA (=?iso-2022-jp?B?GyRCOEVDKxsoQiAbJEJFL086GyhC?=) <ht5t-fry@asahi-net.or.jp>
X-Mailer: Mew version 1.93 on Emacs 19.28 / Mule 2.3 (SUETSUMUHANA)
X-fingerprint: F1 BA 5F C1 C2 48 1D C7  AE 5F 16 ED 12 17 75 38
X-URL: http://www.asahi-net.or.jp/~ht5t-fry/
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
	boundary="--Next_Part(Wed_Mar__6_22:18:45_2002_945)--"
Content-Transfer-Encoding: 7bit
Message-Id: <20020306222216M.ht5t-fry@asahi-net.or.jp>
Date: Wed, 06 Mar 2002 22:22:16 +0900
X-Dispatcher: imput version 980905(IM100)
Lines: 3830
Reply-To: man-jp-reviewer@jp.FreeBSD.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+011218
X-Sequence: man-jp-reviewer 3989
Subject: [man-jp-reviewer 3989] rpc.3
Errors-To: owner-man-jp-reviewer@jp.FreeBSD.org
Sender: owner-man-jp-reviewer@jp.FreeBSD.org
X-Originator: ht5t-fry@asahi-net.or.jp

----Next_Part(Wed_Mar__6_22:18:45_2002_945)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit


$B8EC+(B $B$G$9!#(B


rpc.3 $B$N=i9F$G$9!#(B


$B$O$8$a$O!"$?$@869F$rAH$_D>$9$@$1$G$$$$$H;W$C$?$N$G$9$,!"(B
$BFI$_$@$7$?$i$$$m$$$m=$@5$,F~$C$F$7$^$$$^$7$?!#(B

# $BKY@n$5$s(B ipx.3 $B$N%A%'%C%/M-Fq$&$4$6$$$^$7$?!#(B

php file-upload $B$N@H<e@-$r$D$/(B Code-red Virus $B$,=P$F$-$F$$$k$=$&$G$9!#(B
$B$=$&$$$($P!"(BVeltec $B$N%[!<%`%Z!<%8$b(B php $B;H$C$F$$$^$7$?$M!#(B
# $B:#8+$F$_$k$H!"(B 
http://veltec.co.jp/jman
$B$,8+$($^$;$s!#$I$&$7$?$N$G$7$g$&!#(B

---
Tetsuro Teddy FURUYA ($B8EC+(B $BE/O:(B) <ht5t-fry@asahi-net.or.jp>


===============================================================
rpc.3 $B2~D{$NCm<a!#(B


rpc.3 $B$N2~D{:n6H$r?J$a$k>e$G5$$,IU$$$?$3$H$N0lIt$G$9!#(B
--------------------------------------------------------------

authnone_create

Create and return an RPC authentication handle that passes nonus-
able authentication information with each remote procedure call.

( $BG'>Z$r$7$J$$(B ) $B%j%b!<%H%W%m%7!<%8%c8F=P$7$KL5G'>Z>pJs$rEO$9(B RPC
$BG'>Z%O%s%I%k$r:n@.$7$FJV$7$^$9!#(B
---
$B$3$3$O!"F?L>$G$NG'>Z$r$*$3$J$&(B RPC $B$@$H;W$$$^$9!#(B

================================================================

pmap_getport

A user interface to the portmap(8) service, which returns the
port number on which waits a service that supports program number
prognum, version versnum, and speaks the transport protocol asso-
ciated with protocol. 

$B$3$l$O(B portmap(8) $B%5!<%S%9$rA`:n$9$k%f!<%6%$%s%?%U%'!<%9$G$9!#%W(B
$B%m%0%i%`HV9f(B prognum $B%P!<%8%g%sHV9f(B versnum $B$N%j%b!<%H%W%m%7!<(B
$B%8%c$r%5%]!<%H$7!"F1;~$K(B protocol $B$K7k$SIU$1$i$l$?%H%i%s%9%]!<%H(B
$B%W%m%H%3%k$rOC$;$k%5!<%S%9$,BT$A<u$1$F$$$k%]!<%HHV9f$rJV$7$^$9!#(B
---
$B$3$3$N(B wait $B$OE]CV$H$7$^$7$?!#(B

=================================================================

svcraw_create(void)

This routine creates a toy RPC service transport, to which it
returns a pointer.

$B%H%$(B RPC $B%/%i%$%"%s%H$r:n@.$7!"$3$l$r;2>H$9$k%]%$%s%?$rJV$7$^$9!#(B
---
a pointer to which...
$B$H2r$9$Y$-$G$7$g$&!#(B

=================================================================


svcfd_create

Create a service on top of any open descriptor.

$B3+$$$F$$$k5-=R;R$r>80.$7$F(B RPC $B%5!<%S%9%H%i%s%9%]!<%H$r:n@.$7$^$9!#(B
---
on top of ...   $B$G!"!V!D$r;YG[$7$F!">80.$7$F!W$H$$$&%$%G%#%*%`$G$9!#(B
$B%i%$%V%i%j%3!<%I$K(B "first input" $B$H$$$&Cm<a$,$"$C$?$N$G!"(B
$B0z$-$:$i$l$?$N$G$7$g$&!#(B

==================================================================

clnt_sperrno

if the programmer does not want the message to be output with printf(), 
$B%a%C%;!<%8$r(B printf() $B$G=PNO$9$k$3$H$,K>$^$7$/$J$$>l9g!"(B
---
$B$3$3$O(B want $B$K$D$$$F$G$9!#(B
$B$^$:Bh0l$K!"<g8l$,L5@8J*$G$O$J$$$3$H!#(B
$BBhFs$K!"?M$N?4M}>uBV$H$$$&30$+$i$OJ,$+$i$J$$$b$N$r(B
$BL5M}$K?dM}$7$F$$$k$N$G$O$J$/!"!V;v<B$H$7$F$3$&$$$&(B
$B?4M}>uBV$G$"$C$?$J$i!W$H$$$&$b$N$G$9!#(B
$B!VI,MW$H$9$k!W$d!"!V$9$Y$-!W$H$$$&Lu$G$O!"(B
$B$A$g$C$H$=$0$o$J$$$+$J$H;W$$$^$9!#(B
$B!VK>$^$7$/$J$$!W$G$^$H$a$F$_$^$7$?!#(B

===================================================================

authunix_create

a counted array

$BG[NsD9$HG[Ns$N9=B$(B
---
$BDL>o$O(B $BG[NsD9%+%&%s%?$HG[Ns$X$N%]%$%s%?$+$i$J$k9=B$BN(B $B$J$N$G!#(B

===================================================================

NULL

$B%L%k(B
---
man-jp word.txt

===================================================================

$B8EC+(B $BE/O:(B 
Tetsuro Furuya<ht5t-fry@asahi-net.or.jp>



----Next_Part(Wed_Mar__6_22:18:45_2002_945)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=rpc.3.diff

--- rpc.3.orig	Wed Mar  6 22:02:24 2002
+++ rpc.3	Wed Mar  6 22:03:14 2002
@@ -4,36 +4,37 @@
 .Dd February 16, 1988
 .Dt RPC 3
 .Os
-.Sh NAME
+.Sh $BL>>N(B
 .Nm rpc
-.Nd "library routines for remote procedure calls"
+.Nd "$B%j%b!<%H%W%m%7!<%8%c%3!<%kMQ%i%$%V%i%j%k!<%A%s(B"
 .Sh LIBRARY
 .Lb libc
-.Sh SYNOPSIS
+.Sh $B=q<0(B
 .In rpc/rpc.h
 .Pp
-See
-.Sx DESCRIPTION
-for function declarations.
-.Sh DESCRIPTION
-These routines allow C programs to make procedure
-calls on other machines across the network.
-First, the client calls a procedure to send a
-data packet to the server.
-Upon receipt of the packet, the server calls a dispatch routine
-to perform the requested service, and then sends back a
-reply.
-Finally, the procedure call returns to the client.
+$B4X?t@k8@$N(B
+.Sx $B2r@b(B
+$B$r;2>H$7$F$/$@$5$$!#(B
+.Sh $B2r@b(B
+$B$3$N%k!<%A%s$O(B C $B%W%m%0%i%`$r;HMQ$7$F!"(B
+$B%M%C%H%o!<%/$rDL$7$FJL$N%^%7%s$G%W%m%7!<%8%c8F$S=P$7$r<B9T$G$-$^$9!#(B
+$B$^$:%/%i%$%"%s%H$,!"%W%m%7!<%8%c$r8F$S=P$7!"(B
+$B%G!<%?%Q%1%C%H$r%5!<%P$KAw?.$7$^$9!#(B
+$B%Q%1%C%H$r<u$1<h$C$?%5!<%P$O!"(B
+$B%G%#%9%Q%C%A%k!<%A%s$r8F$S=P$7!"(B
+$BMW5a$5$l$?%5!<%S%9$r<B9T$7$F$+$i1~Ez$rAw$jJV$7$^$9!#(B
+$B:G8e$K!"%W%m%7!<%8%c8F$S=P$7$O%/%i%$%"%s%H$KI|5"$7$^$9!#(B
 .Pp
-Routines that are used for Secure
+Secure
 .Tn RPC ( DES
-authentication) are described in
-.Xr rpc_secure 3 .
+$BG'>Z(B ) $B$K;HMQ$9$k%k!<%A%s$K$D$$$F$O!"(B
+.Xr rpc_secure 3
+$B$G@bL@$7$^$9!#(B
 Secure
 .Tn RPC
-can be used only if
-.Tn DES
-encryption is available.
+$B$O(B
+.Tn DES 
+$B0E9f$,;HMQ$G$-$k>l9g$K$N$_;HMQ$G$-$^$9!#(B
 .Bl -tag -width indent -compact
 .Pp
 .It Xo
@@ -43,14 +44,14 @@
 .Fn auth_destroy "AUTH *auth"
 .Xc
 .Pp
-A macro that destroys the authentication information associated with
-.Fa auth .
-Destruction usually involves deallocation of private data
-structures.
-The use of
 .Fa auth
-is undefined after calling
-.Fn auth_destroy .
+$B$K7k$SIU$1$i$l$?G'>Z>pJs$rGK2u$9$k%^%/%m$G$9!#(B
+$B0lHLE*$K!"(B
+$BGK2u$K$O%W%i%$%Y!<%H%G!<%?9=B$$N2rJ|$b4^$^$l$^$9!#(B
+.Fn auth_destroy
+$B$r8F$S=P$7$?8e$N(B
+.Fa auth
+$B$NF0:n$OL$Dj5A$G$9!#(B
 .Pp
 .It Xo
 .Ft "AUTH *"
@@ -59,13 +60,12 @@
 .Fn authnone_create
 .Xc
 .Pp
-Create and return an
+( $BG'>Z$r$7$J$$(B )
+$B%j%b!<%H%W%m%7!<%8%c8F=P$7$KL5G'>Z>pJs$rEO$9(B
+.Tn RPC
+$BG'>Z%O%s%I%k$r:n@.$7$FJV$7$^$9!#(B
 .Tn RPC
-authentication handle that passes nonusable authentication
-information with each remote procedure call.
-This is the
-default authentication used by
-.Tn RPC .
+$B$O$3$NG'>Z$r%G%U%)%k%H$G;HMQ$7$^$9!#(B
 .Pp
 .It Xo
 .Ft "AUTH *"
@@ -74,24 +74,22 @@
 .Fn authunix_create "char *host" "int uid" "int gid" "int len" "int *aup_gids"
 .Xc
 .Pp
-Create and return an
-.Tn RPC
-authentication handle that contains
 .Ux
-authentication information.
-The parameter
+$BG'>Z>pJs$r4^$`(B
+.Tn RPC
+$BG'>Z%O%s%I%k$r:n@.$7$FJV$7$^$9!#(B
+$B%Q%i%a!<%?(B
 .Fa host
-is the name of the machine on which the information was
-created;
+$B$O>pJs$r:n@.$9$k%^%7%s$NL>A0$G$9!#(B
 .Fa uid
-is the user's user ID;
+$B$O%f!<%6$N%f!<%6(B ID $B$G$9!#(B
 .Fa gid
-is the user's current group ID;
+$B$O%f!<%6$N8=9T%0%k!<%W(B ID $B$G$9!#(B
 .Fa len
-and
+$B$H(B
 .Fa aup_gids
-refer to a counted array of groups to which the user belongs.
-It is easy to impersonate a user.
+$B$O!"%f!<%6$,B0$9$k%0%k!<%W$NG[NsD9$HG[Ns$N9=B$$rI=$7$^$9!#(B
+$B%f!<%6$K$J$j$9$^$9$3$H$OMF0W$G$9!#(B
 .Pp
 .It Xo
 .Ft "AUTH *"
@@ -100,9 +98,9 @@
 .Fn authunix_create_default
 .Xc
 .Pp
-Calls
+$BE,@Z$J%Q%i%a!<%?$G(B
 .Fn authunix_create
-with the appropriate parameters.
+$B$r8F$S=P$7$^$9!#(B
 .Pp
 .It Xo
 .Fo callrpc
@@ -117,37 +115,40 @@
 .Fc
 .Xc
 .Pp
-Call the remote procedure associated with
-.Fa prognum ,
-.Fa versnum ,
-and
+$B%^%7%s(B
+.Fa host
+$B$G%W%m%0%i%`HV9f(B
+.Fa prognum
+$B%P!<%8%g%sHV9f(B
+.Fa versnum
+$B%W%m%7!<%8%cHV9f(B
 .Fa procnum
-on the machine
-.Fa host .
-The parameter
+$B$K7k$SIU$1$i$l$?%j%b!<%H%W%m%7!<%8%c$r8F$S=P$7$^$9!#(B
+$B%Q%i%a!<%?(B
 .Fa in
-is the address of the procedure's argument(s), and
+$B$O%W%m%7!<%8%c$N0z?t%"%I%l%9$G!"(B
 .Fa out
-is the address of where to place the result(s);
+$B$O7k2L$rG[CV$9$k%"%I%l%9$G$9!#(B
 .Fa inproc
-is used to encode the procedure's parameters, and
+$B$O%W%m%7!<%8%c$N%Q%i%a!<%?$r%(%s%3!<%I$9$k$?$a$K;HMQ$7!"(B
 .Fa outproc
-is used to decode the procedure's results.
-This routine returns zero if it succeeds, or the value of
+$B$O%W%m%7!<%8%c$N7k2L$r%G%3!<%I$9$k$?$a$K;HMQ$7$^$9!#(B
+$B$3$N%k!<%A%s$O!"@5>o=*N;$7$?>l9g$O(B 0 $B$rJV$7!"(B
+$B=hM}$K<:GT$7$?>l9g$O@0?t$K%-%c%9%H$5$l$k(B
 .Vt "enum clnt_stat"
-cast to an integer if it fails.
-The routine
+$B$NCM$rJV$7$^$9!#(B
+$B%(%i!<%9%F!<%?%9$r%a%C%;!<%8$KJQ49$9$k$K$O!"%k!<%A%s(B
 .Fn clnt_perrno
-is handy for translating failure statuses into messages.
+$B$,JXMx$G$9!#(B
 .Pp
-Warning: calling remote procedures with this routine
-uses
+$B7Y9p(B : $B$3$N%k!<%A%s$G%j%b!<%H%W%m%7!<%8%c$r8F$S=P$9>l9g!"(B
 .Tn UDP/IP
-as a transport; see
+$B$,%H%i%s%9%]!<%HAX$H$7$F;HMQ$5$l$^$9!#(B
+$B@)8B;v9`$K$D$$$F$O(B
 .Fn clntudp_create
-for restrictions.
-You do not have control of timeouts or authentication using
-this routine.
+$B$r;2>H$7$F$/$@$5$$!#(B
+$B$3$N%k!<%A%s$r;HMQ$7$?>l9g!"(B
+$B%?%$%`%"%&%H$dG'>Z$O@)8f$G$-$^$;$s!#(B
 .Pp
 .It Xo
 .Ft "enum clnt_stat"
@@ -165,39 +166,41 @@
 .Fc
 .Xc
 .Pp
-Like
-.Fn callrpc ,
-except the call message is broadcast to all locally
-connected broadcast nets.
-Each time it receives a
-response, this routine calls
-.Fn eachresult ,
-whose form is:
+$B%m!<%+%k$G@\B3$5$l$F$$$k(B
+$B$9$Y$F$N%V%m!<%I%-%c%9%H%M%C%H$K8F$S=P$7%a%C%;!<%8$,(B
+$B%V%m!<%I%-%c%9%H$5$l$k$3$H$r=|$1$P!"(B
+.Fn callrpc
+$B$HF1$8$G$9!#(B
+$B$3$N%k!<%A%s$O1~Ez$r<u$1<h$k$?$S$K!"0J2<$N7A<0$N(B
+.Fn eachresult
+$B$r8F$S=P$7$^$9!#(B
 .Bd -ragged -offset indent
 .Ft bool_t
 .Fn eachresult "caddr_t out" "struct sockaddr_in *addr"
 .Ed
 .Pp
-where
+$B$3$N%k!<%A%s$N(B
 .Fa out
-is the same as
+$B$O(B
+.Fn clnt_broadcast
+$B$KEO$5$l$k(B
 .Fa out
-passed to
-.Fn clnt_broadcast ,
-except that the remote procedure's output is decoded there;
+$B$HF1$8$G$9$,!"0[$J$kE@$O!"(B
+$B%j%b!<%H%W%m%7!<%8%c$N=PNO$,%G%3!<%I$5$l$k%^%7%s$O!"(B
+$B7k2L$rAw?.$9$k%^%7%s$N%"%I%l%9$r;2>H$9$k(B
 .Fa addr
-points to the address of the machine that sent the results.
-If
+$B$H$J$k$3$H$G$9!#(B
 .Fn eachresult
-returns zero,
+$B$,(B 0 $B$rJV$9>l9g(B
 .Fn clnt_broadcast
-waits for more replies; otherwise it returns with appropriate
-status.
+$B$O<!$N1~Ez$rBT$A$^$9!#(B
+0 $B$rJV$5$J$$>l9g$OE,@Z$J%9%F!<%?%9$rJV$7$^$9!#(B
 .Pp
-Warning: broadcast sockets are limited in size to the
-maximum transfer unit of the data link.
-For ethernet,
-this value is 1500 bytes.
+$B7Y9p(B : $B%V%m!<%I%-%c%9%H%=%1%C%H$O(B
+$BE>AwC10L$NBg$-$5$,%G!<%?%j%s%/$N(B
+$B:GBgE>AwC10L$K@)8B$5$l$F$$$^$9!#(B
+$B%$!<%5%M%C%H$N>l9g!"(B
+$B$3$NCM$O(B 1500 $B%P%$%H$G$9!#(B
 .Pp
 .It Xo
 .Ft "enum clnt_stat"
@@ -214,46 +217,44 @@
 .Fc
 .Xc
 .Pp
-A macro that calls the remote procedure
+.Fn clnt_create
+$B$J$I$N(B RPC $B%/%i%$%"%s%H:n@.%k!<%A%s$GF~<j$7$?!"(B
+$B%/%i%$%"%s%H%O%s%I%k(B
+.Fa clnt
+$B$K7k$SIU$1$i$l$?%j%b!<%H%W%m%7!<%8%c(B
 .Fa procnum
-associated with the client handle,
-.Fa clnt ,
-which is obtained with an
-.Tn RPC
-client creation routine such as
-.Fn clnt_create .
-The parameter
+$B$r8F$S=P$9%^%/%m$G$9!#(B
+$B%Q%i%a!<%?(B
 .Fa in
-is the address of the procedure's argument(s), and
+$B$O%W%m%7!<%8%c$N0z?t$N%"%I%l%9$G!"(B
 .Fa out
-is the address of where to place the result(s);
+$B$O7k2L$rG[CV$9$k%"%I%l%9$G$9!#(B
 .Fa inproc
-is used to encode the procedure's parameters, and
+$B$O%W%m%7!<%8%c$N%Q%i%a!<%?$r%(%s%3!<%I$9$k$N$K;HMQ$7!"(B
 .Fa outproc
-is used to decode the procedure's results;
+$B$O%W%m%7!<%8%c$N7k2L$r%G%3!<%I$9$k$N$K;HMQ$7$^$9!#(B
 .Fa tout
-is the time allowed for results to come back.
+$B$O7k2L$N5"4T$r<u$1IU$1$k;~4V$G$9!#(B
 .Pp
 .It Xo
 .Ft void
 .Fn clnt_destroy "CLIENT *clnt"
 .Xc
 .Pp
-A macro that destroys the client's
+$B%/%i%$%"%s%H$N(B
 .Tn RPC
-handle.
-Destruction usually involves deallocation
-of private data structures, including
+$B%O%s%I%k$rGK2u$9$k%^%/%m$G$9!#(B
+$BDL>o$N>l9g!"GK2u$K$O(B
 .Fa clnt
-itself.
-Use of
+$B$b4^$a$?%W%i%$%Y!<%H%G!<%?9=B$$N2rJ|$b4^$^$l$^$9!#(B
+.Fn clnt_destroy
+$B$r8F$S=P$7$?8e$N(B
 .Fa clnt
-is undefined after calling
-.Fn clnt_destroy .
-If the
+$B$NF0:n$OL$Dj5A$G$9!#(B
+$B7k$SIU$1$i$l$F$$$k%=%1%C%H$r(B
 .Tn RPC
-library opened the associated socket, it will close it also.
-Otherwise, the socket remains open.
+$B%i%$%V%i%j$,%*!<%W%s$7$?>l9g$O$=$l$bJD$8$^$9!#(B
+$B$=$&$G$J$$>l9g!"%=%1%C%H$O%*!<%W%s$7$?$^$^$G;D$5$l$^$9!#(B
 .Pp
 .It Xo
 .Ft CLIENT *
@@ -262,29 +263,32 @@
 .Fn clnt_create "char *host" "u_long prog" "u_long vers" "char *proto"
 .Xc
 .Pp
-Generic client creation routine.
+$B0lHLE*$J%/%i%$%"%s%H:n@.%k!<%A%s$G$9!#(B
 .Fa host
-identifies the name of the remote host where the server
-is located.
+$B$O%5!<%P$,G[CV$5$l$F$$$k(B
+$B%j%b!<%H%[%9%H$NL>A0$r;XDj$7$^$9!#(B
 .Fa proto
-indicates which kind of transport protocol to use.
-The
-currently supported values for this field are
+$B$O;HMQ$9$k%H%i%s%9%]!<%H%W%m%H%3%k$N<oN`$r;XDj$7$^$9!#(B
+$B$3$N%U%#!<%k%I$G8=:_%5%]!<%H$5$l$F$$$kCM$O!"(B
 .Qq Li udp
-and
-.Qq Li tcp .
-Default timeouts are set, but can be modified using
-.Fn clnt_control .
+$B$H(B
+.Qq Li tcp
+$B$G$9!#(B
+$B%?%$%`%"%&%H$O%G%U%)%k%H$G@_Dj$5$l$F$$$^$9$,!"(B
+.Fn clnt_control
+$B$r;HMQ$7$F=$@5$G$-$^$9!#(B
 .Pp
-Warning: Using
+$B7Y9p(B :
 .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.
+$B$N;HMQ$K$OC;=j$,$"$j$^$9!#(B
+.Tn UDP
+$B%Y!<%9$N(B
+.Tn RPC
+$B%a%C%;!<%8$O:GBg(B 8 $B%-%m%P%$%H$^$G$N(B
+$B%(%s%3!<%I%G!<%?$7$+J];}$G$-$J$$$N$G!"(B
+.Tn UDP
+$B%Y!<%9$N%H%i%s%9%]!<%H$OBg$-$J0z?t$r<h$k%W%m%7!<%8%c$d(B
+$BBg$-$J7k2L$rJV$9%W%m%7!<%8%c$K$O;HMQ$G$-$^$;$s!#(B
 .Pp
 .It Xo
 .Ft bool_t
@@ -293,77 +297,77 @@
 .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.
+$B%/%i%$%"%s%H%*%V%8%'%/%H$N(B
+$B$5$^$6$^$J>pJs$NJQ99$d<h$j=P$7$r9T$&%^%/%m$G$9!#(B
 .Fa req
-indicates the type of operation, and
+$B$GA`:n$N<oN`$N;XDj$r$*$3$J$$!"(B
 .Fa info
-is a pointer to the information.
-For both
+$B$G>pJs$X$N%]%$%s%?$r;XDj$7$^$9!#(B
 .Tn UDP
-and
-.Tn TCP ,
-the supported values of
+$B$H(B
+.Tn TCP
+$B$NN>J}$G%5%]!<%H$5$l$F$$$k(B
 .Fa req
-and their argument types and what they do are:
+$B$NCM!"0z?t$N7?!"<B9TFbMF$O0J2<$NDL$j$G$9!#(B
 .Bl -column "CLSET_RETRY_TIMEOUT" "struct sockaddr_in"
 .It Dv CLSET_TIMEOUT Ta Xo
-.Vt "struct timeval" Ta "set total timeout"
+.Vt "struct timeval" Ta "$BAm%?%$%`%"%&%H$N@_Dj(B"
 .Xc
 .It Dv CLGET_TIMEOUT Ta Xo
-.Vt "struct timeval" Ta "get total timeout"
+.Vt "struct timeval" Ta "$BAm%?%$%`%"%&%H$N<hF@(B"
 .Xc
 .El
 .Pp
-Note: if you set the timeout using
-.Fn clnt_control ,
-the timeout parameter passed to
+$BCm(B : $B%?%$%`%"%&%H$r(B
+.Fn clnt_control
+$B$G@_Dj$9$k$H!"(B
 .Fn clnt_call
-will be ignored in all future calls.
+$B$KEO$5$l$k%?%$%`%"%&%H%Q%i%a!<%?$O0J9_$N$9$Y$F$N8F$S=P$7$GL5;k$5$l$^$9!#(B
 .Bl -column "CLSET_RETRY_TIMEOUT" "struct sockaddr_in"
 .It Dv CLGET_SERVER_ADDR Ta Xo
-.Vt "struct sockaddr_in" Ta "get server's address"
+.Vt "struct sockaddr_in" Ta "$B%5!<%P$N%"%I%l%9$N<hF@(B"
 .Xc
 .El
 .Pp
-The following operations are valid for
+$B0J2<$NA`:n$O(B
 .Tn UDP
-only:
+$B$N$_$GM-8z$G$9!#(B
 .Bl -column "CLSET_RETRY_TIMEOUT" "struct sockaddr_in"
 .It Dv CLSET_RETRY_TIMEOUT Ta Xo
-.Vt "struct timeval" Ta "set the retry timeout"
+.Vt "struct timeval" Ta "$B%j%H%i%$%?%$%`%"%&%H$N@_Dj(B"
 .Xc
 .It Dv CLGET_RETRY_TIMEOUT Ta Xo
-.Vt "struct timeval" Ta "get the retry timeout"
+.Vt "struct timeval" Ta "$B%j%H%i%$%?%$%`%"%&%H$N<hF@(B"
 .Xc
-.It Dv CLSET_CONNECT Ta Vt "int" Ta use Xr connect 2
+.It Dv CLSET_CONNECT Ta Vt "int" Ta Xr connect 2 "$B$r;HMQ$7$^$9(B"
 .El
 .Pp
-The retry timeout is the time that
+$B%j%H%i%$%?%$%`%"%&%H$O!"(B
+.Tn "UDP RPC"
+$B$,MW5a$r:FAw$9$k$^$G$N;~4V$G!"%?%$%`%"%&%H$9$k$^$G(B
 .Tn "UDP RPC"
-waits for the server to reply before
-retransmitting the request.
+$B$O%5!<%P$N1~Ez$rBT$A$^$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn clnt_freeres "CLIENT *clnt" "xdrproc_t outproc" "char *out"
 .Xc
 .Pp
-A macro that frees any data allocated by the
 .Tn RPC/XDR
-system when it decoded the results of an
+$B%7%9%F%`$,(B
 .Tn RPC
-call.
-The parameter
+$B8F$S=P$7$N7k2L$r%G%3!<%I$9$k$H$-$K(B
+$B3d$jEv$F$?%G!<%?$r2rJ|$9$k%^%/%m$G$9!#(B
+$B%Q%i%a!<%?(B
 .Fa out
-is the address of the results, and
+$B$O7k2L$N%"%I%l%9$G!"(B
 .Fa outproc
-is the
+$B$O7k2L$r5-=R$9$k(B
 .Tn XDR
-routine describing the results.
-This routine returns one if the results were successfully
-freed,
-and zero otherwise.
+$B%k!<%A%s$G$9!#(B
+$B$3$N%k!<%A%s$O!"(B
+$B7k2L$,@5>o$K2rJ|$5$l$?>l9g$O(B 1 $B$rJV$7!"(B
+$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
 .Pp
 .It Xo
 .Ft void
@@ -372,10 +376,10 @@
 .Fn clnt_geterr "CLIENT *clnt" "struct rpc_err *errp"
 .Xc
 .Pp
-A macro that copies the error structure out of the client
-handle
-to the structure at address
-.Fa errp .
+$B%/%i%$%"%s%H%O%s%I%k$+$i;2>H$5$l$k%(%i!<9=B$BN$r!"(B
+$B%"%I%l%9(B
+.Fa errp
+$B$N9=B$BN$K%3%T!<$9$k%^%/%m$G$9!#(B
 .Pp
 .It Xo
 .Ft void
@@ -384,20 +388,19 @@
 .Fn clnt_pcreateerror "char *s"
 .Xc
 .Pp
-prints a message to standard error indicating
-why a client
+$B%/%i%$%"%s%H(B
 .Tn RPC
-handle could not be created.
-The message is prepended with string
+$B%O%s%I%k$r:n@.$G$-$J$$M}M3$rI=$9%a%C%;!<%8$r(B
+$BI8=`%(%i!<$K=PNO$7$^$9!#(B
+$B%a%C%;!<%8$N:G=i$K$OJ8;zNs(B
 .Fa s
-and a colon.
-Used when a
+$B$H%3%m%s$,IU$-$^$9!#(B
+$B$3$l$O!"(B
 .Fn clnt_create ,
 .Fn clntraw_create ,
 .Fn clnttcp_create ,
-or
 .Fn clntudp_create
-call fails.
+$B8F$S=P$7$,=hM}$K<:GT$7$?>l9g$K;HMQ$7$^$9!#(B
 .Pp
 .It Xo
 .Ft void
@@ -406,27 +409,26 @@
 .Fn clnt_perrno "enum clnt_stat stat"
 .Xc
 .Pp
-Print a message to standard error corresponding
-to the condition indicated by
-.Fa stat .
-Used after
-.Fn callrpc .
+.Fa stat
+$B$,<($9>r7o$KBP1~$9$k%a%C%;!<%8$r(B
+$BI8=`%(%i!<$K=PNO$7$^$9!#(B
+.Fn callrpc
+$B$N8e$G;HMQ$7$F$/$@$5$$!#(B
 .Pp
 .It Xo
 .Ft void
 .Fn clnt_perror "CLIENT *clnt" "char *s"
 .Xc
 .Pp
-Print a message to standard error indicating why an
 .Tn RPC
-call failed;
+$B8F$S=P$7$,=hM}$K<:GT$7$?M}M3$r<($9%a%C%;!<%8$rI8=`%(%i!<$K=PNO$7$^$9!#(B
 .Fa clnt
-is the handle used to do the call.
-The message is prepended with string
+$B$O!"8F$S=P$7$N<B9T$K;HMQ$7$?%O%s%I%k$G$9!#(B
+$B%a%C%;!<%8$N:G=i$K$O!"J8;zNs(B
 .Fa s
-and a colon.
-Used after
-.Fn clnt_call .
+$B$H%3%m%s$,IU$-$^$9!#(B
+.Fn clnt_call
+$B$N8e$G;HMQ$7$F$/$@$5$$!#(B
 .Pp
 .It Xo
 .Ft "char *"
@@ -435,13 +437,12 @@
 .Fn clnt_spcreateerror "char *s"
 .Xc
 .Pp
-Like
-.Fn clnt_pcreateerror ,
-except that it returns a string
-instead of printing to the standard error.
+$BI8=`%(%i!<$K=PNO$9$kBe$o$j$KJ8;zNs$rJV$9$3$H$r=|$1$P!"(B
+.Fn clnt_pcreateerror
+$B$HF1$8$G$9!#(B
 .Pp
-Bugs: returns pointer to static data that is overwritten
-on each call.
+$B%P%0(B : $B8F$S=P$7$NEY$KJV$5$l$k@EE*%G!<%?$X$N%]%$%s%?$O(B
+$B=E$M=q$-$5$l$^$9!#(B
 .Pp
 .It Xo
 .Ft "char *"
@@ -450,35 +451,37 @@
 .Fn clnt_sperrno "enum clnt_stat stat"
 .Xc
 .Pp
-Take the same arguments as
-.Fn clnt_perrno ,
-but instead of sending a message to the standard error
-indicating why an
-.Tn RPC
-call failed, return a pointer to a string which contains
-the message.
-The string ends with a newline
-.Pq Ql "\en" .
-.Pp
-.Fn clnt_sperrno
-is used instead of
 .Fn clnt_perrno
-if the program does not have a standard error (as a program
-running as a server quite likely does not), or if the
-programmer
-does not want the message to be output with
-.Fn printf ,
-or if a message format different from that supported by
+$B$HF1$80z?t$r<h$j$^$9$,!"(B
+.Tn RPC
+$B8F$S=P$7$,=hM}$K<:GT$7$?M}M3$r<($9%a%C%;!<%8$r(B
+$BI8=`%(%i!<$K=PNO$9$kBe$o$j$K!"(B
+$B%a%C%;!<%8$r4^$`J8;zNs$X$N%]%$%s%?$rJV$7$^$9!#(B
+$BJ8;zNs$O2~9T(B
+.Pq Ql "\en"
+$B$G=*$o$j$^$9!#(B
+.Pp
+$B%W%m%0%i%`$KI8=`%(%i!<$,$J$$>l9g(B ( $B%5!<%P$H$7$F(B
+$B<B9T$9$k%W%m%0%i%`$K$OI8=`%(%i!<$,$J$$$3$H$,B?$$(B ) $B!"(B
+$B$^$?$O%a%C%;!<%8$r(B
+.Fn printf
+$B$G=PNO$9$k$3$H$,K>$^$7$/$J$$>l9g!"$"$k$$$O(B
+.Fn clnt_perrno
+$B$G%5%]!<%H$7$J$$%a%C%;!<%8%U%)!<%^%C%H$r(B
+$B;HMQ$9$Y$->l9g$O!"(B
 .Fn clnt_perrno
-is to be used.
+$B$NBe$o$j$K(B
+.Fn clnt_sperrno
+$B$r;HMQ$7$^$9!#(B
 .Pp
-Note: unlike
+$BCm(B : 
 .Fn clnt_sperror
-and
-.Fn clnt_spcreaterror ,
+$B$*$h$S(B
+.Fn clnt_spcreaterror
+$B$H$O0[$J$j!"(B
 .Fn clnt_sperrno
-returns pointer to static data, but the
-result will not get overwritten on each call.
+$B$O@EE*%G!<%?$X$N%]%$%s%?$rJV$7$^$9$,!"(B
+$B7k2L$O8F$S=P$7$G=E$M=q$-$5$l$^$;$s!#(B
 .Pp
 .It Xo
 .Ft "char *"
@@ -487,14 +490,15 @@
 .Fn clnt_sperror "CLIENT *rpch" "char *s"
 .Xc
 .Pp
-Like
-.Fn clnt_perror ,
-except that (like
-.Fn clnt_sperrno )
-it returns a string instead of printing to standard error.
+.Fn clnt_sperrno
+$B$HF1$8$h$&$K!"(B
+$BI8=`%(%i!<$K=PNO$9$kBe$o$j$K(B
+$BJ8;zNs$rJV$9$3$H$r=|$1$P(B
+.Fn clnt_perror
+$B$HF1$8$G$9!#(B
 .Pp
-Bugs: returns pointer to static data that is overwritten
-on each call.
+$B%P%0(B : $B8F$S=P$7$NEY$KJV$5$l$k(B
+$B@EE*%G!<%?$X$N%]%$%s%?$O=E$M=q$-$5$l$^$9!#(B
 .Pp
 .It Xo
 .Ft "CLIENT *"
@@ -503,27 +507,29 @@
 .Fn clntraw_create "u_long prognum" "u_long versnum"
 .Xc
 .Pp
-This routine creates a toy
+$B$3$N%k!<%A%s$O%j%b!<%H%W%m%0%i%`HV9f(B
+.Fa prognum
+$B%P!<%8%g%sHV9f(B
+.Fa versnum
+$B$N%j%b!<%H%W%m%7!<%8%c$KBP$9$k%H%$(B
 .Tn RPC
-client for the remote program
-.Fa prognum ,
-version
-.Fa versnum .
-The transport used to pass messages to the service is
-actually a buffer within the process's address space, so the
-corresponding
-.Tn RPC
-server should live in the same address space; see
-.Fn svcraw_create .
-This allows simulation of
-.Tn RPC
-and acquisition of
-.Tn RPC
-overheads, such as round trip times, without any
-kernel interference.
-This routine returns
-.Dv NULL
-if it fails.
+$B%/%i%$%"%s%H$r:n@.$7$^$9!#(B
+$B%5!<%S%9$K%a%C%;!<%8$rEO$9<B:]$N%H%i%s%9%]!<%H$O!"(B
+$B%W%m%;%9$N%"%I%l%96u4VFb$K$"$k%P%C%U%!$J$N$G!"(B
+$BBP1~$9$k(B
+.Tn RPC
+$B%5!<%P$OF1$8%"%I%l%96u4V$KB8:_$9$kI,MW$,$"$j$^$9!#(B
+.Fn svcraw_create
+$B$r;2>H$7$F$/$@$5$$!#(B
+$B$3$l$K$h$j!"(B
+.Tn RPC
+$B$N%7%_%e%l!<%7%g%s$d!"(B
+.Tn RPC
+$B%*!<%P%X%C%I(B ( $B$?$H$($P%i%&%s%I%H%j%C%W%?%$%`$J$I(B ) $B$N(B
+$B<hF@$r%+!<%M%k$N43>D$J$7$K<B9T$G$-$^$9!#(B
+$B$3$N%k!<%A%s$O=hM}$K<:GT$9$k$H(B
+.Dv "$B%L%k(B "
+$B$rJV$7$^$9!#(B
 .Pp
 .It Xo
 .Ft "CLIENT *"
@@ -539,44 +545,49 @@
 .Fc
 .Xc
 .Pp
-This routine creates an
+$B$3$N%k!<%A%s$O%j%b!<%H%W%m%0%i%`HV9f(B
+.Fa prognum
+$B%P!<%8%g%sHV9f(B
+.Fa versnum
+$B$N%j%b!<%H%W%m%7!<%8%c$KBP$9$k(B
 .Tn RPC
-client for the remote program
-.Fa prognum ,
-version
-.Fa versnum ;
-the client uses
+$B%/%i%$%"%s%H$r:n@.$7$^$9!#(B
+$B%/%i%$%"%s%H$O%H%i%s%9%]!<%H$H$7$F(B
 .Tn TCP/IP
-as a transport.
-The remote program is located at Internet
-address
-.Fa addr .
-If
+$B$r;HMQ$7$^$9!#(B
+$B%j%b!<%H%W%m%0%i%`$O(B
+$B%$%s%?!<%M%C%H%"%I%l%9(B
+.Fa addr
+$B$K$"$j$^$9!#(B
 .Fa addr\->sin_port
-is zero, then it is set to the actual port that the remote
-program is listening on (the remote
+$B$OCM$,(B 0 $B$G$"$k>l9g!"(B
+$B%j%b!<%H%W%m%0%i%`$,%j%9%s$7$F$$$k(B
+$B<B:]$N%]!<%H$K@_Dj$5$l$^$9(B ( $B$3$N>pJs$rF@$k$?$a$K!"(B
+$B%j%b!<%H$N(B
 .Xr portmap 8
-service is consulted for this information).
-The parameter
+$B%5!<%S%9$rD4$Y$^$9(B ) $B!#(B
+$B%Q%i%a!<%?(B
+.Fa sockp
+$B$O%=%1%C%H$G$9!#(B
+$B$3$N%Q%i%a!<%?$NCM$,(B
+.Dv RPC_ANYSOCK
+$B$G$"$k>l9g!"$3$N%k!<%A%s$O?7$7$$%=%1%C%H$r3+$$$F(B
 .Fa sockp
-is a socket; if it is
-.Dv RPC_ANYSOCK ,
-then this routine opens a new one and sets
-.Fa sockp .
-Since
-.Tn TCP Ns \-based
-.Tn RPC
-uses buffered
-.Tn I/O ,
-the user may specify the size of the send and receive buffers
-with the parameters
+$B$r@_Dj$7$^$9!#(B
+.Tn TCP
+$B%Y!<%9$N(B
+.Tn RPC
+$B$O%P%C%U%!%j%s%0$9$k(B
+.Tn I/O
+$B$r;HMQ$9$k$N$G!"%f!<%6$O%Q%i%a!<%?(B
 .Fa sendsz
-and
-.Fa recvsz ;
-values of zero choose suitable defaults.
-This routine returns
-.Dv NULL
-if it fails.
+$B$H(B
+.Fa recvsz
+$B$GAw?.%P%C%U%!$H<u?.%P%C%U%!$N%5%$%:$r;XDj$G$-$^$9!#(B
+$BCM$r(B 0 $B$K$9$k$H!"E,@Z$J%G%U%)%k%H$,A*Br$5$l$^$9!#(B
+$B$3$N%k!<%A%s$O=hM}$K<:GT$9$k$H(B
+.Dv "$B%L%k(B "
+$B$rJV$7$^$9!#(B
 .Pp
 .It Xo
 .Ft "CLIENT *"
@@ -591,45 +602,51 @@
 .Fc
 .Xc
 .Pp
-This routine creates an
+$B$3$N%k!<%A%s$O%j%b!<%H%W%m%0%i%`HV9f(B
+.Fa prognum
+$B%P!<%8%g%sHV9f(B
+.Fa versnum
+$B$N%j%b!<%H%W%m%7!<%8%c$KBP$9$k(B
 .Tn RPC
-client for the remote program
-.Fa prognum ,
-version
-.Fa versnum ;
-the client uses
+$B%/%i%$%"%s%H$r:n@.$7$^$9!#(B
+$B%/%i%$%"%s%H$O!"%H%i%s%9%]!<%H$H$7$F(B
 .Tn UDP/IP
-as a transport.
-The remote program is located at Internet
-address
-.Fa addr .
-If
+$B$r;HMQ$7$^$9!#(B
+$B%j%b!<%H%W%m%0%i%`$O%$%s%?!<%M%C%H%"%I%l%9(B
+.Fa addr
+$B$K$"$j$^$9!#(B
 .Fa addr\->sin_port
-is zero, then it is set to actual port that the remote
-program is listening on (the remote
+$B$OCM$,(B 0 $B$G$"$k>l9g!"(B
+$B%j%b!<%H%W%m%0%i%`$,%j%9%s$7$F$$$k<B:]$N%]!<%H$K(B
+$B@_Dj$5$l$^$9(B ( $B$3$N>pJs$rF@$k$?$a$K!"%j%b!<%H$N(B
 .Xr portmap 8
-service is consulted for this information).
-The parameter
+$B%5!<%S%9$rD4$Y$^$9(B ) $B!#(B
+$B%Q%i%a!<%?(B
+.Fa sockp
+$B$O%=%1%C%H$G$9!#(B
+$B$3$N%Q%i%a!<%?$,(B
+.Dv RPC_ANYSOCK
+$B$G$"$k>l9g!"$3$N%k!<%A%s$O?7$7$$%=%1%C%H$r3+$$$F(B
 .Fa sockp
-is a socket; if it is
-.Dv RPC_ANYSOCK ,
-then this routine opens a new one and sets
-.Fa sockp .
-The
+$B$r@_Dj$7$^$9!#(B
 .Tn UDP
-transport resends the call message in intervals of
+$B%H%i%s%9%]!<%H$O!"1~Ez$r<u$1<h$k$^$G$+!"(B
+$B$^$?$O8F$S=P$7$,%?%$%`%"%&%H$K$J$k$^$G!"(B
 .Fa wait
-time until a response is received or until the call times
-out.
-The total time for the call to time out is specified by
-.Fn clnt_call .
-.Pp
-Warning: since
-.Tn UDP Ns \-based
-.Tn RPC
-messages can only hold up to 8 Kbytes
-of encoded data, this transport cannot be used for procedures
-that take large arguments or return huge results.
+$B;~4V4V3V$G8F$S=P$7%a%C%;!<%8$r(B
+$B:FAw?.$7$^$9!#(B
+$B8F$S=P$7$,%?%$%`%"%&%H$H$J$k;~4V$O!"(B
+.Fn clnt_call
+$B$G;XDj$7$^$9!#(B
+.Pp
+$B7Y9p(B :
+.Tn UDP
+$B%Y!<%9$N(B
+.Tn RPC
+$B%a%C%;!<%8$O:G9b(B 8 $B%-%m%P%$%H$^$G$N(B
+$B%(%s%3!<%I%G!<%?$7$+J];}$G$-$J$$$N$G!"(B
+$B$3$N%H%i%s%9%]!<%H$OBg$-$J0z?t$r$H$k%W%m%7!<%8%c$d(B
+$BBg$-$J7k2L$rJV$9%W%m%7!<%8%c$K$O;HMQ$G$-$^$;$s!#(B
 .Pp
 .It Xo
 .Ft "CLIENT *"
@@ -646,44 +663,47 @@
 .Fc
 .Xc
 .Pp
-This routine creates an
+$B$3$N%k!<%A%s$O%W%m%0%i%`HV9f(B
+.Fa prognum
+$B%P!<%8%g%sHV9f(B
+.Fa versnum
+$B$N%j%b!<%H%W%m%7!<%8%c$KBP$9$k(B
 .Tn RPC
-client for the remote program
-.Fa prognum ,
-on
-.Fa versnum ;
-the client uses
+$B%/%i%$%"%s%H$r:n@.$7$^$9!#(B
+$B%/%i%$%"%s%H$O%H%i%s%9%]!<%H$H$7$F(B
 .Tn UDP/IP
-as a transport.
-The remote program is located at Internet
-address
-.Fa addr .
-If
+$B$r;HMQ$7$^$9!#(B
+$B%j%b!<%H%W%m%0%i%`$O%$%s%?!<%M%C%H%"%I%l%9(B
+.Fa addr
+$B$K$"$j$^$9!#(B
 .Fa addr\->sin_port
-is zero, then it is set to actual port that the remote
-program is listening on (the remote
+$B$OCM$,(B 0 $B$G$"$k>l9g!"(B
+$B%j%b!<%H%W%m%0%i%`$,%j%9%s$7$F$$$k<B:]$N%]!<%H$K(B
+$B@_Dj$5$l$^$9(B ( $B$3$N>pJs$rF@$k$?$a$K!"%j%b!<%H$N(B
 .Xr portmap 8
-service is consulted for this information).
-The parameter
+$B%5!<%S%9$rD4$Y$^$9(B ) $B!#(B
+$B%Q%i%a!<%?(B
 .Fa sockp
-is a socket; if it is
-.Dv RPC_ANYSOCK ,
-then this routine opens a new one and sets
-.Fa sockp .
-The
+$B$O%=%1%C%H$G$9!#$3$N%Q%i%a!<%?$NCM$,(B
+.Dv RPC_ANYSOCK
+$B$G$"$k>l9g!"$3$N%k!<%A%s$O?7$7$$%=%1%C%H$r3+$$$F(B
+.Fa sockp
+$B$r@_Dj$7$^$9!#(B
 .Tn UDP
-transport resends the call message in intervals of
+$B%H%i%s%9%]!<%H$O1~Ez$r<u$1<h$k$^$G$+!"(B
+$B$^$?$O8F$S=P$7$,%?%$%`%"%&%H$K$J$k$^$G(B
 .Fa wait
-time until a response is received or until the call times
-out.
-The total time for the call to time out is specified by
-.Fn clnt_call .
-.Pp
-This allows the user to specify the maximum packet size
-for sending and receiving
-.Tn UDP Ns \-based
+$B;~4V4V3V$G8F$S=P$7%a%C%;!<%8$r:FAw?.$7$^$9!#(B
+$B8F$S=P$7$,%?%$%`%"%&%H$K$J$k9g7W;~4V$O!"(B
+.Fn clnt_call
+$B$G;XDj$7$^$9!#(B
+.Pp
+$B$3$l$K$h$j%f!<%6$O(B
+.Tn UDP
+$B%Y!<%9$N(B
 .Tn RPC
-messages.
+$B%a%C%;!<%8$NAw<u?.$r9T$&:GBg%Q%1%C%H%5%$%:(B
+$B$r;XDj$G$-$^$9!#(B
 .Pp
 .It Xo
 .Ft int
@@ -692,15 +712,16 @@
 .Fn get_myaddress "struct sockaddr_in *addr"
 .Xc
 .Pp
-Stuff the machine's
+.Pa /etc/hosts
+$B$r=hM}$9$k%i%$%V%i%j%k!<%A%s$r;29M$K$7$J$$$G!"%^%7%s$N(B
 .Tn IP
-address into
-.Fa addr ,
-without consulting the library routines that deal with
-.Pa /etc/hosts .
-The port number is always set to
-.Fn htons PMAPPORT .
-Returns zero on success, non-zero on failure.
+$B%"%I%l%9$r(B
+.Fa addr
+$B$KF~$l$^$9!#(B
+$B%]!<%HHV9f$O>o$K(B
+.Fn htons PMAPPORT
+$B$H$7$F@_Dj$5$l$^$9!#(B
+$B@5>o=*N;$7$?>l9g$O(B 0 $B$rJV$7!"=hM}$K<:GT$7$?>l9g$O(B 0 $B0J30$rJV$7$^$9!#(B
 .Pp
 .It Xo
 .Ft "struct pmaplist *"
@@ -709,20 +730,21 @@
 .Fn pmap_getmaps "struct sockaddr_in *addr"
 .Xc
 .Pp
-A user interface to the
 .Xr portmap 8
-service, which returns a list of the current
-.Tn RPC
-program\-to\-port mappings
-on the host located at
+$B%5!<%S%9$N%f!<%6%$%s%?%U%'!<%9$G!"(B
 .Tn IP
-address
-.Fa addr .
-This routine can return
-.Dv NULL .
-The command
+$B%"%I%l%9(B
+.Fa addr
+$B$K$"$k%[%9%H$N(B
+.Tn RPC
+$B%W%m%0%i%`$+$i%]!<%H$X$N(B
+$B8=9T$N%^%C%T%s%0$N%j%9%H$rJV$7$^$9!#(B
+$B$3$N%k!<%A%s$O(B
+.Dv "$B%L%k(B "
+$B$rJV$9$3$H$,$"$j$^$9!#(B
+$B%3%^%s%I(B
 .Dq Nm rpcinfo Fl p
-uses this routine.
+$B$O$3$N%k!<%A%s$r;HMQ$7$F$$$^$9!#(B
 .Pp
 .It Xo
 .Ft u_short
@@ -736,33 +758,36 @@
 .Fc
 .Xc
 .Pp
-A user interface to the
+$B$3$l$O(B
 .Xr portmap 8
-service, which returns the port number
-on which waits a service that supports program number
-.Fa prognum ,
-version
-.Fa versnum ,
-and speaks the transport protocol associated with
-.Fa protocol .
-The value of
+$B%5!<%S%9$rA`:n$9$k%f!<%6%$%s%?%U%'!<%9$G$9!#(B
+$B%W%m%0%i%`HV9f(B
+.Fa prognum
+$B%P!<%8%g%sHV9f(B
+.Fa versnum
+$B$N%j%b!<%H%W%m%7!<%8%c$r%5%]!<%H$7!"(B
+$BF1;~$K(B
+.Fa protocol
+$B$K7k$SIU$1$i$l$?(B
+$B%H%i%s%9%]!<%H%W%m%H%3%k$rOC$;$k%5!<%S%9(B
+$B$,BT$A<u$1$F$$$k%]!<%HHV9f$rJV$7$^$9!#(B
 .Fa protocol
-is most likely
+$B$NCM$O$[$H$s$I$N>l9g(B
 .Dv IPPROTO_UDP
-or
-.Dv IPPROTO_TCP .
-A return value of zero means that the mapping does not exist
-or that
-the
+$B$+(B
+.Dv IPPROTO_TCP
+$B$G$9!#(B
+$BJV$jCM$,(B 0 $B$G$"$k>l9g$O(B
+$B%^%C%T%s%0$,B8:_$7$J$$$+!"$^$?$O(B
 .Tn RPC
-system failed to contact the remote
+$B%7%9%F%`$,%j%b!<%H$N(B
 .Xr portmap 8
-service.
-In the latter case, the global variable
+$B%5!<%S%9$H@\B3$7$J$+$C$?$3$H$r<($7$^$9!#(B
+$B8e<T$N>l9g$O!"%0%m!<%P%kJQ?t(B
 .Va rpc_createerr
-contains the
+$B$K$O(B
 .Tn RPC
-status.
+$B%9%F!<%?%9$,F~$C$F$$$^$9!#(B
 .Pp
 .It Xo
 .Ft "enum clnt_stat"
@@ -782,74 +807,73 @@
 .Fc
 .Xc
 .Pp
-A user interface to the
-.Xr portmap 8
-service, which instructs
 .Xr portmap 8
-on the host at
+$B%5!<%S%9$N%f!<%6%$%s%?%U%'!<%9$G!"(B $B%f!<%6$rBeM}$7$F!"(B
 .Tn IP
-address
+$B%"%I%l%9(B
 .Fa addr
-to make an
+$B$N%[%9%H>e$N(B
+.Xr portmap 8
+$B$K%W%m%7!<%8%c$N(B
 .Tn RPC
-call on your behalf to a procedure on that host.
-The parameter
+$B8F$S=P$7$r9T$J$&$3$H$rL?Na$7$^$9!#(B
+$B%W%m%7!<%8%c$,@5>o=*N;$9$k>l9g!"(B
+$B%Q%i%a!<%?(B
 .Fa portp
-will be modified to the program's port number if the
-procedure
-succeeds.
-The definitions of other parameters are discussed
-in
+$B$K%W%m%0%i%`$N%]!<%HHV9f(B
+$B$,@_Dj$5$l$^$9!#(B
+$B$=$NB>$N%Q%i%a!<%?$NDj5A$K$D$$$F$O!"(B
 .Fn callrpc
-and
-.Fn clnt_call .
-This procedure should be used for a
+$B$H(B
+.Fn clnt_call
+$B$G@bL@$7$F$$$^$9!#(B
+$B$3$N%W%m%7!<%8%c$O!"(B
 .Dq ping
-and nothing
-else.
-See also
-.Fn clnt_broadcast .
+$B0J30$G;HMQ$9$k$3$H$O$"$j$^$;$s!#(B
+.Fn clnt_broadcast
+$B$b;2>H$7$F$/$@$5$$!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn pmap_set "u_long prognum" "u_long versnum" "u_long protocol" "u_short port"
 .Xc
 .Pp
-A user interface to the
 .Xr portmap 8
-service, which establishes a mapping between the triple
+$B%5!<%S%9$N%f!<%6%$%s%?%U%'!<%9$G!"(B
 .Pq Fa prognum , versnum , protocol
-and
-.Fa port
-on the machine's
+$B$N(B 3 $B$D!"$*$h$S%^%7%s$N(B
 .Xr portmap 8
-service.
-The value of
+$B%5!<%S%9$+$iF@$k(B
+.Fa port
+$B$N4V$K%^%C%T%s%0$r3NN)$7$^$9!#(B
 .Fa protocol
-is most likely
+$B$NCM$O!"$[$H$s$I$N>l9g(B
 .Dv IPPROTO_UDP
-or
-.Dv IPPROTO_TCP .
-This routine returns one if it succeeds, zero otherwise.
-Automatically done by
-.Fn svc_register .
+$B$+(B
+.Dv IPPROTO_TCP
+$B$G$9!#(B
+$B$3$N%k!<%A%s$O@5>o=*N;$7$?>l9g$O(B 1 $B$rJV$7!"(B
+$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
+$B$3$l$O!"(B
+.Fn svc_register
+$B$G<+F0E*$K<B9T$5$l$^$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn pmap_unset "u_long prognum" "u_long versnum"
 .Xc
 .Pp
-A user interface to the
 .Xr portmap 8
-service, which destroys all mapping between the triple
+$B%5!<%S%9$N%f!<%6%$%s%?%U%'!<%9$G!"(B
 .Pq Fa prognum , versnum , *
-and
-.Fa ports
-on the machine's
+$B$N(B 3 $B$D!"$*$h$S(B
 .Xr portmap 8
-service.
-This routine returns one if it succeeds, zero
-otherwise.
+$B%5!<%S%9$G$N(B
+.Fa ports
+$B$N4V$KB8:_$9$k%^%C%T%s%0$r$9$Y$FGK2u$7$^$9!#(B
+$B$3$N%k!<%A%s$O!"(B
+$B@5>o=*N;$7$?>l9g$O(B 1 $B$rJV$7!"(B
+$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
@@ -863,137 +887,142 @@
 .Fc
 .Xc
 .Pp
-Register procedure
-.Fa procname
-with the
 .Tn RPC
-service package.
-If a request arrives for program
-.Fa prognum ,
-version
-.Fa versnum ,
-and procedure
-.Fa procnum ,
+$B%5!<%S%9%Q%C%1!<%8$G%W%m%7!<%8%c(B
 .Fa procname
-is called with a pointer to its parameter(s);
+$B$rEPO?$7$^$9!#(B
+$B%W%m%0%i%`HV9f(B
+.Fa prognum
+$B%P!<%8%g%sHV9f(B
+.Fa versnum
+$B%W%m%7!<%8%cHV9f(B
+.Fa procnum
+$B$N%j%b!<%H%W%m%7!<%8%c$,MW5a$5$l$k$H!"(B
+$B%Q%i%a!<%?$X$N%]%$%s%?$r0z?t$H$7$F(B
+.Fa procname
+$B$,8F$S=P$5$l$^$9!#(B
 .Fa progname
-should return a pointer to its static result(s);
+$B$O@EE*7k2L$X$N%]%$%s%?$rJV$7$^$9!#(B
 .Fa inproc
-is used to decode the parameters while
+$B$O%Q%i%a!<%?$N%G%3!<%I(B
+$B$K;HMQ$5$l$k$N$K$?$$$7!"(B
 .Fa outproc
-is used to encode the results.
-This routine returns zero if the registration succeeded, \-1
-otherwise.
+$B$O7k2L$N%(%s%3!<%I$K;HMQ$5$l$^$9!#(B
+$B$3$N%k!<%A%s$O!"(B
+$BEPO?$,@5>o=*N;$7$?>l9g$K$O(B 0 $B$rJV$7!"(B
+$B=hM}$K<:GT$7$?>l9g$K$O(B \-1 $B$rJV$7$^$9!#(B
 .Pp
-Warning: remote procedures registered in this form
-are accessed using the
+$B7Y9p(B : $B$3$N7A<0$GEPO?$5$l$?(B
+$B%j%b!<%H%W%m%7!<%8%c$O!"(B
 .Tn UDP/IP
-transport; see
+$B%H%i%s%9%]!<%H$G%"%/%;%9$5$l$^$9!#(B
+$B@)8B;v9`$K$D$$$F$O(B
 .Fn svcudp_create
-for restrictions.
+$B$r;2>H$7$F$/$@$5$$!#(B
 .Pp
 .It Xo
 .Vt "struct rpc_createerr" rpc_createerr ;
 .Xc
 .Pp
-A global variable whose value is set by any
+$B@5>o=*N;$7$J$+$C$?(B
 .Tn RPC
-client creation routine
-that does not succeed.
-Use the routine
+$B%/%i%$%"%s%H:n@.%k!<%A%s$G(B
+$BCM$,@_Dj$5$l$k%0%m!<%P%kJQ?t$G$9!#(B
+$B%(%i!<$N860x$r=PNO$9$k$K$O!"(B
+$B%k!<%A%s(B
 .Fn clnt_pcreateerror
-to print the reason why.
+$B$r;HMQ$7$^$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn svc_destroy "SVCXPRT * xprt"
 .Xc
 .Pp
-A macro that destroys the
 .Tn RPC
-service transport handle,
-.Fa xprt .
-Destruction usually involves deallocation
-of private data structures, including
+$B%5!<%S%9%H%i%s%9%]!<%H%O%s%I%k(B
+.Fa xprt
+$B$rGK2u$9$k%^%/%m$G$9!#(B
+$B0lHLE*$KGK2u=hM}$K$O!"(B
 .Fa xprt
-itself.
-Use of
+$B$b4^$`%W%i%$%Y!<%H%G!<%?9=B$$N2rJ|(B
+$B$b4^$^$l$^$9!#(B
+$B$3$N%k!<%A%s$r8F$S=P$7$?8e$N(B
 .Fa xprt
-is undefined after calling this routine.
+$B$NF0:n$OL$Dj5A$G$9!#(B
 .Pp
 .It Xo
 .Vt fd_set svc_fdset ;
 .Xc
 .Pp
-A global variable reflecting the
 .Tn RPC
-service side's
-read file descriptor bit mask; it is suitable as a template parameter
-to the
+$B%5!<%S%9%5%$%I$NFI<h$j%U%!%$%k5-=R;R%S%C%H%^%9%/(B
+$B$rI=$9%0%m!<%P%kJQ?t$G$9!#(B
+.Xr select 2
+$B%7%9%F%`%3!<%k$N%F%s%W%l!<%H%Q%i%a!<%?(B
+$B$KE,$7$F$$$^$9!#(B
+$B%5!<%S%9$N:n@.<T$,(B
+.Fn svc_run
+$B$r8F$S=P$5$:!"(B
+$BHsF14|$N%$%Y%s%H=hM}$r9T$&>l9g$N$_$K=EMW$G$9!#(B
+$B$3$NJQ?t$OFI<h$j@lMQ$G(B ( $B%"%I%l%9$r(B
 .Xr select 2
-system call.
-This is only of interest
-if a service implementor does not call
-.Fn svc_run ,
-but rather does his own asynchronous event processing.
-This variable is read\-only (do not pass its address to
-.Xr select 2 ! ) ,
-yet it may change after calls to
+$B$KEO$7$^$;$s(B !) $B$,!"(B
 .Fn svc_getreqset
-or any creation routines.
-As well, note that if the process has descriptor limits
-which are extended beyond
-.Dv FD_SETSIZE ,
-this variable will only be usable for the first
+$B$^$?$OB>$N:n@.%k!<%A%s(B
+$B$r8F$S=P$7$?8e$GJQ99$G$-$^$9!#(B
+$B$J$*!"%W%m%;%9$K$D$$$F$N5-=R;R$N@)8B$,(B
+.Dv FD_SETSIZE
+$B$h$jBg$-$$>l9g$K$O!"(B
+$B$3$NJQ?t$O:G=i$N(B
 .Dv FD_SETSIZE
-descriptors.
+$B5-=R;R$G$7$+(B
+$B;HMQ$G$-$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B
 .Pp
 .It Xo
 .Vt int svc_fds ;
 .Xc
 .Pp
-Similar to
-.Va svc_fdset ,
-but limited to 32 descriptors.
-This
-interface is obsoleted by
-.Va svc_fdset .
+.Va svc_fdset
+$B$K;w$F$$$^$9$,!"(B 32 $B8D$N5-=R;R(B
+$B$K@)8B$5$l$F$$$^$9!#(B
+$B$3$N%$%s%?!<%U%'!<%9$O(B
+.Va svc_fdset
+$B$GCV$-49$($i$l$^$7$?!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn svc_freeargs "SVCXPRT *xprt" "xdrproc_t inproc" "char *in"
 .Xc
 .Pp
-A macro that frees any data allocated by the
 .Tn RPC/XDR
-system when it decoded the arguments to a service procedure
-using
-.Fn svc_getargs .
-This routine returns 1 if the results were successfully
-freed,
-and zero otherwise.
+$B%7%9%F%`$,%5!<%S%9%W%m%7!<%8%c$KEO$90z?t$r(B
+.Fn svc_getargs
+$B$r;HMQ$7$F%G%3!<%I$7$?>l9g$K(B
+$B3d$jEv$F$?%G!<%?$r2rJ|$9$k%^%/%m$G$9!#(B
+$B$3$N%k!<%A%s$O!"(B
+$B7k2L$,@5>o$K2rJ|$5$l$k$H(B 1 $B$rJV$7!"(B
+$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn svc_getargs "SVCXPRT *xprt" "xdrproc_t inproc" "char *in"
 .Xc
 .Pp
-A macro that decodes the arguments of an
 .Tn RPC
-request
-associated with the
+$B%5!<%S%9%H%i%s%9%]!<%H%O%s%I%k(B
+.Fa xprt
+$B$K7k$SIU$1$i$l$?(B
 .Tn RPC
-service transport handle,
-.Fa xprt .
-The parameter
+$BMW5a$N0z?t$r%G%3!<%I$9$k%^%/%m$G$9!#(B
+$B%Q%i%a!<%?(B
 .Fa in
-is the address where the arguments will be placed;
+$B$O0z?t$rG[CV$9$k>l=j$N%"%I%l%9$G$9!#(B
 .Fa inproc
-is the
+$B$O0z?t$r%G%3!<%I$9$k(B
 .Tn XDR
-routine used to decode the arguments.
-This routine returns one if decoding succeeds, and zero
-otherwise.
+$B%k!<%A%s$G$9!#(B
+$B$3$N%k!<%A%s$O%G%3!<%I$,@5>o=*N;$7$?>l9g$O(B 1 $B$rJV$7!"(B
+$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
 .Pp
 .It Xo
 .Ft "struct sockaddr_in *"
@@ -1002,45 +1031,45 @@
 .Fn svc_getcaller "SVCXPRT *xprt"
 .Xc
 .Pp
-The approved way of getting the network address of the caller
-of a procedure associated with the
 .Tn RPC
-service transport handle,
-.Fa xprt .
+$B%5!<%S%9%H%i%s%9%]!<%H%O%s%I%k(B
+.Fa xprt
+$B$K7k$SIU$1$i$l$?%W%m%7!<%8%c$N8F$S=P$7B&$N%M%C%H%o!<%/%"%I%l%9(B
+$B$rF~<j$9$k3N<B$JJ}K!$G$9!#(B
 .Pp
 .It Xo
 .Ft void
 .Fn svc_getreqset "fd_set *rdfds"
 .Xc
 .Pp
-This routine is only of interest if a service implementor
-does not call
-.Fn svc_run ,
-but instead implements custom asynchronous event processing.
-It is called when the
-.Xr select 2
-system call has determined that an
+$B$3$N%k!<%A%s$O%5!<%S%9$N:n@.<T$,(B
+.Fn svc_run
+$B$r8F$S=P$5$:!"(B
+$BFH<+$NHsF14|%$%Y%s%H=hM}$r<B8=$9$k(B
+$B>l9g$K$N$_=EMW$G$9!#(B
 .Tn RPC
-request has arrived on some
+$BMW5a$,(B
 .Tn RPC
-socket(s);
+$B%=%1%C%H$KE~Ce$7$?$H(B
+.Xr select 2
+$B%7%9%F%`%3!<%k$,H=CG$7$?>l9g$K8F$S=P$5$l$^$9!#(B
 .Fa rdfds
-is the resultant read file descriptor bit mask.
-The routine returns when all sockets associated with the
-value of
+$B$O!":n@.$5$l$?FI$_<h$j5-=R;R%S%C%H%^%9%/$G$9!#(B
+$B$3$N%k!<%A%s$O!"(B
 .Fa rdfds
-have been serviced.
+$B$NCM$K7k$SIU$1$i$l$?$9$Y$F$N%=%1%C%H(B
+$B$,%5!<%S%9$r<uNN$9$k$HI|5"$7$^$9!#(B
 .Pp
 .It Xo
 .Ft void
 .Fn svc_getreq "int rdfds"
 .Xc
 .Pp
-Similar to
-.Fn svc_getreqset ,
-but limited to 32 descriptors.
-This interface is obsoleted by
-.Fn svc_getreqset .
+.Fn svc_getreqset
+$B$K;w$F$$$^$9$,!"(B 32 $B8D$N5-=R;R$K@)8B$5$l$F$$$^$9!#(B
+$B$3$N%$%s%?%U%'!<%9$O(B
+.Fn svc_getreqset
+$B$GCV$-49$($i$l$^$7$?!#(B
 .Pp
 .It Xo
 .Ft bool_t
@@ -1053,77 +1082,74 @@
 .Fc
 .Xc
 .Pp
-Associates
+$B%W%m%0%i%`HV9f(B
 .Fa prognum
-and
+$B$H%P!<%8%g%sHV9f(B
 .Fa versnum
-with the service dispatch procedure,
-.Fn dispatch .
-If
+$B$r%5!<%S%9%G%#%9%Q%C%A%W%m%7!<%8%c(B
+.Fn dispatch
+$B$K7k$SIU$1$^$9!#(B
 .Fa protocol
-is zero, the service is not registered with the
+$B$,(B 0 $B$G$"$k>l9g!"%5!<%S%9$O(B
 .Xr portmap 8
-service.
-If
+$B%5!<%S%9$GEPO?$5$l$^$;$s!#(B
 .Fa protocol
-is non-zero, then a mapping of the triple
+$B$,(B 0 $B0J30$G$"$k>l9g!"(B
 .Pq Fa prognum , versnum , protocol
-to
+$B$N(B 3 $B$D$H(B
 .Fa xprt\->xp_port
-is established with the local
+$B$N%^%C%T%s%0$,%m!<%+%k(B
 .Xr portmap 8
-service (generally
+$B%5!<%S%9$G3NN)$5$l$^$9(B ( $B0lHLE*$K(B
 .Fa protocol
-is zero,
+$B$O(B 0 $B$+(B
 .Dv IPPROTO_UDP
-or
-.Dv IPPROTO_TCP ) .
-The procedure
+$B$+(B
+.Dv IPPROTO_TCP
+$B$G$9(B ) $B!#(B
+$B%W%m%7!<%8%c(B
 .Fn dispatch
-has the following form:
+$B$N7A<0$O0J2<$NDL$j$G$9!#(B
 .Bd -ragged -offset indent
 .Ft bool_t
 .Fn dispatch "struct svc_req *request" "SVCXPRT *xprt"
 .Ed
 .Pp
-The
 .Fn svc_register
-routine returns one if it succeeds, and zero otherwise.
+$B%k!<%A%s$O@5>o=*N;$7$?>l9g$O(B 1 $B$rJV$7!"(B
+$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
 .Pp
 .It Xo
 .Fn svc_run
 .Xc
 .Pp
-This routine never returns.
-It waits for
+$B$3$N%k!<%A%s$OI|5"$7$^$;$s!#(B
 .Tn RPC
-requests to arrive, and calls the appropriate service
-procedure using
+$BMW5a$NE~Ce$rBT$A!"E~Ce$9$k$H(B
 .Fn svc_getreq
-when one arrives.
-This procedure is usually waiting for a
+$B$r;HMQ$7$F(B
+$BE,@Z$J%5!<%S%9%W%m%7!<%8%c$r8F$S=P$7$^$9!#(B
+$BDL>o$N>l9g!"$3$N%W%m%7!<%8%c$O(B
 .Xr select 2
-system call to return.
+$B%7%9%F%`%3!<%k$,I|5"$9$k$N$rBT$A$^$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn svc_sendreply "SVCXPRT *xprt" "xdrproc_t outproc" "char *out"
 .Xc
 .Pp
-Called by an
 .Tn RPC
-service's dispatch routine to send the results of a
-remote procedure call.
-The parameter
+$B%5!<%S%9$N%G%#%9%Q%C%A%k!<%A%s$G8F$S=P$5$l!"(B
+$B%j%b!<%H%W%m%7!<%8%c%3!<%k$N7k2L$rAw?.$7$^$9!#(B
+$B%Q%i%a!<%?(B
 .Fa xprt
-is the request's associated transport handle;
+$B$OMW5a$N7k$SIU$i$l$F$$$k%H%i%s%9%]!<%H%O%s%I%k$G$9!#(B
 .Fa outproc
-is the
+$B$O7k2L$N%(%s%3!<%I$K;HMQ$9$k(B
 .Tn XDR
-routine which is used to encode the results; and
+$B%k!<%A%s$G$9!#(B
 .Fa out
-is the address of the results.
-This routine returns one if it succeeds, zero otherwise.
+$B$O7k2L$N%"%I%l%9$G$9!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1132,11 +1158,10 @@
 .Fn svc_unregister "u_long prognum" "u_long versnum"
 .Xc
 .Pp
-Remove all mapping of the double
 .Pq Fa prognum , versnum
-to dispatch routines, and of the triple
+$B$N(B 2 $B$D$H%G%#%9%Q%C%A%k!<%A%s$N%^%C%T%s%0!"$*$h$S(B
 .Pq Fa prognum , versnum , *
-to port number.
+$B$N(B 3 $B$D$H%]!<%HHV9f$N%^%C%T%s%0$r$9$Y$F:o=|$7$^$9!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1145,8 +1170,9 @@
 .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.
+$BG'>Z%(%i!<$N$?$a$K!"(B
+$B%j%b!<%H%W%m%7!<%8%c%3!<%k$N<B9T$r5qH]$9$k(B
+$B%5!<%S%9%G%#%9%Q%C%A%k!<%A%s$,8F$S=P$7$^$9!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1155,10 +1181,10 @@
 .Fn svcerr_decode "SVCXPRT *xprt"
 .Xc
 .Pp
-Called by a service dispatch routine that cannot successfully
-decode its parameters.
-See also
-.Fn svc_getargs .
+$B%Q%i%a!<%?$r@5>o$K%G%3!<%I$G$-$J$$(B
+$B%5!<%S%9%G%#%9%Q%C%A%k!<%A%s$,8F$S=P$7$^$9!#(B
+.Fn svc_getargs
+$B$b;2>H$7$F$/$@$5$$!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1167,8 +1193,9 @@
 .Fn svcerr_noproc "SVCXPRT *xprt"
 .Xc
 .Pp
-Called by a service dispatch routine that does not implement
-the procedure number that the caller requests.
+$B8F$S=P$7B&$,MW5a$7$?%W%m%7!<%8%cHV9f(B
+$B$r<B8=$7$J$$%5!<%S%9%G%#%9%Q%C%A%k!<%A%s(B
+$B$,8F$S=P$7$^$9!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1177,10 +1204,10 @@
 .Fn svcerr_noprog "SVCXPRT *xprt"
 .Xc
 .Pp
-Called when the desired program is not registered with the
+$BL\E*$N%W%m%0%i%`$,(B
 .Tn RPC
-package.
-Service implementors usually do not need this routine.
+$B%Q%C%1!<%8$GEPO?$5$l$F$$$J$$>l9g$K8F$S=P$5$l$^$9!#(B
+$B%5!<%S%9$N:n@.<T$K$ODL>o$N>l9g$3$N%k!<%A%s$OI,MW$"$j$^$;$s!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1189,11 +1216,10 @@
 .Fn svcerr_progvers "SVCXPRT *xprt" "u_long low_vers" "u_long high_vers"
 .Xc
 .Pp
-Called when the desired version of a program is not registered
-with the
+$B%W%m%0%i%`$NMW5a$5$l$F$$$k%P!<%8%g%s$,(B
 .Tn RPC
-package.
-Service implementors usually do not need this routine.
+$B%Q%C%1!<%8$GEPO?$5$l$F$$$J$$>l9g$K8F$S=P$5$l$^$9!#(B
+$B%5!<%S%9$N:n@.<T$K$ODL>o$N>l9g$3$N%k!<%A%s$OI,MW$"$j$^$;$s!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1202,11 +1228,11 @@
 .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.
+$B%5!<%S%9%G%#%9%Q%C%A%k!<%A%s$,!"(B
+$BFCDj$N%W%m%H%3%k$K5"B0$G$-$J$$%7%9%F%`%(%i!<(B
+$B$r8!=P$7$?>l9g$K8F$S=P$7$^$9!#(B
+$B$?$H$($P%5!<%S%9$,5-210h$r3d$jEv$F$i$l$J$$>l9g$O!"(B
+$B$3$N%k!<%A%s$,8F$S=P$5$l$^$9!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1215,11 +1241,12 @@
 .Fn svcerr_weakauth "SVCXPRT *xprt"
 .Xc
 .Pp
-Called by a service dispatch routine that refuses to perform
-a remote procedure call due to insufficient
-authentication parameters.
-The routine calls
-.Fn svcerr_auth xprt AUTH_TOOWEAK .
+$BG'>Z%Q%i%a!<%?$,B-$j$J$$$?$a$K!"(B
+$B%j%b!<%H%W%m%7!<%8%c%3!<%k$N<B9T$r5qH]$9$k(B
+$B%5!<%S%9%G%#%9%Q%C%A%k!<%A%s$,8F$S=P$7$^$9!#(B
+$B$3$N%k!<%A%s$O!"(B
+.Fn svcerr_auth xprt AUTH_TOOWEAK
+$B$r8F$S=P$7$^$9!#(B
 .Pp
 .It Xo
 .Ft "SVCXPRT *"
@@ -1228,26 +1255,27 @@
 .Fn svcraw_create void
 .Xc
 .Pp
-This routine creates a toy
+$B%H%$(B
 .Tn RPC
-service transport, to which it returns a pointer.
-The transport
-is really a buffer within the process's address space,
-so the corresponding
-.Tn RPC
-client should live in the same
-address space;
-see
-.Fn clntraw_create .
-This routine allows simulation of
-.Tn RPC
-and acquisition of
-.Tn RPC
-overheads (such as round trip times), without any kernel
-interference.
-This routine returns
-.Dv NULL
-if it fails.
+$B%/%i%$%"%s%H$r:n@.$7!"$3$l$r;2>H$9$k%]%$%s%?$rJV$7$^$9!#(B
+$B<B:]$N%H%i%s%9%]!<%H$O!"(B
+$B%W%m%;%9$N%"%I%l%96u4VFb$K$"$k%P%C%U%!$J$N$G!"(B
+$BBP1~$9$k(B
+.Tn RPC
+$B%/%i%$%"%s%H$O(B
+$BF1$8%"%I%l%96u4V$KB8:_$9$kI,MW$,$"$j$^$9!#(B
+.Fn clntraw_create
+$B$r;2>H$7$F$/$@$5$$!#(B
+$B$3$N%k!<%A%s$K$h$j!"(B
+.Tn RPC
+$B$N%7%_%e%l!<%7%g%s$d!"(B
+.Tn RPC
+$B%*!<%P%X%C%I(B ( $B$?$H$($P(B
+$B%i%&%s%I%H%j%C%W%?%$%`$J$I(B ) $B$N<hF@$r(B
+$B%+!<%M%k$N43>D$J$7$K<B9T$G$-$^$9!#(B
+$B$3$N%k!<%A%s$O=hM}$K<:GT$9$k$H(B
+.Dv "$B%L%k(B "
+$B$rJV$7$^$9!#(B
 .Pp
 .It Xo
 .Ft "SVCXPRT *"
@@ -1256,33 +1284,37 @@
 .Fn svctcp_create "int sock" "u_int send_buf_size" "u_int recv_buf_size"
 .Xc
 .Pp
-This routine creates a
-.Tn TCP/IP Ns \-based
+.Tn TCP/IP
+$B%Y!<%9$N(B
 .Tn RPC
-service transport, to which it returns a pointer.
-The transport is associated with the socket
-.Fa sock ,
-which may be
-.Dv RPC_ANYSOCK ,
-in which case a new socket is created.
-If the socket is not bound to a local
+$B%5!<%S%9%H%i%s%9%]!<%H$r:n@.$7!"(B
+$B$3$l$r;2>H$9$k%]%$%s%?$rJV$7$^$9!#(B
+$B%H%i%s%9%]!<%H$K$O%=%1%C%H(B
+.Fa sock
+$B$,7k$SIU$1$i$l$^$9!#(B
+$B%=%1%C%H$,(B
+.Dv RPC_ANYSOCK
+$B$G$"$k>l9g$O?7$7$$%=%1%C%H$,:n@.$5$l$^$9!#(B
+$B%=%1%C%H$,%m!<%+%k$N(B
 .Tn TCP
-port, then this routine binds it to an arbitrary port.
-Upon completion,
+$B%]!<%H$K7k9g$7$F$$$J$$>l9g!"(B
+$B$3$N%k!<%A%s$O%=%1%C%H$rG$0U$N%]!<%H$K7k9g$7$^$9!#(B
+$B=hM}$,=*$o$k$H!"(B
 .Fa xprt\->xp_sock
-is the transport's socket descriptor, and
+$B$O%H%i%s%9%]!<%H$N%=%1%C%H5-=R;R$K$J$j!"(B
 .Fa xprt\->xp_port
-is the transport's port number.
-This routine returns
-.Dv NULL
-if it fails.
-Since
-.Tn TCP Ns \-based
-.Tn RPC
-uses buffered
-.Tn I/O ,
-users may specify the size of buffers; values of zero
-choose suitable defaults.
+$B$O%H%i%s%9%]!<%H$N%]!<%HHV9f$K$J$j$^$9!#(B
+$B$3$N%k!<%A%s$O=hM}$K<:GT$9$k$H(B
+.Dv "$B%L%k(B "
+$B$rJV$7$^$9!#(B
+.Tn TCP
+$B%Y!<%9$N(B
+.Tn RPC
+$B$O%P%C%U%!%j%s%0$9$k(B
+.Tn I/O
+$B$r;HMQ$9$k$N$G!"(B
+$B%f!<%6$O%P%C%U%!%5%$%:$r;XDj$G$-$^$9!#(B
+$BCM$r(B 0 $B$K$9$k$H!"E,@Z$J%G%U%)%k%H$,A*Br$5$l$^$9!#(B
 .Pp
 .It Xo
 .Ft "SVCXPRT *"
@@ -1291,18 +1323,18 @@
 .Fn svcfd_create "int fd" "u_int sendsize" "u_int recvsize"
 .Xc
 .Pp
-Create a service on top of any open descriptor.
-Typically,
-this
-descriptor is a connected socket for a stream protocol such
-as
-.Tn TCP .
+$B3+$$$F$$$k5-=R;R$r>80.$7$F(B
+.Tn RPC
+$B%5!<%S%9%H%i%s%9%]!<%H$r:n@.$7$^$9!#(B
+$B0lHLE*$K$3$N5-=R;R$O!"(B
+.Tn TCP
+$B$J$I$N%9%H%j!<%`%W%m%H%3%k$N@\B3:Q$_%=%1%C%H$G$9!#(B
 .Fa sendsize
-and
+$B$H(B
 .Fa recvsize
-indicate sizes for the send and receive buffers.
-If they are
-zero, a reasonable default is chosen.
+$B$O!"Aw?.%P%C%U%!$H<u?.%P%C%U%!$N%5%$%:$r;XDj$7$^$9!#(B
+$B$3$N%5%$%:$,(B 0 $B$G$"$k>l9g$O!"(B
+$BE,@Z$J%G%U%)%k%H$,A*Br$5$l$^$9!#(B
 .Pp
 .It Xo
 .Ft "SVCXPRT *"
@@ -1311,61 +1343,62 @@
 .Fn svcudp_bufcreate "int sock" "u_int sendsize" "u_int recvsize"
 .Xc
 .Pp
-This routine creates a
-.Tn UDP/IP Ns \-based
+.Tn UDP/IP
+$B%Y!<%9$N(B
 .Tn RPC
-service transport, to which it returns a pointer.
-The transport is associated with the socket
-.Fa sock ,
-which may be
-.Dv RPC_ANYSOCK ,
-in which case a new socket is created.
-If the socket is not bound to a local
+$B%5!<%S%9%H%i%s%9%]!<%H$r:n@.$7!"(B
+$B$3$l$r;2>H$9$k%]%$%s%?$rJV$7$^$9!#(B
+$B%H%i%s%9%]!<%H$K$O%=%1%C%H(B
+.Fa sock
+$B$,7k$SIU$i$l$^$9!#(B
+$B%=%1%C%H$,(B
+.Dv RPC_ANYSOCK
+$B$G$"$k>l9g$O!"?7$7$$%=%1%C%H$,:n@.$5$l$^$9!#(B
+$B%=%1%C%H$,%m!<%+%k(B
 .Tn UDP
-port, then this routine binds it to an arbitrary port.
-Upon
-completion,
+$B%]!<%H$K7k9g$7$F$$$J$$>l9g!"(B
+$B$3$N%k!<%A%s$O%=%1%C%H$rG$0U$N%]!<%H$K7k9g$7$^$9!#(B
+$B=hM}$,=*$o$k$H!"(B
 .Fa xprt\->xp_sock
-is the transport's socket descriptor, and
+$B$O%H%i%s%9%]!<%H$N%=%1%C%H5-=R;R$K$J$j!"(B
 .Fa xprt\->xp_port
-is the transport's port number.
-This routine returns
-.Dv NULL
-if it fails.
-.Pp
-This allows the user to specify the maximum packet size for sending and
-receiving
-.Tn UDP Ns \-based
+$B$O%H%i%s%9%]!<%H$N%]!<%HHV9f$K$J$j$^$9!#(B
+$B$3$N%k!<%A%s$O=hM}$K<:GT$9$k$H(B
+.Dv "$B%L%k(B "
+$B$rJV$7$^$9!#(B
+.Pp
+$B$3$l$K$h$j%f!<%6$O(B
+.Tn UDP
+$B%Y!<%9$N(B
 .Tn RPC
-messages.
+$B%a%C%;!<%8$NAw<u?.$r9T$&(B
+$B:GBg%Q%1%C%H%5%$%:$r;XDj$G$-$^$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn xdr_accepted_reply "XDR *xdrs" "struct accepted_reply *ar"
 .Xc
 .Pp
-Used for encoding
 .Tn RPC
-reply messages.
-This routine is useful for users who
-wish to generate
-.Tn RPC Ns \-style
-messages without using the
+$B1~Ez%a%C%;!<%8$N%(%s%3!<%I$K;HMQ$7$^$9!#(B
+$B$3$N%k!<%A%s$G$O!"(B
 .Tn RPC
-package.
+$B%Q%C%1!<%8$r;HMQ$;$:$K!"(B
+.Tn RPC
+$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn xdr_authunix_parms "XDR *xdrs" "struct authunix_parms *aupp"
 .Xc
 .Pp
-Used for describing
 .Ux
-credentials.
-This routine is useful for users
-who wish to generate these credentials without using the
+$B>ZL@=q$N5-=R$K;HMQ$7$^$9!#(B
+$B$3$N%k!<%A%s$O(B
 .Tn RPC
-authentication package.
+$BG'>Z%Q%C%1!<%8$r;HMQ$;$:$K(B
+.Ux
+$B>ZL@=q$r:n@.$9$k>l9g$KJXMx$G$9!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1375,42 +1408,39 @@
 .Fn xdr_callhdr "XDR *xdrs" "struct rpc_msg *chdr"
 .Xc
 .Pp
-Used for describing
 .Tn RPC
-call header messages.
-This routine is useful for users who wish to generate
-.Tn RPC Ns \-style
-messages without using the
+$B%3!<%k%X%C%@%a%C%;!<%8$N5-=R$K;HMQ$7$^$9!#(B
+$B$3$N%k!<%A%s$G$O(B
+.Tn RPC
+$B%Q%C%1!<%8$r;HMQ$;$:$K(B
 .Tn RPC
-package.
+$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn xdr_callmsg "XDR *xdrs" "struct rpc_msg *cmsg"
 .Xc
 .Pp
-Used for describing
 .Tn RPC
-call messages.
-This routine is useful for users who wish to generate
-.Tn RPC Ns \-style
-messages without using the
+$B%3!<%k%a%C%;!<%8$N5-=R$K;HMQ$7$^$9!#(B
+$B$3$N%k!<%A%s$O!"(B
 .Tn RPC
-package.
+$B%Q%C%1!<%8$r;HMQ$;$:$K!"(B
+.Tn RPC
+$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn xdr_opaque_auth "XDR *xdrs" "struct opaque_auth *ap"
 .Xc
 .Pp
-Used for describing
 .Tn RPC
-authentication information messages.
-This routine is useful for users who wish to generate
-.Tn RPC Ns \-style
-messages without using the
+$BG'>Z>pJs%a%C%;!<%8$N5-=R$K;HMQ$7$^$9!#(B
+$B$3$N%k!<%A%s$G$O(B
+.Tn RPC
+$B%Q%C%1!<%8$r;HMQ$;$:$K(B
 .Tn RPC
-package.
+$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
 .Pp
 .It Xo
 .Vt struct pmap ;
@@ -1420,52 +1450,50 @@
 .Fn xdr_pmap "XDR *xdrs" "struct pmap *regs"
 .Xc
 .Pp
-Used for describing parameters to various
+$B$5$^$6$^$J(B
 .Xr portmap 8
-procedures, externally.
-This routine is useful for users who wish to generate
-these parameters without using the
+$B%W%m%7!<%8%c$N%Q%i%a!<%?$r30It$+$i5-=R$9$k$N$K;HMQ$7$^$9!#(B
+$B$3$N%k!<%A%s$O(B
 .Fn pmap_*
-interface.
+$B%$%s%?%U%'!<%9$r;HMQ$;$:$K!"(B
+$B%Q%i%a!<%?$r:n@.$9$k>l9g$KJXMx$G$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn xdr_pmaplist "XDR *xdrs" "struct pmaplist **rp"
 .Xc
 .Pp
-Used for describing a list of port mappings, externally.
-This routine is useful for users who wish to generate
-these parameters without using the
+$B%]!<%H%^%C%T%s%0$N%j%9%H$r30It$+$i5-=R$9$k$N$K;HMQ$7$^$9!#(B
+$B$3$N%k!<%A%s$O!"(B
 .Fn pmap_*
-interface.
+$B%$%s%?%U%'!<%9$r;HMQ$;$:$K!"(B
+$B$3$N%Q%i%a!<%?$r:n@.$9$k>l9g$KJXMx$G$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn xdr_rejected_reply "XDR *xdrs" "struct rejected_reply *rr"
 .Xc
 .Pp
-Used for describing
 .Tn RPC
-reply messages.
-This routine is useful for users who wish to generate
-.Tn RPC Ns \-style
-messages without using the
+$B1~Ez%a%C%;!<%8$N5-=R$K;HMQ$7$^$9!#(B
+$B$3$N%k!<%A%s$O(B
+.Tn RPC
+$B%Q%C%1!<%8$r;HMQ$;$:$K!"(B
 .Tn RPC
-package.
+$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
 .Pp
 .It Xo
 .Ft bool_t
 .Fn xdr_replymsg "XDR *xdrs" "struct rpc_msg *rmsg"
 .Xc
 .Pp
-Used for describing
 .Tn RPC
-reply messages.
-This routine is useful for users who wish to generate
+$B1~Ez%a%C%;!<%8$N5-=R$K;HMQ$7$^$9!#(B
+$B$3$N%k!<%A%s$O(B
 .Tn RPC
-style messages without using the
+$B%Q%C%1!<%8$r;HMQ$;$:$K!"(B
 .Tn RPC
-package.
+$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1474,15 +1502,14 @@
 .Fn xprt_register "SVCXPRT *xprt"
 .Xc
 .Pp
-After
 .Tn RPC
-service transport handles are created,
-they should register themselves with the
+$B%5!<%S%9%H%i%s%9%]!<%H%O%s%I%k$r:n@.$7$?$i!"(B
 .Tn RPC
-service package.
-This routine modifies the global variable
-.Va svc_fds .
-Service implementors usually do not need this routine.
+$B%5!<%S%9%Q%C%1!<%8$GEPO?$7$F$/$@$5$$!#(B
+$B$3$N%k!<%A%s$O!"%0%m!<%P%kJQ?t(B
+.Va svc_fds
+$B$r@_Dj$7$^$9!#(B
+$B%5!<%S%9$N:n@.<T$K$ODL>o$N>l9g$3$N%k!<%A%s$OI,MW$"$j$^$;$s!#(B
 .Pp
 .It Xo
 .Ft void
@@ -1491,17 +1518,16 @@
 .Fn xprt_unregister "SVCXPRT *xprt"
 .Xc
 .Pp
-Before an
 .Tn RPC
-service transport handle is destroyed,
-it should unregister itself with the
+$B%5!<%S%9%H%i%s%9%]!<%H%O%s%I%k$rGK2u$9$kA0$K!"(B
 .Tn RPC
-service package.
-This routine modifies the global variable
-.Va svc_fds .
-Service implementors usually do not need this routine.
+$B%5!<%S%9%Q%C%1!<%8$GEPO?$r2r=|$7$F$/$@$5$$!#(B
+$B$3$N%k!<%A%s$O%0%m!<%P%kJQ?t(B
+.Va svc_fds
+$B$r@_Dj$7$^$9!#(B
+$B%5!<%S%9$N:n@.<T$K$ODL>o$N>l9g$3$N%k!<%A%s$OI,MW$"$j$^$;$s!#(B
 .El
-.Sh SEE ALSO
+.Sh $B4XO"9`L\(B
 .Xr rpc_secure 3 ,
 .Xr xdr 3
 .Rs
@@ -1518,3 +1544,4 @@
 .%O RFC1050
 .%Q "Sun Microsystems, Inc., USC-ISI"
 .Re
+.\" Revised by Tetsuro Furuya <ht5t-fry@asahi-net.or.jp>, on May, 2002.

----Next_Part(Wed_Mar__6_22:18:45_2002_945)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=rpc.3

.\" @(#)rpc.3n	2.4 88/08/08 4.0 RPCSRC; from 1.19 88/06/24 SMI
.\" $FreeBSD: src/lib/libc/rpc/rpc.3,v 1.11.2.5 2001/12/14 18:33:56 ru Exp $
.\"
.Dd February 16, 1988
.Dt RPC 3
.Os
.Sh $BL>>N(B
.Nm rpc
.Nd "$B%j%b!<%H%W%m%7!<%8%c%3!<%kMQ%i%$%V%i%j%k!<%A%s(B"
.Sh LIBRARY
.Lb libc
.Sh $B=q<0(B
.In rpc/rpc.h
.Pp
$B4X?t@k8@$N(B
.Sx $B2r@b(B
$B$r;2>H$7$F$/$@$5$$!#(B
.Sh $B2r@b(B
$B$3$N%k!<%A%s$O(B C $B%W%m%0%i%`$r;HMQ$7$F!"(B
$B%M%C%H%o!<%/$rDL$7$FJL$N%^%7%s$G%W%m%7!<%8%c8F$S=P$7$r<B9T$G$-$^$9!#(B
$B$^$:%/%i%$%"%s%H$,!"%W%m%7!<%8%c$r8F$S=P$7!"(B
$B%G!<%?%Q%1%C%H$r%5!<%P$KAw?.$7$^$9!#(B
$B%Q%1%C%H$r<u$1<h$C$?%5!<%P$O!"(B
$B%G%#%9%Q%C%A%k!<%A%s$r8F$S=P$7!"(B
$BMW5a$5$l$?%5!<%S%9$r<B9T$7$F$+$i1~Ez$rAw$jJV$7$^$9!#(B
$B:G8e$K!"%W%m%7!<%8%c8F$S=P$7$O%/%i%$%"%s%H$KI|5"$7$^$9!#(B
.Pp
Secure
.Tn RPC ( DES
$BG'>Z(B ) $B$K;HMQ$9$k%k!<%A%s$K$D$$$F$O!"(B
.Xr rpc_secure 3
$B$G@bL@$7$^$9!#(B
Secure
.Tn RPC
$B$O(B
.Tn DES 
$B0E9f$,;HMQ$G$-$k>l9g$K$N$_;HMQ$G$-$^$9!#(B
.Bl -tag -width indent -compact
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn auth_destroy "AUTH *auth"
.Xc
.Pp
.Fa auth
$B$K7k$SIU$1$i$l$?G'>Z>pJs$rGK2u$9$k%^%/%m$G$9!#(B
$B0lHLE*$K!"(B
$BGK2u$K$O%W%i%$%Y!<%H%G!<%?9=B$$N2rJ|$b4^$^$l$^$9!#(B
.Fn auth_destroy
$B$r8F$S=P$7$?8e$N(B
.Fa auth
$B$NF0:n$OL$Dj5A$G$9!#(B
.Pp
.It Xo
.Ft "AUTH *"
.Xc
.It Xo
.Fn authnone_create
.Xc
.Pp
( $BG'>Z$r$7$J$$(B )
$B%j%b!<%H%W%m%7!<%8%c8F=P$7$KL5G'>Z>pJs$rEO$9(B
.Tn RPC
$BG'>Z%O%s%I%k$r:n@.$7$FJV$7$^$9!#(B
.Tn RPC
$B$O$3$NG'>Z$r%G%U%)%k%H$G;HMQ$7$^$9!#(B
.Pp
.It Xo
.Ft "AUTH *"
.Xc
.It Xo
.Fn authunix_create "char *host" "int uid" "int gid" "int len" "int *aup_gids"
.Xc
.Pp
.Ux
$BG'>Z>pJs$r4^$`(B
.Tn RPC
$BG'>Z%O%s%I%k$r:n@.$7$FJV$7$^$9!#(B
$B%Q%i%a!<%?(B
.Fa host
$B$O>pJs$r:n@.$9$k%^%7%s$NL>A0$G$9!#(B
.Fa uid
$B$O%f!<%6$N%f!<%6(B ID $B$G$9!#(B
.Fa gid
$B$O%f!<%6$N8=9T%0%k!<%W(B ID $B$G$9!#(B
.Fa len
$B$H(B
.Fa aup_gids
$B$O!"%f!<%6$,B0$9$k%0%k!<%W$NG[NsD9$HG[Ns$N9=B$$rI=$7$^$9!#(B
$B%f!<%6$K$J$j$9$^$9$3$H$OMF0W$G$9!#(B
.Pp
.It Xo
.Ft "AUTH *"
.Xc
.It Xo
.Fn authunix_create_default
.Xc
.Pp
$BE,@Z$J%Q%i%a!<%?$G(B
.Fn authunix_create
$B$r8F$S=P$7$^$9!#(B
.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
$B%^%7%s(B
.Fa host
$B$G%W%m%0%i%`HV9f(B
.Fa prognum
$B%P!<%8%g%sHV9f(B
.Fa versnum
$B%W%m%7!<%8%cHV9f(B
.Fa procnum
$B$K7k$SIU$1$i$l$?%j%b!<%H%W%m%7!<%8%c$r8F$S=P$7$^$9!#(B
$B%Q%i%a!<%?(B
.Fa in
$B$O%W%m%7!<%8%c$N0z?t%"%I%l%9$G!"(B
.Fa out
$B$O7k2L$rG[CV$9$k%"%I%l%9$G$9!#(B
.Fa inproc
$B$O%W%m%7!<%8%c$N%Q%i%a!<%?$r%(%s%3!<%I$9$k$?$a$K;HMQ$7!"(B
.Fa outproc
$B$O%W%m%7!<%8%c$N7k2L$r%G%3!<%I$9$k$?$a$K;HMQ$7$^$9!#(B
$B$3$N%k!<%A%s$O!"@5>o=*N;$7$?>l9g$O(B 0 $B$rJV$7!"(B
$B=hM}$K<:GT$7$?>l9g$O@0?t$K%-%c%9%H$5$l$k(B
.Vt "enum clnt_stat"
$B$NCM$rJV$7$^$9!#(B
$B%(%i!<%9%F!<%?%9$r%a%C%;!<%8$KJQ49$9$k$K$O!"%k!<%A%s(B
.Fn clnt_perrno
$B$,JXMx$G$9!#(B
.Pp
$B7Y9p(B : $B$3$N%k!<%A%s$G%j%b!<%H%W%m%7!<%8%c$r8F$S=P$9>l9g!"(B
.Tn UDP/IP
$B$,%H%i%s%9%]!<%HAX$H$7$F;HMQ$5$l$^$9!#(B
$B@)8B;v9`$K$D$$$F$O(B
.Fn clntudp_create
$B$r;2>H$7$F$/$@$5$$!#(B
$B$3$N%k!<%A%s$r;HMQ$7$?>l9g!"(B
$B%?%$%`%"%&%H$dG'>Z$O@)8f$G$-$^$;$s!#(B
.Pp
.It Xo
.Ft "enum clnt_stat"
.Xc
.It Xo
.Fo clnt_broadcast
.Fa "u_long prognum"
.Fa "u_long versnum"
.Fa "u_long procnum"
.Fa "xdrproc_t inproc"
.Fa "char *in"
.Fa "xdrproc_t outproc"
.Fa "char *out"
.Fa "bool_t (*eachresult)(caddr_t, struct sockaddr_in *)
.Fc
.Xc
.Pp
$B%m!<%+%k$G@\B3$5$l$F$$$k(B
$B$9$Y$F$N%V%m!<%I%-%c%9%H%M%C%H$K8F$S=P$7%a%C%;!<%8$,(B
$B%V%m!<%I%-%c%9%H$5$l$k$3$H$r=|$1$P!"(B
.Fn callrpc
$B$HF1$8$G$9!#(B
$B$3$N%k!<%A%s$O1~Ez$r<u$1<h$k$?$S$K!"0J2<$N7A<0$N(B
.Fn eachresult
$B$r8F$S=P$7$^$9!#(B
.Bd -ragged -offset indent
.Ft bool_t
.Fn eachresult "caddr_t out" "struct sockaddr_in *addr"
.Ed
.Pp
$B$3$N%k!<%A%s$N(B
.Fa out
$B$O(B
.Fn clnt_broadcast
$B$KEO$5$l$k(B
.Fa out
$B$HF1$8$G$9$,!"0[$J$kE@$O!"(B
$B%j%b!<%H%W%m%7!<%8%c$N=PNO$,%G%3!<%I$5$l$k%^%7%s$O!"(B
$B7k2L$rAw?.$9$k%^%7%s$N%"%I%l%9$r;2>H$9$k(B
.Fa addr
$B$H$J$k$3$H$G$9!#(B
.Fn eachresult
$B$,(B 0 $B$rJV$9>l9g(B
.Fn clnt_broadcast
$B$O<!$N1~Ez$rBT$A$^$9!#(B
0 $B$rJV$5$J$$>l9g$OE,@Z$J%9%F!<%?%9$rJV$7$^$9!#(B
.Pp
$B7Y9p(B : $B%V%m!<%I%-%c%9%H%=%1%C%H$O(B
$BE>AwC10L$NBg$-$5$,%G!<%?%j%s%/$N(B
$B:GBgE>AwC10L$K@)8B$5$l$F$$$^$9!#(B
$B%$!<%5%M%C%H$N>l9g!"(B
$B$3$NCM$O(B 1500 $B%P%$%H$G$9!#(B
.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
.Fn clnt_create
$B$J$I$N(B RPC $B%/%i%$%"%s%H:n@.%k!<%A%s$GF~<j$7$?!"(B
$B%/%i%$%"%s%H%O%s%I%k(B
.Fa clnt
$B$K7k$SIU$1$i$l$?%j%b!<%H%W%m%7!<%8%c(B
.Fa procnum
$B$r8F$S=P$9%^%/%m$G$9!#(B
$B%Q%i%a!<%?(B
.Fa in
$B$O%W%m%7!<%8%c$N0z?t$N%"%I%l%9$G!"(B
.Fa out
$B$O7k2L$rG[CV$9$k%"%I%l%9$G$9!#(B
.Fa inproc
$B$O%W%m%7!<%8%c$N%Q%i%a!<%?$r%(%s%3!<%I$9$k$N$K;HMQ$7!"(B
.Fa outproc
$B$O%W%m%7!<%8%c$N7k2L$r%G%3!<%I$9$k$N$K;HMQ$7$^$9!#(B
.Fa tout
$B$O7k2L$N5"4T$r<u$1IU$1$k;~4V$G$9!#(B
.Pp
.It Xo
.Ft void
.Fn clnt_destroy "CLIENT *clnt"
.Xc
.Pp
$B%/%i%$%"%s%H$N(B
.Tn RPC
$B%O%s%I%k$rGK2u$9$k%^%/%m$G$9!#(B
$BDL>o$N>l9g!"GK2u$K$O(B
.Fa clnt
$B$b4^$a$?%W%i%$%Y!<%H%G!<%?9=B$$N2rJ|$b4^$^$l$^$9!#(B
.Fn clnt_destroy
$B$r8F$S=P$7$?8e$N(B
.Fa clnt
$B$NF0:n$OL$Dj5A$G$9!#(B
$B7k$SIU$1$i$l$F$$$k%=%1%C%H$r(B
.Tn RPC
$B%i%$%V%i%j$,%*!<%W%s$7$?>l9g$O$=$l$bJD$8$^$9!#(B
$B$=$&$G$J$$>l9g!"%=%1%C%H$O%*!<%W%s$7$?$^$^$G;D$5$l$^$9!#(B
.Pp
.It Xo
.Ft CLIENT *
.Xc
.It Xo
.Fn clnt_create "char *host" "u_long prog" "u_long vers" "char *proto"
.Xc
.Pp
$B0lHLE*$J%/%i%$%"%s%H:n@.%k!<%A%s$G$9!#(B
.Fa host
$B$O%5!<%P$,G[CV$5$l$F$$$k(B
$B%j%b!<%H%[%9%H$NL>A0$r;XDj$7$^$9!#(B
.Fa proto
$B$O;HMQ$9$k%H%i%s%9%]!<%H%W%m%H%3%k$N<oN`$r;XDj$7$^$9!#(B
$B$3$N%U%#!<%k%I$G8=:_%5%]!<%H$5$l$F$$$kCM$O!"(B
.Qq Li udp
$B$H(B
.Qq Li tcp
$B$G$9!#(B
$B%?%$%`%"%&%H$O%G%U%)%k%H$G@_Dj$5$l$F$$$^$9$,!"(B
.Fn clnt_control
$B$r;HMQ$7$F=$@5$G$-$^$9!#(B
.Pp
$B7Y9p(B :
.Tn UDP
$B$N;HMQ$K$OC;=j$,$"$j$^$9!#(B
.Tn UDP
$B%Y!<%9$N(B
.Tn RPC
$B%a%C%;!<%8$O:GBg(B 8 $B%-%m%P%$%H$^$G$N(B
$B%(%s%3!<%I%G!<%?$7$+J];}$G$-$J$$$N$G!"(B
.Tn UDP
$B%Y!<%9$N%H%i%s%9%]!<%H$OBg$-$J0z?t$r<h$k%W%m%7!<%8%c$d(B
$BBg$-$J7k2L$rJV$9%W%m%7!<%8%c$K$O;HMQ$G$-$^$;$s!#(B
.Pp
.It Xo
.Ft bool_t
.Xc
.It Xo
.Fn clnt_control "CLIENT *cl" "u_int req" "char *info"
.Xc
.Pp
$B%/%i%$%"%s%H%*%V%8%'%/%H$N(B
$B$5$^$6$^$J>pJs$NJQ99$d<h$j=P$7$r9T$&%^%/%m$G$9!#(B
.Fa req
$B$GA`:n$N<oN`$N;XDj$r$*$3$J$$!"(B
.Fa info
$B$G>pJs$X$N%]%$%s%?$r;XDj$7$^$9!#(B
.Tn UDP
$B$H(B
.Tn TCP
$B$NN>J}$G%5%]!<%H$5$l$F$$$k(B
.Fa req
$B$NCM!"0z?t$N7?!"<B9TFbMF$O0J2<$NDL$j$G$9!#(B
.Bl -column "CLSET_RETRY_TIMEOUT" "struct sockaddr_in"
.It Dv CLSET_TIMEOUT Ta Xo
.Vt "struct timeval" Ta "$BAm%?%$%`%"%&%H$N@_Dj(B"
.Xc
.It Dv CLGET_TIMEOUT Ta Xo
.Vt "struct timeval" Ta "$BAm%?%$%`%"%&%H$N<hF@(B"
.Xc
.El
.Pp
$BCm(B : $B%?%$%`%"%&%H$r(B
.Fn clnt_control
$B$G@_Dj$9$k$H!"(B
.Fn clnt_call
$B$KEO$5$l$k%?%$%`%"%&%H%Q%i%a!<%?$O0J9_$N$9$Y$F$N8F$S=P$7$GL5;k$5$l$^$9!#(B
.Bl -column "CLSET_RETRY_TIMEOUT" "struct sockaddr_in"
.It Dv CLGET_SERVER_ADDR Ta Xo
.Vt "struct sockaddr_in" Ta "$B%5!<%P$N%"%I%l%9$N<hF@(B"
.Xc
.El
.Pp
$B0J2<$NA`:n$O(B
.Tn UDP
$B$N$_$GM-8z$G$9!#(B
.Bl -column "CLSET_RETRY_TIMEOUT" "struct sockaddr_in"
.It Dv CLSET_RETRY_TIMEOUT Ta Xo
.Vt "struct timeval" Ta "$B%j%H%i%$%?%$%`%"%&%H$N@_Dj(B"
.Xc
.It Dv CLGET_RETRY_TIMEOUT Ta Xo
.Vt "struct timeval" Ta "$B%j%H%i%$%?%$%`%"%&%H$N<hF@(B"
.Xc
.It Dv CLSET_CONNECT Ta Vt "int" Ta Xr connect 2 "$B$r;HMQ$7$^$9(B"
.El
.Pp
$B%j%H%i%$%?%$%`%"%&%H$O!"(B
.Tn "UDP RPC"
$B$,MW5a$r:FAw$9$k$^$G$N;~4V$G!"%?%$%`%"%&%H$9$k$^$G(B
.Tn "UDP RPC"
$B$O%5!<%P$N1~Ez$rBT$A$^$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn clnt_freeres "CLIENT *clnt" "xdrproc_t outproc" "char *out"
.Xc
.Pp
.Tn RPC/XDR
$B%7%9%F%`$,(B
.Tn RPC
$B8F$S=P$7$N7k2L$r%G%3!<%I$9$k$H$-$K(B
$B3d$jEv$F$?%G!<%?$r2rJ|$9$k%^%/%m$G$9!#(B
$B%Q%i%a!<%?(B
.Fa out
$B$O7k2L$N%"%I%l%9$G!"(B
.Fa outproc
$B$O7k2L$r5-=R$9$k(B
.Tn XDR
$B%k!<%A%s$G$9!#(B
$B$3$N%k!<%A%s$O!"(B
$B7k2L$,@5>o$K2rJ|$5$l$?>l9g$O(B 1 $B$rJV$7!"(B
$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn clnt_geterr "CLIENT *clnt" "struct rpc_err *errp"
.Xc
.Pp
$B%/%i%$%"%s%H%O%s%I%k$+$i;2>H$5$l$k%(%i!<9=B$BN$r!"(B
$B%"%I%l%9(B
.Fa errp
$B$N9=B$BN$K%3%T!<$9$k%^%/%m$G$9!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn clnt_pcreateerror "char *s"
.Xc
.Pp
$B%/%i%$%"%s%H(B
.Tn RPC
$B%O%s%I%k$r:n@.$G$-$J$$M}M3$rI=$9%a%C%;!<%8$r(B
$BI8=`%(%i!<$K=PNO$7$^$9!#(B
$B%a%C%;!<%8$N:G=i$K$OJ8;zNs(B
.Fa s
$B$H%3%m%s$,IU$-$^$9!#(B
$B$3$l$O!"(B
.Fn clnt_create ,
.Fn clntraw_create ,
.Fn clnttcp_create ,
.Fn clntudp_create
$B8F$S=P$7$,=hM}$K<:GT$7$?>l9g$K;HMQ$7$^$9!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn clnt_perrno "enum clnt_stat stat"
.Xc
.Pp
.Fa stat
$B$,<($9>r7o$KBP1~$9$k%a%C%;!<%8$r(B
$BI8=`%(%i!<$K=PNO$7$^$9!#(B
.Fn callrpc
$B$N8e$G;HMQ$7$F$/$@$5$$!#(B
.Pp
.It Xo
.Ft void
.Fn clnt_perror "CLIENT *clnt" "char *s"
.Xc
.Pp
.Tn RPC
$B8F$S=P$7$,=hM}$K<:GT$7$?M}M3$r<($9%a%C%;!<%8$rI8=`%(%i!<$K=PNO$7$^$9!#(B
.Fa clnt
$B$O!"8F$S=P$7$N<B9T$K;HMQ$7$?%O%s%I%k$G$9!#(B
$B%a%C%;!<%8$N:G=i$K$O!"J8;zNs(B
.Fa s
$B$H%3%m%s$,IU$-$^$9!#(B
.Fn clnt_call
$B$N8e$G;HMQ$7$F$/$@$5$$!#(B
.Pp
.It Xo
.Ft "char *"
.Xc
.It Xo
.Fn clnt_spcreateerror "char *s"
.Xc
.Pp
$BI8=`%(%i!<$K=PNO$9$kBe$o$j$KJ8;zNs$rJV$9$3$H$r=|$1$P!"(B
.Fn clnt_pcreateerror
$B$HF1$8$G$9!#(B
.Pp
$B%P%0(B : $B8F$S=P$7$NEY$KJV$5$l$k@EE*%G!<%?$X$N%]%$%s%?$O(B
$B=E$M=q$-$5$l$^$9!#(B
.Pp
.It Xo
.Ft "char *"
.Xc
.It Xo
.Fn clnt_sperrno "enum clnt_stat stat"
.Xc
.Pp
.Fn clnt_perrno
$B$HF1$80z?t$r<h$j$^$9$,!"(B
.Tn RPC
$B8F$S=P$7$,=hM}$K<:GT$7$?M}M3$r<($9%a%C%;!<%8$r(B
$BI8=`%(%i!<$K=PNO$9$kBe$o$j$K!"(B
$B%a%C%;!<%8$r4^$`J8;zNs$X$N%]%$%s%?$rJV$7$^$9!#(B
$BJ8;zNs$O2~9T(B
.Pq Ql "\en"
$B$G=*$o$j$^$9!#(B
.Pp
$B%W%m%0%i%`$KI8=`%(%i!<$,$J$$>l9g(B ( $B%5!<%P$H$7$F(B
$B<B9T$9$k%W%m%0%i%`$K$OI8=`%(%i!<$,$J$$$3$H$,B?$$(B ) $B!"(B
$B$^$?$O%a%C%;!<%8$r(B
.Fn printf
$B$G=PNO$9$k$3$H$,K>$^$7$/$J$$>l9g!"$"$k$$$O(B
.Fn clnt_perrno
$B$G%5%]!<%H$7$J$$%a%C%;!<%8%U%)!<%^%C%H$r(B
$B;HMQ$9$Y$->l9g$O!"(B
.Fn clnt_perrno
$B$NBe$o$j$K(B
.Fn clnt_sperrno
$B$r;HMQ$7$^$9!#(B
.Pp
$BCm(B : 
.Fn clnt_sperror
$B$*$h$S(B
.Fn clnt_spcreaterror
$B$H$O0[$J$j!"(B
.Fn clnt_sperrno
$B$O@EE*%G!<%?$X$N%]%$%s%?$rJV$7$^$9$,!"(B
$B7k2L$O8F$S=P$7$G=E$M=q$-$5$l$^$;$s!#(B
.Pp
.It Xo
.Ft "char *"
.Xc
.It Xo
.Fn clnt_sperror "CLIENT *rpch" "char *s"
.Xc
.Pp
.Fn clnt_sperrno
$B$HF1$8$h$&$K!"(B
$BI8=`%(%i!<$K=PNO$9$kBe$o$j$K(B
$BJ8;zNs$rJV$9$3$H$r=|$1$P(B
.Fn clnt_perror
$B$HF1$8$G$9!#(B
.Pp
$B%P%0(B : $B8F$S=P$7$NEY$KJV$5$l$k(B
$B@EE*%G!<%?$X$N%]%$%s%?$O=E$M=q$-$5$l$^$9!#(B
.Pp
.It Xo
.Ft "CLIENT *"
.Xc
.It Xo
.Fn clntraw_create "u_long prognum" "u_long versnum"
.Xc
.Pp
$B$3$N%k!<%A%s$O%j%b!<%H%W%m%0%i%`HV9f(B
.Fa prognum
$B%P!<%8%g%sHV9f(B
.Fa versnum
$B$N%j%b!<%H%W%m%7!<%8%c$KBP$9$k%H%$(B
.Tn RPC
$B%/%i%$%"%s%H$r:n@.$7$^$9!#(B
$B%5!<%S%9$K%a%C%;!<%8$rEO$9<B:]$N%H%i%s%9%]!<%H$O!"(B
$B%W%m%;%9$N%"%I%l%96u4VFb$K$"$k%P%C%U%!$J$N$G!"(B
$BBP1~$9$k(B
.Tn RPC
$B%5!<%P$OF1$8%"%I%l%96u4V$KB8:_$9$kI,MW$,$"$j$^$9!#(B
.Fn svcraw_create
$B$r;2>H$7$F$/$@$5$$!#(B
$B$3$l$K$h$j!"(B
.Tn RPC
$B$N%7%_%e%l!<%7%g%s$d!"(B
.Tn RPC
$B%*!<%P%X%C%I(B ( $B$?$H$($P%i%&%s%I%H%j%C%W%?%$%`$J$I(B ) $B$N(B
$B<hF@$r%+!<%M%k$N43>D$J$7$K<B9T$G$-$^$9!#(B
$B$3$N%k!<%A%s$O=hM}$K<:GT$9$k$H(B
.Dv "$B%L%k(B "
$B$rJV$7$^$9!#(B
.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
$B$3$N%k!<%A%s$O%j%b!<%H%W%m%0%i%`HV9f(B
.Fa prognum
$B%P!<%8%g%sHV9f(B
.Fa versnum
$B$N%j%b!<%H%W%m%7!<%8%c$KBP$9$k(B
.Tn RPC
$B%/%i%$%"%s%H$r:n@.$7$^$9!#(B
$B%/%i%$%"%s%H$O%H%i%s%9%]!<%H$H$7$F(B
.Tn TCP/IP
$B$r;HMQ$7$^$9!#(B
$B%j%b!<%H%W%m%0%i%`$O(B
$B%$%s%?!<%M%C%H%"%I%l%9(B
.Fa addr
$B$K$"$j$^$9!#(B
.Fa addr\->sin_port
$B$OCM$,(B 0 $B$G$"$k>l9g!"(B
$B%j%b!<%H%W%m%0%i%`$,%j%9%s$7$F$$$k(B
$B<B:]$N%]!<%H$K@_Dj$5$l$^$9(B ( $B$3$N>pJs$rF@$k$?$a$K!"(B
$B%j%b!<%H$N(B
.Xr portmap 8
$B%5!<%S%9$rD4$Y$^$9(B ) $B!#(B
$B%Q%i%a!<%?(B
.Fa sockp
$B$O%=%1%C%H$G$9!#(B
$B$3$N%Q%i%a!<%?$NCM$,(B
.Dv RPC_ANYSOCK
$B$G$"$k>l9g!"$3$N%k!<%A%s$O?7$7$$%=%1%C%H$r3+$$$F(B
.Fa sockp
$B$r@_Dj$7$^$9!#(B
.Tn TCP
$B%Y!<%9$N(B
.Tn RPC
$B$O%P%C%U%!%j%s%0$9$k(B
.Tn I/O
$B$r;HMQ$9$k$N$G!"%f!<%6$O%Q%i%a!<%?(B
.Fa sendsz
$B$H(B
.Fa recvsz
$B$GAw?.%P%C%U%!$H<u?.%P%C%U%!$N%5%$%:$r;XDj$G$-$^$9!#(B
$BCM$r(B 0 $B$K$9$k$H!"E,@Z$J%G%U%)%k%H$,A*Br$5$l$^$9!#(B
$B$3$N%k!<%A%s$O=hM}$K<:GT$9$k$H(B
.Dv "$B%L%k(B "
$B$rJV$7$^$9!#(B
.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
$B$3$N%k!<%A%s$O%j%b!<%H%W%m%0%i%`HV9f(B
.Fa prognum
$B%P!<%8%g%sHV9f(B
.Fa versnum
$B$N%j%b!<%H%W%m%7!<%8%c$KBP$9$k(B
.Tn RPC
$B%/%i%$%"%s%H$r:n@.$7$^$9!#(B
$B%/%i%$%"%s%H$O!"%H%i%s%9%]!<%H$H$7$F(B
.Tn UDP/IP
$B$r;HMQ$7$^$9!#(B
$B%j%b!<%H%W%m%0%i%`$O%$%s%?!<%M%C%H%"%I%l%9(B
.Fa addr
$B$K$"$j$^$9!#(B
.Fa addr\->sin_port
$B$OCM$,(B 0 $B$G$"$k>l9g!"(B
$B%j%b!<%H%W%m%0%i%`$,%j%9%s$7$F$$$k<B:]$N%]!<%H$K(B
$B@_Dj$5$l$^$9(B ( $B$3$N>pJs$rF@$k$?$a$K!"%j%b!<%H$N(B
.Xr portmap 8
$B%5!<%S%9$rD4$Y$^$9(B ) $B!#(B
$B%Q%i%a!<%?(B
.Fa sockp
$B$O%=%1%C%H$G$9!#(B
$B$3$N%Q%i%a!<%?$,(B
.Dv RPC_ANYSOCK
$B$G$"$k>l9g!"$3$N%k!<%A%s$O?7$7$$%=%1%C%H$r3+$$$F(B
.Fa sockp
$B$r@_Dj$7$^$9!#(B
.Tn UDP
$B%H%i%s%9%]!<%H$O!"1~Ez$r<u$1<h$k$^$G$+!"(B
$B$^$?$O8F$S=P$7$,%?%$%`%"%&%H$K$J$k$^$G!"(B
.Fa wait
$B;~4V4V3V$G8F$S=P$7%a%C%;!<%8$r(B
$B:FAw?.$7$^$9!#(B
$B8F$S=P$7$,%?%$%`%"%&%H$H$J$k;~4V$O!"(B
.Fn clnt_call
$B$G;XDj$7$^$9!#(B
.Pp
$B7Y9p(B :
.Tn UDP
$B%Y!<%9$N(B
.Tn RPC
$B%a%C%;!<%8$O:G9b(B 8 $B%-%m%P%$%H$^$G$N(B
$B%(%s%3!<%I%G!<%?$7$+J];}$G$-$J$$$N$G!"(B
$B$3$N%H%i%s%9%]!<%H$OBg$-$J0z?t$r$H$k%W%m%7!<%8%c$d(B
$BBg$-$J7k2L$rJV$9%W%m%7!<%8%c$K$O;HMQ$G$-$^$;$s!#(B
.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
$B$3$N%k!<%A%s$O%W%m%0%i%`HV9f(B
.Fa prognum
$B%P!<%8%g%sHV9f(B
.Fa versnum
$B$N%j%b!<%H%W%m%7!<%8%c$KBP$9$k(B
.Tn RPC
$B%/%i%$%"%s%H$r:n@.$7$^$9!#(B
$B%/%i%$%"%s%H$O%H%i%s%9%]!<%H$H$7$F(B
.Tn UDP/IP
$B$r;HMQ$7$^$9!#(B
$B%j%b!<%H%W%m%0%i%`$O%$%s%?!<%M%C%H%"%I%l%9(B
.Fa addr
$B$K$"$j$^$9!#(B
.Fa addr\->sin_port
$B$OCM$,(B 0 $B$G$"$k>l9g!"(B
$B%j%b!<%H%W%m%0%i%`$,%j%9%s$7$F$$$k<B:]$N%]!<%H$K(B
$B@_Dj$5$l$^$9(B ( $B$3$N>pJs$rF@$k$?$a$K!"%j%b!<%H$N(B
.Xr portmap 8
$B%5!<%S%9$rD4$Y$^$9(B ) $B!#(B
$B%Q%i%a!<%?(B
.Fa sockp
$B$O%=%1%C%H$G$9!#$3$N%Q%i%a!<%?$NCM$,(B
.Dv RPC_ANYSOCK
$B$G$"$k>l9g!"$3$N%k!<%A%s$O?7$7$$%=%1%C%H$r3+$$$F(B
.Fa sockp
$B$r@_Dj$7$^$9!#(B
.Tn UDP
$B%H%i%s%9%]!<%H$O1~Ez$r<u$1<h$k$^$G$+!"(B
$B$^$?$O8F$S=P$7$,%?%$%`%"%&%H$K$J$k$^$G(B
.Fa wait
$B;~4V4V3V$G8F$S=P$7%a%C%;!<%8$r:FAw?.$7$^$9!#(B
$B8F$S=P$7$,%?%$%`%"%&%H$K$J$k9g7W;~4V$O!"(B
.Fn clnt_call
$B$G;XDj$7$^$9!#(B
.Pp
$B$3$l$K$h$j%f!<%6$O(B
.Tn UDP
$B%Y!<%9$N(B
.Tn RPC
$B%a%C%;!<%8$NAw<u?.$r9T$&:GBg%Q%1%C%H%5%$%:(B
$B$r;XDj$G$-$^$9!#(B
.Pp
.It Xo
.Ft int
.Xc
.It Xo
.Fn get_myaddress "struct sockaddr_in *addr"
.Xc
.Pp
.Pa /etc/hosts
$B$r=hM}$9$k%i%$%V%i%j%k!<%A%s$r;29M$K$7$J$$$G!"%^%7%s$N(B
.Tn IP
$B%"%I%l%9$r(B
.Fa addr
$B$KF~$l$^$9!#(B
$B%]!<%HHV9f$O>o$K(B
.Fn htons PMAPPORT
$B$H$7$F@_Dj$5$l$^$9!#(B
$B@5>o=*N;$7$?>l9g$O(B 0 $B$rJV$7!"=hM}$K<:GT$7$?>l9g$O(B 0 $B0J30$rJV$7$^$9!#(B
.Pp
.It Xo
.Ft "struct pmaplist *"
.Xc
.It Xo
.Fn pmap_getmaps "struct sockaddr_in *addr"
.Xc
.Pp
.Xr portmap 8
$B%5!<%S%9$N%f!<%6%$%s%?%U%'!<%9$G!"(B
.Tn IP
$B%"%I%l%9(B
.Fa addr
$B$K$"$k%[%9%H$N(B
.Tn RPC
$B%W%m%0%i%`$+$i%]!<%H$X$N(B
$B8=9T$N%^%C%T%s%0$N%j%9%H$rJV$7$^$9!#(B
$B$3$N%k!<%A%s$O(B
.Dv "$B%L%k(B "
$B$rJV$9$3$H$,$"$j$^$9!#(B
$B%3%^%s%I(B
.Dq Nm rpcinfo Fl p
$B$O$3$N%k!<%A%s$r;HMQ$7$F$$$^$9!#(B
.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
$B$3$l$O(B
.Xr portmap 8
$B%5!<%S%9$rA`:n$9$k%f!<%6%$%s%?%U%'!<%9$G$9!#(B
$B%W%m%0%i%`HV9f(B
.Fa prognum
$B%P!<%8%g%sHV9f(B
.Fa versnum
$B$N%j%b!<%H%W%m%7!<%8%c$r%5%]!<%H$7!"(B
$BF1;~$K(B
.Fa protocol
$B$K7k$SIU$1$i$l$?(B
$B%H%i%s%9%]!<%H%W%m%H%3%k$rOC$;$k%5!<%S%9(B
$B$,BT$A<u$1$F$$$k%]!<%HHV9f$rJV$7$^$9!#(B
.Fa protocol
$B$NCM$O$[$H$s$I$N>l9g(B
.Dv IPPROTO_UDP
$B$+(B
.Dv IPPROTO_TCP
$B$G$9!#(B
$BJV$jCM$,(B 0 $B$G$"$k>l9g$O(B
$B%^%C%T%s%0$,B8:_$7$J$$$+!"$^$?$O(B
.Tn RPC
$B%7%9%F%`$,%j%b!<%H$N(B
.Xr portmap 8
$B%5!<%S%9$H@\B3$7$J$+$C$?$3$H$r<($7$^$9!#(B
$B8e<T$N>l9g$O!"%0%m!<%P%kJQ?t(B
.Va rpc_createerr
$B$K$O(B
.Tn RPC
$B%9%F!<%?%9$,F~$C$F$$$^$9!#(B
.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
.Xr portmap 8
$B%5!<%S%9$N%f!<%6%$%s%?%U%'!<%9$G!"(B $B%f!<%6$rBeM}$7$F!"(B
.Tn IP
$B%"%I%l%9(B
.Fa addr
$B$N%[%9%H>e$N(B
.Xr portmap 8
$B$K%W%m%7!<%8%c$N(B
.Tn RPC
$B8F$S=P$7$r9T$J$&$3$H$rL?Na$7$^$9!#(B
$B%W%m%7!<%8%c$,@5>o=*N;$9$k>l9g!"(B
$B%Q%i%a!<%?(B
.Fa portp
$B$K%W%m%0%i%`$N%]!<%HHV9f(B
$B$,@_Dj$5$l$^$9!#(B
$B$=$NB>$N%Q%i%a!<%?$NDj5A$K$D$$$F$O!"(B
.Fn callrpc
$B$H(B
.Fn clnt_call
$B$G@bL@$7$F$$$^$9!#(B
$B$3$N%W%m%7!<%8%c$O!"(B
.Dq ping
$B0J30$G;HMQ$9$k$3$H$O$"$j$^$;$s!#(B
.Fn clnt_broadcast
$B$b;2>H$7$F$/$@$5$$!#(B
.Pp
.It Xo
.Ft bool_t
.Fn pmap_set "u_long prognum" "u_long versnum" "u_long protocol" "u_short port"
.Xc
.Pp
.Xr portmap 8
$B%5!<%S%9$N%f!<%6%$%s%?%U%'!<%9$G!"(B
.Pq Fa prognum , versnum , protocol
$B$N(B 3 $B$D!"$*$h$S%^%7%s$N(B
.Xr portmap 8
$B%5!<%S%9$+$iF@$k(B
.Fa port
$B$N4V$K%^%C%T%s%0$r3NN)$7$^$9!#(B
.Fa protocol
$B$NCM$O!"$[$H$s$I$N>l9g(B
.Dv IPPROTO_UDP
$B$+(B
.Dv IPPROTO_TCP
$B$G$9!#(B
$B$3$N%k!<%A%s$O@5>o=*N;$7$?>l9g$O(B 1 $B$rJV$7!"(B
$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
$B$3$l$O!"(B
.Fn svc_register
$B$G<+F0E*$K<B9T$5$l$^$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn pmap_unset "u_long prognum" "u_long versnum"
.Xc
.Pp
.Xr portmap 8
$B%5!<%S%9$N%f!<%6%$%s%?%U%'!<%9$G!"(B
.Pq Fa prognum , versnum , *
$B$N(B 3 $B$D!"$*$h$S(B
.Xr portmap 8
$B%5!<%S%9$G$N(B
.Fa ports
$B$N4V$KB8:_$9$k%^%C%T%s%0$r$9$Y$FGK2u$7$^$9!#(B
$B$3$N%k!<%A%s$O!"(B
$B@5>o=*N;$7$?>l9g$O(B 1 $B$rJV$7!"(B
$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fo registerrpc
.Fa "u_long prognum"
.Fa "u_long versnum"
.Fa "u_long procnum"
.Fa "char *(*procname)(void)"
.Fa "xdrproc_t inproc"
.Fa "xdrproc_t outproc"
.Fc
.Xc
.Pp
.Tn RPC
$B%5!<%S%9%Q%C%1!<%8$G%W%m%7!<%8%c(B
.Fa procname
$B$rEPO?$7$^$9!#(B
$B%W%m%0%i%`HV9f(B
.Fa prognum
$B%P!<%8%g%sHV9f(B
.Fa versnum
$B%W%m%7!<%8%cHV9f(B
.Fa procnum
$B$N%j%b!<%H%W%m%7!<%8%c$,MW5a$5$l$k$H!"(B
$B%Q%i%a!<%?$X$N%]%$%s%?$r0z?t$H$7$F(B
.Fa procname
$B$,8F$S=P$5$l$^$9!#(B
.Fa progname
$B$O@EE*7k2L$X$N%]%$%s%?$rJV$7$^$9!#(B
.Fa inproc
$B$O%Q%i%a!<%?$N%G%3!<%I(B
$B$K;HMQ$5$l$k$N$K$?$$$7!"(B
.Fa outproc
$B$O7k2L$N%(%s%3!<%I$K;HMQ$5$l$^$9!#(B
$B$3$N%k!<%A%s$O!"(B
$BEPO?$,@5>o=*N;$7$?>l9g$K$O(B 0 $B$rJV$7!"(B
$B=hM}$K<:GT$7$?>l9g$K$O(B \-1 $B$rJV$7$^$9!#(B
.Pp
$B7Y9p(B : $B$3$N7A<0$GEPO?$5$l$?(B
$B%j%b!<%H%W%m%7!<%8%c$O!"(B
.Tn UDP/IP
$B%H%i%s%9%]!<%H$G%"%/%;%9$5$l$^$9!#(B
$B@)8B;v9`$K$D$$$F$O(B
.Fn svcudp_create
$B$r;2>H$7$F$/$@$5$$!#(B
.Pp
.It Xo
.Vt "struct rpc_createerr" rpc_createerr ;
.Xc
.Pp
$B@5>o=*N;$7$J$+$C$?(B
.Tn RPC
$B%/%i%$%"%s%H:n@.%k!<%A%s$G(B
$BCM$,@_Dj$5$l$k%0%m!<%P%kJQ?t$G$9!#(B
$B%(%i!<$N860x$r=PNO$9$k$K$O!"(B
$B%k!<%A%s(B
.Fn clnt_pcreateerror
$B$r;HMQ$7$^$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn svc_destroy "SVCXPRT * xprt"
.Xc
.Pp
.Tn RPC
$B%5!<%S%9%H%i%s%9%]!<%H%O%s%I%k(B
.Fa xprt
$B$rGK2u$9$k%^%/%m$G$9!#(B
$B0lHLE*$KGK2u=hM}$K$O!"(B
.Fa xprt
$B$b4^$`%W%i%$%Y!<%H%G!<%?9=B$$N2rJ|(B
$B$b4^$^$l$^$9!#(B
$B$3$N%k!<%A%s$r8F$S=P$7$?8e$N(B
.Fa xprt
$B$NF0:n$OL$Dj5A$G$9!#(B
.Pp
.It Xo
.Vt fd_set svc_fdset ;
.Xc
.Pp
.Tn RPC
$B%5!<%S%9%5%$%I$NFI<h$j%U%!%$%k5-=R;R%S%C%H%^%9%/(B
$B$rI=$9%0%m!<%P%kJQ?t$G$9!#(B
.Xr select 2
$B%7%9%F%`%3!<%k$N%F%s%W%l!<%H%Q%i%a!<%?(B
$B$KE,$7$F$$$^$9!#(B
$B%5!<%S%9$N:n@.<T$,(B
.Fn svc_run
$B$r8F$S=P$5$:!"(B
$BHsF14|$N%$%Y%s%H=hM}$r9T$&>l9g$N$_$K=EMW$G$9!#(B
$B$3$NJQ?t$OFI<h$j@lMQ$G(B ( $B%"%I%l%9$r(B
.Xr select 2
$B$KEO$7$^$;$s(B !) $B$,!"(B
.Fn svc_getreqset
$B$^$?$OB>$N:n@.%k!<%A%s(B
$B$r8F$S=P$7$?8e$GJQ99$G$-$^$9!#(B
$B$J$*!"%W%m%;%9$K$D$$$F$N5-=R;R$N@)8B$,(B
.Dv FD_SETSIZE
$B$h$jBg$-$$>l9g$K$O!"(B
$B$3$NJQ?t$O:G=i$N(B
.Dv FD_SETSIZE
$B5-=R;R$G$7$+(B
$B;HMQ$G$-$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B
.Pp
.It Xo
.Vt int svc_fds ;
.Xc
.Pp
.Va svc_fdset
$B$K;w$F$$$^$9$,!"(B 32 $B8D$N5-=R;R(B
$B$K@)8B$5$l$F$$$^$9!#(B
$B$3$N%$%s%?!<%U%'!<%9$O(B
.Va svc_fdset
$B$GCV$-49$($i$l$^$7$?!#(B
.Pp
.It Xo
.Ft bool_t
.Fn svc_freeargs "SVCXPRT *xprt" "xdrproc_t inproc" "char *in"
.Xc
.Pp
.Tn RPC/XDR
$B%7%9%F%`$,%5!<%S%9%W%m%7!<%8%c$KEO$90z?t$r(B
.Fn svc_getargs
$B$r;HMQ$7$F%G%3!<%I$7$?>l9g$K(B
$B3d$jEv$F$?%G!<%?$r2rJ|$9$k%^%/%m$G$9!#(B
$B$3$N%k!<%A%s$O!"(B
$B7k2L$,@5>o$K2rJ|$5$l$k$H(B 1 $B$rJV$7!"(B
$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn svc_getargs "SVCXPRT *xprt" "xdrproc_t inproc" "char *in"
.Xc
.Pp
.Tn RPC
$B%5!<%S%9%H%i%s%9%]!<%H%O%s%I%k(B
.Fa xprt
$B$K7k$SIU$1$i$l$?(B
.Tn RPC
$BMW5a$N0z?t$r%G%3!<%I$9$k%^%/%m$G$9!#(B
$B%Q%i%a!<%?(B
.Fa in
$B$O0z?t$rG[CV$9$k>l=j$N%"%I%l%9$G$9!#(B
.Fa inproc
$B$O0z?t$r%G%3!<%I$9$k(B
.Tn XDR
$B%k!<%A%s$G$9!#(B
$B$3$N%k!<%A%s$O%G%3!<%I$,@5>o=*N;$7$?>l9g$O(B 1 $B$rJV$7!"(B
$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
.Pp
.It Xo
.Ft "struct sockaddr_in *"
.Xc
.It Xo
.Fn svc_getcaller "SVCXPRT *xprt"
.Xc
.Pp
.Tn RPC
$B%5!<%S%9%H%i%s%9%]!<%H%O%s%I%k(B
.Fa xprt
$B$K7k$SIU$1$i$l$?%W%m%7!<%8%c$N8F$S=P$7B&$N%M%C%H%o!<%/%"%I%l%9(B
$B$rF~<j$9$k3N<B$JJ}K!$G$9!#(B
.Pp
.It Xo
.Ft void
.Fn svc_getreqset "fd_set *rdfds"
.Xc
.Pp
$B$3$N%k!<%A%s$O%5!<%S%9$N:n@.<T$,(B
.Fn svc_run
$B$r8F$S=P$5$:!"(B
$BFH<+$NHsF14|%$%Y%s%H=hM}$r<B8=$9$k(B
$B>l9g$K$N$_=EMW$G$9!#(B
.Tn RPC
$BMW5a$,(B
.Tn RPC
$B%=%1%C%H$KE~Ce$7$?$H(B
.Xr select 2
$B%7%9%F%`%3!<%k$,H=CG$7$?>l9g$K8F$S=P$5$l$^$9!#(B
.Fa rdfds
$B$O!":n@.$5$l$?FI$_<h$j5-=R;R%S%C%H%^%9%/$G$9!#(B
$B$3$N%k!<%A%s$O!"(B
.Fa rdfds
$B$NCM$K7k$SIU$1$i$l$?$9$Y$F$N%=%1%C%H(B
$B$,%5!<%S%9$r<uNN$9$k$HI|5"$7$^$9!#(B
.Pp
.It Xo
.Ft void
.Fn svc_getreq "int rdfds"
.Xc
.Pp
.Fn svc_getreqset
$B$K;w$F$$$^$9$,!"(B 32 $B8D$N5-=R;R$K@)8B$5$l$F$$$^$9!#(B
$B$3$N%$%s%?%U%'!<%9$O(B
.Fn svc_getreqset
$B$GCV$-49$($i$l$^$7$?!#(B
.Pp
.It Xo
.Ft bool_t
.Fo svc_register
.Fa "SVCXPRT *xprt"
.Fa "u_long prognum"
.Fa "u_long versnum"
.Fa "void (*dispatch)(struct svc_req *, SVCXPRT *)"
.Fa "int protocol"
.Fc
.Xc
.Pp
$B%W%m%0%i%`HV9f(B
.Fa prognum
$B$H%P!<%8%g%sHV9f(B
.Fa versnum
$B$r%5!<%S%9%G%#%9%Q%C%A%W%m%7!<%8%c(B
.Fn dispatch
$B$K7k$SIU$1$^$9!#(B
.Fa protocol
$B$,(B 0 $B$G$"$k>l9g!"%5!<%S%9$O(B
.Xr portmap 8
$B%5!<%S%9$GEPO?$5$l$^$;$s!#(B
.Fa protocol
$B$,(B 0 $B0J30$G$"$k>l9g!"(B
.Pq Fa prognum , versnum , protocol
$B$N(B 3 $B$D$H(B
.Fa xprt\->xp_port
$B$N%^%C%T%s%0$,%m!<%+%k(B
.Xr portmap 8
$B%5!<%S%9$G3NN)$5$l$^$9(B ( $B0lHLE*$K(B
.Fa protocol
$B$O(B 0 $B$+(B
.Dv IPPROTO_UDP
$B$+(B
.Dv IPPROTO_TCP
$B$G$9(B ) $B!#(B
$B%W%m%7!<%8%c(B
.Fn dispatch
$B$N7A<0$O0J2<$NDL$j$G$9!#(B
.Bd -ragged -offset indent
.Ft bool_t
.Fn dispatch "struct svc_req *request" "SVCXPRT *xprt"
.Ed
.Pp
.Fn svc_register
$B%k!<%A%s$O@5>o=*N;$7$?>l9g$O(B 1 $B$rJV$7!"(B
$B=hM}$K<:GT$7$?>l9g$O(B 0 $B$rJV$7$^$9!#(B
.Pp
.It Xo
.Fn svc_run
.Xc
.Pp
$B$3$N%k!<%A%s$OI|5"$7$^$;$s!#(B
.Tn RPC
$BMW5a$NE~Ce$rBT$A!"E~Ce$9$k$H(B
.Fn svc_getreq
$B$r;HMQ$7$F(B
$BE,@Z$J%5!<%S%9%W%m%7!<%8%c$r8F$S=P$7$^$9!#(B
$BDL>o$N>l9g!"$3$N%W%m%7!<%8%c$O(B
.Xr select 2
$B%7%9%F%`%3!<%k$,I|5"$9$k$N$rBT$A$^$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn svc_sendreply "SVCXPRT *xprt" "xdrproc_t outproc" "char *out"
.Xc
.Pp
.Tn RPC
$B%5!<%S%9$N%G%#%9%Q%C%A%k!<%A%s$G8F$S=P$5$l!"(B
$B%j%b!<%H%W%m%7!<%8%c%3!<%k$N7k2L$rAw?.$7$^$9!#(B
$B%Q%i%a!<%?(B
.Fa xprt
$B$OMW5a$N7k$SIU$i$l$F$$$k%H%i%s%9%]!<%H%O%s%I%k$G$9!#(B
.Fa outproc
$B$O7k2L$N%(%s%3!<%I$K;HMQ$9$k(B
.Tn XDR
$B%k!<%A%s$G$9!#(B
.Fa out
$B$O7k2L$N%"%I%l%9$G$9!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn svc_unregister "u_long prognum" "u_long versnum"
.Xc
.Pp
.Pq Fa prognum , versnum
$B$N(B 2 $B$D$H%G%#%9%Q%C%A%k!<%A%s$N%^%C%T%s%0!"$*$h$S(B
.Pq Fa prognum , versnum , *
$B$N(B 3 $B$D$H%]!<%HHV9f$N%^%C%T%s%0$r$9$Y$F:o=|$7$^$9!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn svcerr_auth "SVCXPRT *xprt" "enum auth_stat why"
.Xc
.Pp
$BG'>Z%(%i!<$N$?$a$K!"(B
$B%j%b!<%H%W%m%7!<%8%c%3!<%k$N<B9T$r5qH]$9$k(B
$B%5!<%S%9%G%#%9%Q%C%A%k!<%A%s$,8F$S=P$7$^$9!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn svcerr_decode "SVCXPRT *xprt"
.Xc
.Pp
$B%Q%i%a!<%?$r@5>o$K%G%3!<%I$G$-$J$$(B
$B%5!<%S%9%G%#%9%Q%C%A%k!<%A%s$,8F$S=P$7$^$9!#(B
.Fn svc_getargs
$B$b;2>H$7$F$/$@$5$$!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn svcerr_noproc "SVCXPRT *xprt"
.Xc
.Pp
$B8F$S=P$7B&$,MW5a$7$?%W%m%7!<%8%cHV9f(B
$B$r<B8=$7$J$$%5!<%S%9%G%#%9%Q%C%A%k!<%A%s(B
$B$,8F$S=P$7$^$9!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn svcerr_noprog "SVCXPRT *xprt"
.Xc
.Pp
$BL\E*$N%W%m%0%i%`$,(B
.Tn RPC
$B%Q%C%1!<%8$GEPO?$5$l$F$$$J$$>l9g$K8F$S=P$5$l$^$9!#(B
$B%5!<%S%9$N:n@.<T$K$ODL>o$N>l9g$3$N%k!<%A%s$OI,MW$"$j$^$;$s!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn svcerr_progvers "SVCXPRT *xprt" "u_long low_vers" "u_long high_vers"
.Xc
.Pp
$B%W%m%0%i%`$NMW5a$5$l$F$$$k%P!<%8%g%s$,(B
.Tn RPC
$B%Q%C%1!<%8$GEPO?$5$l$F$$$J$$>l9g$K8F$S=P$5$l$^$9!#(B
$B%5!<%S%9$N:n@.<T$K$ODL>o$N>l9g$3$N%k!<%A%s$OI,MW$"$j$^$;$s!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn svcerr_systemerr "SVCXPRT *xprt"
.Xc
.Pp
$B%5!<%S%9%G%#%9%Q%C%A%k!<%A%s$,!"(B
$BFCDj$N%W%m%H%3%k$K5"B0$G$-$J$$%7%9%F%`%(%i!<(B
$B$r8!=P$7$?>l9g$K8F$S=P$7$^$9!#(B
$B$?$H$($P%5!<%S%9$,5-210h$r3d$jEv$F$i$l$J$$>l9g$O!"(B
$B$3$N%k!<%A%s$,8F$S=P$5$l$^$9!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn svcerr_weakauth "SVCXPRT *xprt"
.Xc
.Pp
$BG'>Z%Q%i%a!<%?$,B-$j$J$$$?$a$K!"(B
$B%j%b!<%H%W%m%7!<%8%c%3!<%k$N<B9T$r5qH]$9$k(B
$B%5!<%S%9%G%#%9%Q%C%A%k!<%A%s$,8F$S=P$7$^$9!#(B
$B$3$N%k!<%A%s$O!"(B
.Fn svcerr_auth xprt AUTH_TOOWEAK
$B$r8F$S=P$7$^$9!#(B
.Pp
.It Xo
.Ft "SVCXPRT *"
.Xc
.It Xo
.Fn svcraw_create void
.Xc
.Pp
$B%H%$(B
.Tn RPC
$B%/%i%$%"%s%H$r:n@.$7!"$3$l$r;2>H$9$k%]%$%s%?$rJV$7$^$9!#(B
$B<B:]$N%H%i%s%9%]!<%H$O!"(B
$B%W%m%;%9$N%"%I%l%96u4VFb$K$"$k%P%C%U%!$J$N$G!"(B
$BBP1~$9$k(B
.Tn RPC
$B%/%i%$%"%s%H$O(B
$BF1$8%"%I%l%96u4V$KB8:_$9$kI,MW$,$"$j$^$9!#(B
.Fn clntraw_create
$B$r;2>H$7$F$/$@$5$$!#(B
$B$3$N%k!<%A%s$K$h$j!"(B
.Tn RPC
$B$N%7%_%e%l!<%7%g%s$d!"(B
.Tn RPC
$B%*!<%P%X%C%I(B ( $B$?$H$($P(B
$B%i%&%s%I%H%j%C%W%?%$%`$J$I(B ) $B$N<hF@$r(B
$B%+!<%M%k$N43>D$J$7$K<B9T$G$-$^$9!#(B
$B$3$N%k!<%A%s$O=hM}$K<:GT$9$k$H(B
.Dv "$B%L%k(B "
$B$rJV$7$^$9!#(B
.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
.Tn TCP/IP
$B%Y!<%9$N(B
.Tn RPC
$B%5!<%S%9%H%i%s%9%]!<%H$r:n@.$7!"(B
$B$3$l$r;2>H$9$k%]%$%s%?$rJV$7$^$9!#(B
$B%H%i%s%9%]!<%H$K$O%=%1%C%H(B
.Fa sock
$B$,7k$SIU$1$i$l$^$9!#(B
$B%=%1%C%H$,(B
.Dv RPC_ANYSOCK
$B$G$"$k>l9g$O?7$7$$%=%1%C%H$,:n@.$5$l$^$9!#(B
$B%=%1%C%H$,%m!<%+%k$N(B
.Tn TCP
$B%]!<%H$K7k9g$7$F$$$J$$>l9g!"(B
$B$3$N%k!<%A%s$O%=%1%C%H$rG$0U$N%]!<%H$K7k9g$7$^$9!#(B
$B=hM}$,=*$o$k$H!"(B
.Fa xprt\->xp_sock
$B$O%H%i%s%9%]!<%H$N%=%1%C%H5-=R;R$K$J$j!"(B
.Fa xprt\->xp_port
$B$O%H%i%s%9%]!<%H$N%]!<%HHV9f$K$J$j$^$9!#(B
$B$3$N%k!<%A%s$O=hM}$K<:GT$9$k$H(B
.Dv "$B%L%k(B "
$B$rJV$7$^$9!#(B
.Tn TCP
$B%Y!<%9$N(B
.Tn RPC
$B$O%P%C%U%!%j%s%0$9$k(B
.Tn I/O
$B$r;HMQ$9$k$N$G!"(B
$B%f!<%6$O%P%C%U%!%5%$%:$r;XDj$G$-$^$9!#(B
$BCM$r(B 0 $B$K$9$k$H!"E,@Z$J%G%U%)%k%H$,A*Br$5$l$^$9!#(B
.Pp
.It Xo
.Ft "SVCXPRT *"
.Xc
.It Xo
.Fn svcfd_create "int fd" "u_int sendsize" "u_int recvsize"
.Xc
.Pp
$B3+$$$F$$$k5-=R;R$r>80.$7$F(B
.Tn RPC
$B%5!<%S%9%H%i%s%9%]!<%H$r:n@.$7$^$9!#(B
$B0lHLE*$K$3$N5-=R;R$O!"(B
.Tn TCP
$B$J$I$N%9%H%j!<%`%W%m%H%3%k$N@\B3:Q$_%=%1%C%H$G$9!#(B
.Fa sendsize
$B$H(B
.Fa recvsize
$B$O!"Aw?.%P%C%U%!$H<u?.%P%C%U%!$N%5%$%:$r;XDj$7$^$9!#(B
$B$3$N%5%$%:$,(B 0 $B$G$"$k>l9g$O!"(B
$BE,@Z$J%G%U%)%k%H$,A*Br$5$l$^$9!#(B
.Pp
.It Xo
.Ft "SVCXPRT *"
.Xc
.It Xo
.Fn svcudp_bufcreate "int sock" "u_int sendsize" "u_int recvsize"
.Xc
.Pp
.Tn UDP/IP
$B%Y!<%9$N(B
.Tn RPC
$B%5!<%S%9%H%i%s%9%]!<%H$r:n@.$7!"(B
$B$3$l$r;2>H$9$k%]%$%s%?$rJV$7$^$9!#(B
$B%H%i%s%9%]!<%H$K$O%=%1%C%H(B
.Fa sock
$B$,7k$SIU$i$l$^$9!#(B
$B%=%1%C%H$,(B
.Dv RPC_ANYSOCK
$B$G$"$k>l9g$O!"?7$7$$%=%1%C%H$,:n@.$5$l$^$9!#(B
$B%=%1%C%H$,%m!<%+%k(B
.Tn UDP
$B%]!<%H$K7k9g$7$F$$$J$$>l9g!"(B
$B$3$N%k!<%A%s$O%=%1%C%H$rG$0U$N%]!<%H$K7k9g$7$^$9!#(B
$B=hM}$,=*$o$k$H!"(B
.Fa xprt\->xp_sock
$B$O%H%i%s%9%]!<%H$N%=%1%C%H5-=R;R$K$J$j!"(B
.Fa xprt\->xp_port
$B$O%H%i%s%9%]!<%H$N%]!<%HHV9f$K$J$j$^$9!#(B
$B$3$N%k!<%A%s$O=hM}$K<:GT$9$k$H(B
.Dv "$B%L%k(B "
$B$rJV$7$^$9!#(B
.Pp
$B$3$l$K$h$j%f!<%6$O(B
.Tn UDP
$B%Y!<%9$N(B
.Tn RPC
$B%a%C%;!<%8$NAw<u?.$r9T$&(B
$B:GBg%Q%1%C%H%5%$%:$r;XDj$G$-$^$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn xdr_accepted_reply "XDR *xdrs" "struct accepted_reply *ar"
.Xc
.Pp
.Tn RPC
$B1~Ez%a%C%;!<%8$N%(%s%3!<%I$K;HMQ$7$^$9!#(B
$B$3$N%k!<%A%s$G$O!"(B
.Tn RPC
$B%Q%C%1!<%8$r;HMQ$;$:$K!"(B
.Tn RPC
$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn xdr_authunix_parms "XDR *xdrs" "struct authunix_parms *aupp"
.Xc
.Pp
.Ux
$B>ZL@=q$N5-=R$K;HMQ$7$^$9!#(B
$B$3$N%k!<%A%s$O(B
.Tn RPC
$BG'>Z%Q%C%1!<%8$r;HMQ$;$:$K(B
.Ux
$B>ZL@=q$r:n@.$9$k>l9g$KJXMx$G$9!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Ft bool_t
.Fn xdr_callhdr "XDR *xdrs" "struct rpc_msg *chdr"
.Xc
.Pp
.Tn RPC
$B%3!<%k%X%C%@%a%C%;!<%8$N5-=R$K;HMQ$7$^$9!#(B
$B$3$N%k!<%A%s$G$O(B
.Tn RPC
$B%Q%C%1!<%8$r;HMQ$;$:$K(B
.Tn RPC
$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn xdr_callmsg "XDR *xdrs" "struct rpc_msg *cmsg"
.Xc
.Pp
.Tn RPC
$B%3!<%k%a%C%;!<%8$N5-=R$K;HMQ$7$^$9!#(B
$B$3$N%k!<%A%s$O!"(B
.Tn RPC
$B%Q%C%1!<%8$r;HMQ$;$:$K!"(B
.Tn RPC
$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn xdr_opaque_auth "XDR *xdrs" "struct opaque_auth *ap"
.Xc
.Pp
.Tn RPC
$BG'>Z>pJs%a%C%;!<%8$N5-=R$K;HMQ$7$^$9!#(B
$B$3$N%k!<%A%s$G$O(B
.Tn RPC
$B%Q%C%1!<%8$r;HMQ$;$:$K(B
.Tn RPC
$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
.Pp
.It Xo
.Vt struct pmap ;
.Xc
.It Xo
.Ft bool_t
.Fn xdr_pmap "XDR *xdrs" "struct pmap *regs"
.Xc
.Pp
$B$5$^$6$^$J(B
.Xr portmap 8
$B%W%m%7!<%8%c$N%Q%i%a!<%?$r30It$+$i5-=R$9$k$N$K;HMQ$7$^$9!#(B
$B$3$N%k!<%A%s$O(B
.Fn pmap_*
$B%$%s%?%U%'!<%9$r;HMQ$;$:$K!"(B
$B%Q%i%a!<%?$r:n@.$9$k>l9g$KJXMx$G$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn xdr_pmaplist "XDR *xdrs" "struct pmaplist **rp"
.Xc
.Pp
$B%]!<%H%^%C%T%s%0$N%j%9%H$r30It$+$i5-=R$9$k$N$K;HMQ$7$^$9!#(B
$B$3$N%k!<%A%s$O!"(B
.Fn pmap_*
$B%$%s%?%U%'!<%9$r;HMQ$;$:$K!"(B
$B$3$N%Q%i%a!<%?$r:n@.$9$k>l9g$KJXMx$G$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn xdr_rejected_reply "XDR *xdrs" "struct rejected_reply *rr"
.Xc
.Pp
.Tn RPC
$B1~Ez%a%C%;!<%8$N5-=R$K;HMQ$7$^$9!#(B
$B$3$N%k!<%A%s$O(B
.Tn RPC
$B%Q%C%1!<%8$r;HMQ$;$:$K!"(B
.Tn RPC
$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
.Pp
.It Xo
.Ft bool_t
.Fn xdr_replymsg "XDR *xdrs" "struct rpc_msg *rmsg"
.Xc
.Pp
.Tn RPC
$B1~Ez%a%C%;!<%8$N5-=R$K;HMQ$7$^$9!#(B
$B$3$N%k!<%A%s$O(B
.Tn RPC
$B%Q%C%1!<%8$r;HMQ$;$:$K!"(B
.Tn RPC
$B%9%?%$%k$N%a%C%;!<%8$r:n@.$9$k>l9g$KJXMx$G$9!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn xprt_register "SVCXPRT *xprt"
.Xc
.Pp
.Tn RPC
$B%5!<%S%9%H%i%s%9%]!<%H%O%s%I%k$r:n@.$7$?$i!"(B
.Tn RPC
$B%5!<%S%9%Q%C%1!<%8$GEPO?$7$F$/$@$5$$!#(B
$B$3$N%k!<%A%s$O!"%0%m!<%P%kJQ?t(B
.Va svc_fds
$B$r@_Dj$7$^$9!#(B
$B%5!<%S%9$N:n@.<T$K$ODL>o$N>l9g$3$N%k!<%A%s$OI,MW$"$j$^$;$s!#(B
.Pp
.It Xo
.Ft void
.Xc
.It Xo
.Fn xprt_unregister "SVCXPRT *xprt"
.Xc
.Pp
.Tn RPC
$B%5!<%S%9%H%i%s%9%]!<%H%O%s%I%k$rGK2u$9$kA0$K!"(B
.Tn RPC
$B%5!<%S%9%Q%C%1!<%8$GEPO?$r2r=|$7$F$/$@$5$$!#(B
$B$3$N%k!<%A%s$O%0%m!<%P%kJQ?t(B
.Va svc_fds
$B$r@_Dj$7$^$9!#(B
$B%5!<%S%9$N:n@.<T$K$ODL>o$N>l9g$3$N%k!<%A%s$OI,MW$"$j$^$;$s!#(B
.El
.Sh $B4XO"9`L\(B
.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
.\" Revised by Tetsuro Furuya <ht5t-fry@asahi-net.or.jp>, on May, 2002.

----Next_Part(Wed_Mar__6_22:18:45_2002_945)----
