URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Subversion Repositories openrisc_2011-10-31
[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [librpc/] [src/] [rpc/] [rpc.3] - Rev 493
Go to most recent revision | Compare with Previous | Blame | View Log
.\" @(#)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 2000/03/02 09:13:47 sheldonh Exp $.\".TH RPC 3 "16 February 1988".SH NAMErpc \- library routines for remote procedure calls.SH SYNOPSIS AND DESCRIPTIONThese routines allow C programs to make procedurecalls on other machines across the network.First, the client calls a procedure to send adata packet to the server.Upon receipt of the packet, the server calls a dispatch routineto perform the requested service, and then sends back areply.Finally, the procedure call returns to the client..LPRoutines that are used for Secure RPC (DES authentication) are described in.BR rpc_secure (3).Secure RPC can be used only if DES encryption is available..LP.ft B.nf.sp .5#include <rpc/rpc.h>.fi.ft R.br.if t .ne 8.LP.ft B.nf.sp .5voidauth_destroy(auth)\s-1AUTH\s0 *auth;.fi.ft R.IPA macro that destroys the authentication information associated with.IR auth .Destruction usually involves deallocation of private datastructures.The use of.I authis undefined after calling.BR auth_destroy(\|) ..br.if t .ne 6.LP.ft B.nf.sp .5\s-1AUTH\s0 *authnone_create(\|).fi.ft R.IPCreate and returns an.SM RPCauthentication handle that passes nonusable authenticationinformation with each remote procedure call.This is thedefault authentication used by.SM RPC..if t .ne 10.LP.ft B.nf.sp .5\s-1AUTH\s0 *authunix_create(host, uid, gid, len, aup_gids)char *host;int uid, gid, len, *aup.gids;.fi.ft R.IPCreate and return an.SM RPCauthentication handle that contains.UXauthentication information.The parameter.I hostis the name of the machine on which the information wascreated;.I uidis the user's user.SM ID ;.I gidis the user's current group.SM ID ;.I lenand.I aup_gidsrefer to a counted array of groups to which the user belongs.It is easy to impersonate a user..br.if t .ne 5.LP.ft B.nf.sp .5\s-1AUTH\s0 *authunix_create_default(\|).fi.ft R.IPCalls.B authunix_create(\|)with the appropriate parameters..br.if t .ne 13.LP.ft B.nf.sp .5callrpc(host, prognum, versnum, procnum, inproc, in, outproc, out)char *host;u_long prognum, versnum, procnum;char *in, *out;xdrproc_t inproc, outproc;.fi.ft R.IPCall the remote procedure associated with.IR prognum ,.IR versnum ,and.I procnumon the machine,.IR host .The parameter.I inis the address of the procedure's argument(s), and.I outis the address of where to place the result(s);.I inprocis used to encode the procedure's parameters, and.I outprocis used to decode the procedure's results.This routine returns zero if it succeeds, or the value of.B "enum clnt_stat"cast to an integer if it fails.The routine.B clnt_perrno(\|)is handy for translating failure statuses into messages..IPWarning: calling remote procedures with this routineuses.SM UDP/IPas a transport; see.B clntudp_create(\|)for restrictions.You do not have control of timeouts or authentication usingthis routine..br.if t .ne 16.LP.ft B.nf.sp .5enum clnt_statclnt_broadcast(prognum, versnum, procnum, inproc, in, outproc, out, eachresult)u_long prognum, versnum, procnum;char *in, *out;xdrproc_t inproc, outproc;resultproc_t eachresult;.fi.ft R.IPLike.BR callrpc(\|) ,except the call message is broadcast to all locallyconnected broadcast nets.Each time it receives aresponse, this routine calls.BR eachresult(\|) ,whose form is:.IP.RS 1i.ft B.nfeachresult(out, addr)char *out;struct sockaddr_in *addr;.ft R.fi.RE.IPwhere.I outis the same as.I outpassed to.BR clnt_broadcast(\|) ,except that the remote procedure's output is decoded there;.I addrpoints to the address of the machine that sent the results.If.B eachresult(\|)returns zero,.B clnt_broadcast(\|)waits for more replies; otherwise it returns with appropriatestatus..IPWarning: broadcast sockets are limited in size to themaximum transfer unit of the data link.For ethernet,this value is 1500 bytes..br.if t .ne 13.LP.ft B.nf.sp .5enum clnt_statclnt_call(clnt, procnum, inproc, in, outproc, out, tout)\s-1CLIENT\s0 *clnt;u_longprocnum;xdrproc_t inproc, outproc;char *in, *out;struct timeval tout;.fi.ft R.IPA macro that calls the remote procedure.I procnumassociated with the client handle,.IR clnt ,which is obtained with an.SM RPCclient creation routine such as.BR clnt_create(\|) .The parameter.I inis the address of the procedure's argument(s), and.I outis the address of where to place the result(s);.I inprocis used to encode the procedure's parameters, and.I outprocis used to decode the procedure's results;.I toutis the time allowed for results to come back..br.if t .ne 7.LP.ft B.nf.sp .5clnt_destroy(clnt)\s-1CLIENT\s0 *clnt;.fi.ft R.IPA macro that destroys the client's.SM RPChandle.Destruction usually involves deallocationof private data structures, including.I clntitself. Use of.I clntis undefined after calling.BR clnt_destroy(\|) .If the.SM RPClibrary opened the associated socket, it will close it also.Otherwise, the socket remains open..br.if t .ne 10.LP.ft B.nf.sp .5\s-1CLIENT\s0 *clnt_create(host, prog, vers, proto)char *host;u_long prog, vers;char *proto;.fi.ft R.IPGeneric client creation routine..I hostidentifies the name of the remote host where the serveris located..I protoindicates which kind of transport protocol to use.Thecurrently supported values for this field are \(lqudp\(rqand \(lqtcp\(rq.Default timeouts are set, but can be modified using.BR clnt_control(\|) ..IPWarning: Using.SM UDPhas its shortcomings. Since.SM UDP\s0-based.SM RPCmessages can only hold up to 8 Kbytes of encoded data,this transport cannot be used for procedures that takelarge arguments or return huge results..br.if t .ne 10.LP.ft B.nf.sp .5bool_tclnt_control(cl, req, info)\s-1CLIENT\s0 *cl;u_int req;char *info;.fi.ft R.IPA macro used to change or retrieve various informationabout a client object..I reqindicates the type of operation, and.I infois a pointer to the information.For both.SM UDPand.SM TCP\s0,the supported values of.I reqand their argument types and what they do are:.IP.nf.ta +2.0i +2.0i +2.0i.SM CLSET_TIMEOUT\s0 struct timeval set total timeout.SM CLGET_TIMEOUT\s0 struct timeval get total timeout.fi.IPNote: if you set the timeout using.BR clnt_control(\|) ,the timeout parameter passed to.B clnt_call(\|)will be ignored in all future calls..IP.nf.SM CLGET_SERVER_ADDR\s0 struct sockaddr_in get server's address.fi.br.IPThe following operations are valid for.SM UDPonly:.IP.nf.ta +2.0i ; +2.0i ; +2.0i.SM CLSET_RETRY_TIMEOUT\s0 struct timeval set the retry timeout.SM CLGET_RETRY_TIMEOUT\s0 struct timeval get the retry timeout.fi.br.IPThe retry timeout is the time that.SM "UDP RPC"waits for the server to reply beforeretransmitting the request..br.if t .ne 10.LP.ft B.nf.sp .5clnt_freeres(clnt, outproc, out)\s-1CLIENT\s0 *clnt;xdrproc_t outproc;char *out;.fi.ft R.IPA macro that frees any data allocated by the.SM RPC/XDRsystem when it decoded the results of an.SM RPCcall. Theparameter.I outis the address of the results, and.I outprocis the.SM XDRroutine describing the results.This routine returns one if the results were successfullyfreed,and zero otherwise..br.if t .ne 6.LP.ft B.nf.sp .5voidclnt_geterr(clnt, errp)\s-1CLIENT\s0 *clnt;struct rpc_err *errp;.fi.ft R.IPA macro that copies the error structure out of the clienthandleto the structure at address.IR errp ..br.if t .ne 8.LP.ft B.nf.sp .5voidclnt_pcreateerror(s)char *s;.fi.ft R.IPPrint a message to standard error indicatingwhy a client.SM RPChandle could not be created.The message is prepended with string.I sand a colon.Used when a.BR clnt_create(\|) ,.BR clntraw_create(\|) ,.BR clnttcp_create(\|) ,or.B clntudp_create(\|)call fails..br.if t .ne 8.LP.ft B.nf.sp .5voidclnt_perrno(stat)enum clnt_stat stat;.fi.ft R.IPPrint a message to standard error correspondingto the condition indicated by.IR stat .Used after.BR callrpc(\|) ..br.if t .ne 8.LP.ft B.nf.sp .5clnt_perror(clnt, s)\s-1CLIENT\s0 *clnt;char *s;.fi.ft R.IPPrint a message to standard error indicating why an.SM RPCcall failed;.I clntis the handle used to do the call.The message is prepended with string.I sand a colon.Used after.BR clnt_call(\|) ..br.if t .ne 9.LP.ft B.nf.sp .5char *clnt_spcreateerrorchar *s;.fi.ft R.IPLike.BR clnt_pcreateerror(\|) ,except that it returns a stringinstead of printing to the standard error..IPBugs: returns pointer to static data that is overwrittenon each call..br.if t .ne 9.LP.ft B.nf.sp .5char *clnt_sperrno(stat)enum clnt_stat stat;.fi.ft R.IPTake the same arguments as.BR clnt_perrno(\|) ,but instead of sending a message to the standard errorindicating why an.SM RPCcall failed, return a pointer to a string which containsthe message. The string ends with a.SM NEWLINE\s0..IP.B clnt_sperrno(\|)is used instead of.B clnt_perrno(\|)if the program does not have a standard error (as a programrunning as a server quite likely does not), or if theprogrammerdoes not want the message to be output with.BR printf ,or if a message format different from that supported by.B clnt_perrno(\|)is to be used.Note: unlike.B clnt_sperror(\|)and.BR clnt_spcreaterror(\|) ,.B clnt_sperrno(\|)returns pointer to static data, but theresult will not get overwritten on each call..br.if t .ne 7.LP.ft B.nf.sp .5char *clnt_sperror(rpch, s)\s-1CLIENT\s0 *rpch;char *s;.fi.ft R.IPLike.BR clnt_perror(\|) ,except that (like.BR clnt_sperrno(\|) )it returns a string instead of printing to standard error..IPBugs: returns pointer to static data that is overwrittenon each call..br.if t .ne 10.LP.ft B.nf.sp .5\s-1CLIENT\s0 *clntraw_create(prognum, versnum)u_long prognum, versnum;.fi.ft R.IPThis routine creates a toy.SM RPCclient for the remote program.IR prognum ,version.IR versnum .The transport used to pass messages to the service isactually a buffer within the process's address space, so thecorresponding.SM RPCserver should live in the same address space; see.BR svcraw_create(\|) .This allows simulation of.SM RPCand acquisition of.SM RPCoverheads, such as round trip times, without anykernel interference.This routine returns.SM NULLif it fails..br.if t .ne 15.LP.ft B.nf.sp .5\s-1CLIENT\s0 *clnttcp_create(addr, prognum, versnum, sockp, sendsz, recvsz)struct sockaddr_in *addr;u_long prognum, versnum;int *sockp;u_int sendsz, recvsz;.fi.ft R.IPThis routine creates an.SM RPCclient for the remote program.IR prognum ,version.IR versnum ;the client uses.SM TCP/IPas a transport.The remote program is located at Internetaddress.IR *addr .If.\"The following in-line font conversion is necessary for the hyphen indicator\fB\%addr\->sin_port\fRis zero, then it is set to the actual port that the remoteprogram is listening on (the remote.B portmapservice is consulted for this information). The parameter.I sockpis a socket; if it is.BR \s-1RPC_ANYSOCK\s0 ,then this routine opens a new one and sets.IR sockp .Since.SM TCP\s0-based.SM RPCuses buffered.SM I/O ,the user may specify the size of the send and receive bufferswith the parameters.I sendszand.IR recvsz ;values of zero choose suitable defaults.This routine returns.SM NULLif it fails..br.if t .ne 15.LP.ft B.nf.sp .5\s-1CLIENT\s0 *clntudp_create(addr, prognum, versnum, wait, sockp)struct sockaddr_in *addr;u_long prognum, versnum;struct timeval wait;int *sockp;.fi.ft R.IPThis routine creates an.SM RPCclient for the remote program.IR prognum ,version.IR versnum ;the client uses.SM UDP/IPas a transport.The remote program is located at Internetaddress.IR addr .If\fB\%addr\->sin_port\fRis zero, then it is set to actual port that the remoteprogram is listening on (the remote.B portmapservice is consulted for this information). The parameter.I sockpis a socket; if it is.BR \s-1RPC_ANYSOCK\s0 ,then this routine opens a new one and sets.IR sockp .The.SM UDPtransport resends the call message in intervals of.B waittime until a response is received or until the call timesout.The total time for the call to time out is specified by.BR clnt_call(\|) ..IPWarning: since.SM UDP\s0-based.SM RPCmessages can only hold up to 8 Kbytesof encoded data, this transport cannot be used for proceduresthat take large arguments or return huge results..br.if t .ne 8.LP.ft B.nf.sp .5\s-1CLIENT\s0 *clntudp_bufcreate(addr, prognum, versnum, wait, sockp, sendsize, recosize)struct sockaddr_in *addr;u_long prognum, versnum;struct timeval wait;int *sockp;unsigned int sendsize;unsigned int recosize;.fi.ft R.IPThis routine creates an.SM RPCclient for the remote program.IR prognum ,on.IR versnum ;the client uses.SM UDP/IPas a transport.The remote program is located at Internetaddress.IR addr .If\fB\%addr\->sin_port\fRis zero, then it is set to actual port that the remoteprogram is listening on (the remote.B portmapservice is consulted for this information). The parameter.I sockpis a socket; if it is.BR \s-1RPC_ANYSOCK\s0 ,then this routine opens a new one and sets.BR sockp .The.SM UDPtransport resends the call message in intervals of.B waittime until a response is received or until the call timesout.The total time for the call to time out is specified by.BR clnt_call(\|) ..IPThis allows the user to specify the maximum packet size for sending and receiving.SM UDP\s0-based.SM RPCmessages..br.if t .ne 7.LP.ft B.nf.sp .5intget_myaddress(addr)struct sockaddr_in *addr;.fi.ft R.IPStuff the machine's.SM IPaddress into.IR *addr ,without consulting the library routines that deal with.BR /etc/hosts .The port number is always set to.BR htons(\s-1PMAPPORT\s0) .Returns zero on success, non-zero on failure..br.if t .ne 10.LP.ft B.nf.sp .5struct pmaplist *pmap_getmaps(addr)struct sockaddr_in *addr;.fi.ft R.IPA user interface to the.B portmapservice, which returns a list of the current.SM RPCprogram-to-port mappingson the host located at.SM IPaddress.IR *addr .This routine can return.SM NULL .The command.RB ` "rpcinfo \-p" 'uses this routine..br.if t .ne 12.LP.ft B.nf.sp .5u_shortpmap_getport(addr, prognum, versnum, protocol)struct sockaddr_in *addr;u_long prognum, versnum, protocol;.fi.ft R.IPA user interface to the.B portmapservice, which returns the port numberon which waits a service that supports program number.IR prognum ,version.IR versnum ,and speaks the transport protocol associated with.IR protocol .The value of.I protocolis most likely.B.SM IPPROTO_UDPor.BR \s-1IPPROTO_TCP\s0 .A return value of zero means that the mapping does not existor thatthe.SM RPCsystem failed to contact the remote.B portmapservice. In the latter case, the global variable.B rpc_createerr(\|)contains the.SM RPCstatus..br.if t .ne 15.LP.ft B.nf.sp .5enum clnt_statpmap_rmtcall(addr, prognum, versnum, procnum, inproc, in, outproc, out, tout, portp)struct sockaddr_in *addr;u_long prognum, versnum, procnum;char *in, *out;xdrproc_t inproc, outproc;struct timeval tout;u_long *portp;.fi.ft R.IPA user interface to the.B portmapservice, which instructs.B portmapon the host at.SM IPaddress.I *addrto make an.SM RPCcall on your behalf to a procedure on that host.The parameter.I *portpwill be modified to the program's port number if theproceduresucceeds.The definitions of other parameters are discussedin.B callrpc(\|)and.BR clnt_call(\|) .This procedure should be used for a \(lqping\(rq and nothingelse.See also.BR clnt_broadcast(\|) ..br.if t .ne 9.LP.ft B.nf.sp .5pmap_set(prognum, versnum, protocol, port)u_long prognum, versnum, protocol;u_short port;.fi.ft R.IPA user interface to the.B portmapservice, which establishes a mapping between the triple.RI [ prognum , versnum , protocol\fR]and.I porton the machine's.B portmapservice.The value of.I protocolis most likely.B.SM IPPROTO_UDPor.BR \s-1IPPROTO_TCP\s0 .This routine returns one if it succeeds, zero otherwise.Automatically done by.BR svc_register(\|) ..br.if t .ne 7.LP.ft B.nf.sp .5pmap_unset(prognum, versnum)u_long prognum, versnum;.fi.ft R.IPA user interface to the.B portmapservice, which destroys all mapping between the triple.RI [ prognum , versnum , *\fR]and.B portson the machine's.B portmapservice.This routine returns one if it succeeds, zerootherwise..br.if t .ne 15.LP.ft B.nf.sp .5registerrpc(prognum, versnum, procnum, procname, inproc, outproc)u_long prognum, versnum, procnum;char *(*procname) (\|) ;xdrproc_t inproc, outproc;.fi.ft R.IPRegister procedure.I procnamewith the.SM RPCservice package. If a request arrives for program.IR prognum ,version.IR versnum ,and procedure.IR procnum ,.I procnameis called with a pointer to its parameter(s);.I prognameshould return a pointer to its static result(s);.I inprocis used to decode the parameters while.I outprocis used to encode the results.This routine returns zero if the registration succeeded, \-1otherwise..IPWarning: remote procedures registered in this formare accessed using the.SM UDP/IPtransport; see.B svcudp_create(\|)for restrictions..br.if t .ne 5.LP.ft B.nf.sp .5struct rpc_createerr rpc_createerr;.fi.ft R.IPA global variable whose value is set by any.SM RPCclient creation routinethat does not succeed. Use the routine.B clnt_pcreateerror(\|)to print the reason why..if t .ne 7.LP.ft B.nf.sp .5svc_destroy(xprt)\s-1SVCXPRT\s0 *xprt;.fi.ft R.IPA macro that destroys the.SM RPCservice transport handle,.IR xprt .Destruction usually involves deallocationof private data structures, including.I xprtitself. Use of.I xprtis undefined after calling this routine..br.if t .ne 8.LP.ft B.nf.sp .5fd_set svc_fdset;.fi.ft R.IPA global variable reflecting the.SM RPCservice side'sread file descriptor bit mask; it is suitable as a template parameterto the.B selectsystem call.This is only of interestif a service implementor does not call.BR svc_run(\|) ,but rather does his own asynchronous event processing.This variable is read-only (do not pass its address to.BR select !),yet it may change after calls to.B svc_getreqset(\|)or any creation routines..brAs well, note that if the process has descriptor limitswhich are extended beyond.BR FD_SETSIZE ,this variable will only be usable for the first.BR FD_SETSIZEdescriptors..br.if t .ne 6.LP.ft B.nf.sp .5int svc_fds;.fi.ft R.IPSimilar to.BR svc_fedset(\|) ,but limited to 32 descriptors.Thisinterface is obsoleted by.BR svc_fdset(\|) ..br.if t .ne 9.LP.ft B.nf.sp .5svc_freeargs(xprt, inproc, in)\s-1SVCXPRT\s0 *xprt;xdrproc_t inproc;char *in;.fi.ft R.IPA macro that frees any data allocated by the.SM RPC/XDRsystem when it decoded the arguments to a service procedureusing.BR svc_getargs(\|) .This routine returns 1 if the results were successfullyfreed,and zero otherwise..br.if t .ne 10.LP.ft B.nf.sp .5svc_getargs(xprt, inproc, in)\s-1SVCXPRT\s0 *xprt;xdrproc_t inproc;char *in;.fi.ft R.IPA macro that decodes the arguments of an.SM RPCrequestassociated with the.SM RPCservice transport handle,.IR xprt .The parameter.I inis the address where the arguments will be placed;.I inprocis the.SM XDRroutine used to decode the arguments.This routine returns one if decoding succeeds, and zerootherwise..br.if t .ne 9.LP.ft B.nf.sp .5struct sockaddr_in *svc_getcaller(xprt)\s-1SVCXPRT\s0 *xprt;.fi.ft R.IPThe approved way of getting the network address of the callerof a procedure associated with the.SM RPCservice transport handle,.IR xprt ..br.if t .ne 9.LP.ft B.nf.sp .5svc_getreqset(rdfds)fd_set *rdfds;.fi.ft R.IPThis routine is only of interest if a service implementordoes not call.BR svc_run(\|) ,but instead implements custom asynchronous event processing.It is called when the.B selectsystem call has determined that an.SM RPCrequest has arrived on some.SM RPC.B socket(s) ;.I rdfdsis the resultant read file descriptor bit mask.The routine returns when all sockets associated with thevalue of.I rdfdshave been serviced..br.if t .ne 6.LP.ft B.nf.sp .5svc_getreq(rdfds)int rdfds;.fi.ft R.IPSimilar to.BR svc_getreqset(\|) ,but limited to 32 descriptors.This interface is obsoleted by.BR svc_getreqset(\|) ..br.if t .ne 17.LP.ft B.nf.sp .5svc_register(xprt, prognum, versnum, dispatch, protocol)\s-1SVCXPRT\s0 *xprt;u_long prognum, versnum;void (*dispatch) (\|);u_long protocol;.fi.ft R.IPAssociates.I prognumand.I versnumwith the service dispatch procedure,.IR dispatch .If.I protocolis zero, the service is not registered with the.B portmapservice. If.I protocolis non-zero, then a mapping of the triple.RI [ prognum , versnum , protocol\fR]to\fB\%xprt\->xp_port\fRis established with the local.B portmapservice (generally.I protocolis zero,.B.SM IPPROTO_UDPor.B.SM IPPROTO_TCP).The procedure.I dispatchhas the following form:.RS 1i.ft B.nfdispatch(request, xprt)struct svc_req *request;\s-1SVCXPRT\s0 *xprt;.ft R.fi.RE.IPThe.B svc_register(\|)routine returns one if it succeeds, and zero otherwise..br.if t .ne 6.LP.ft B.nf.sp .5svc_run(\|).fi.ft R.IPThis routine never returns.It waits for.SM RPCrequests to arrive, and calls the appropriate serviceprocedure using.B svc_getreq(\|)when one arrives.This procedure is usually waiting for a.B select(\|)system call to return..br.if t .ne 9.LP.ft B.nf.sp .5svc_sendreply(xprt, outproc, out)\s-1SVCXPRT\s0 *xprt;xdrproc_t outproc;char *out;.fi.ft R.IPCalled by an.SM RPCservice's dispatch routine to send the results of aremote procedure call. The parameter.I xprtis the request's associated transport handle;.I outprocis the.SM XDRroutine which is used to encode the results; and.I outis the address of the results.This routine returns one if it succeeds, zero otherwise..br.if t .ne 7.LP.ft B.nf.sp .5voidsvc_unregister(prognum, versnum)u_long prognum, versnum;.fi.ft R.IPRemove all mapping of the double.RI [ prognum , versnum ]to dispatch routines, and of the triple.RI [ prognum , versnum , *\fR]to port number..br.if t .ne 9.LP.ft B.nf.sp .5voidsvcerr_auth(xprt, why)\s-1SVCXPRT\s0 *xprt;enum auth_stat why;.fi.ft R.IPCalled by a service dispatch routine that refuses to performa remote procedure call due to an authentication error..br.if t .ne 7.LP.ft B.nf.sp .5voidsvcerr_decode(xprt)\s-1SVCXPRT\s0 *xprt;.fi.ft R.IPCalled by a service dispatch routine that cannot successfullydecode its parameters.See also.BR svc_getargs(\|) ..br.if t .ne 7.LP.ft B.nf.sp .5voidsvcerr_noproc(xprt)\s-1SVCXPRT\s0 *xprt;.fi.ft R.IPCalled by a service dispatch routine that does not implementthe procedure number that the caller requests..br.if t .ne 7.LP.ft B.nf.sp .5voidsvcerr_noprog(xprt)\s-1SVCXPRT\s0 *xprt;.fi.ft R.IPCalled when the desired program is not registered with the.SM RPCpackage.Service implementors usually do not need this routine..br.if t .ne 7.LP.ft B.nf.sp .5voidsvcerr_progvers(xprt)\s-1SVCXPRT\s0 *xprt;.fi.ft R.IPCalled when the desired version of a program is not registeredwith the.SM RPCpackage.Service implementors usually do not need this routine..br.if t .ne 7.LP.ft B.nf.sp .5voidsvcerr_systemerr(xprt)\s-1SVCXPRT\s0 *xprt;.fi.ft R.IPCalled by a service dispatch routine when it detects a systemerrornot covered by any particular protocol.For example, if a service can no longer allocate storage,it may call this routine..br.if t .ne 8.LP.ft B.nf.sp .5voidsvcerr_weakauth(xprt)\s-1SVCXPRT\s0 *xprt;.fi.ft R.IPCalled by a service dispatch routine that refuses to performa remote procedure call due to insufficientauthentication parameters. The routine calls.BR "svcerr_auth(xprt, \s-1AUTH_TOOWEAK\s0)" ..br.if t .ne 11.LP.ft B.nf.sp .5\s-1SVCXPRT\s0 *svcraw_create(\|).fi.ft R.IPThis routine creates a toy.SM RPCservice transport, to which it returns a pointer. Thetransportis really a buffer within the process's address space,so the corresponding.SM RPCclient should live in the sameaddress space;see.BR clntraw_create(\|) .This routine allows simulation of.SM RPCand acquisition of.SM RPCoverheads (such as round trip times), without any kernelinterference.This routine returns.SM NULLif it fails..br.if t .ne 11.LP.ft B.nf.sp .5\s-1SVCXPRT\s0 *svctcp_create(sock, send_buf_size, recv_buf_size)int sock;u_int send_buf_size, recv_buf_size;.fi.ft R.IPThis routine creates a.SM TCP/IP\s0-based.SM RPCservice transport, to which it returns a pointer.The transport is associated with the socket.IR sock ,which may be.BR \s-1RPC_ANYSOCK\s0 ,in which case a new socket is created.If the socket is not bound to a local.SM TCPport, then this routine binds it to an arbitrary port. Uponcompletion,\fB\%xprt\->xp_sock\fRis the transport's socket descriptor, and\fB\%xprt\->xp_port\fRis the transport's port number.This routine returns.SM NULLif it fails.Since.SM TCP\s0-based.SM RPCuses buffered.SM I/O ,users may specify the size of buffers; values of zerochoose suitable defaults..br.if t .ne 11.LP.ft B.nf.sp .5\s-1SVCXPRT\s0 *svcfd_create(fd, sendsize, recvsize)int fd;u_int sendsize;u_int recvsize;.fi.ft R.IPCreate a service on top of any open descriptor.Typically,thisdescriptor is a connected socket for a stream protocol suchas.SM TCP\s0..I sendsizeand.I recvsizeindicate sizes for the send and receive buffers. If they arezero, a reasonable default is chosen..br.if t .ne 10.LP.ft B.nf.sp .5\s-1SVCXPRT\s0 *svcudp_bufcreate(sock, sendsize, recosize)int sock;.fi.ft R.IPThis routine creates a.SM UDP/IP\s0-based.SM RPCservice transport, to which it returns a pointer.The transport is associated with the socket.IR sock ,which may be.B \s-1RPC_ANYSOCK\s0 ,in which case a new socket is created.If the socket is not bound to a local.SM UDPport, then this routine binds it to an arbitrary port.Uponcompletion,\fB\%xprt\->xp_sock\fRis the transport's socket descriptor, and\fB\%xprt\->xp_port\fRis the transport's port number.This routine returns.SM NULLif it fails..IPThis allows the user to specify the maximum packet size for sending andreceiving.SM UDP\s0-based.SM RPC messages..br.if t .ne 7.LP.ft B.nf.sp .5xdr_accepted_reply(xdrs, ar)\s-1XDR\s0 *xdrs;struct accepted_reply *ar;.fi.ft R.IPUsed for encoding.SM RPCreply messages.This routine is useful for users whowish to generate\s-1RPC\s0-stylemessages without using the.SM RPCpackage..br.if t .ne 7.LP.ft B.nf.sp .5xdr_authunix_parms(xdrs, aupp)\s-1XDR\s0 *xdrs;struct authunix_parms *aupp;.fi.ft R.IPUsed for describing.SM UNIXcredentials.This routine is useful for userswho wish to generate these credentials without using the.SM RPCauthentication package..br.if t .ne 7.LP.ft B.nf.sp .5voidxdr_callhdr(xdrs, chdr)\s-1XDR\s0 *xdrs;struct rpc_msg *chdr;.fi.ft R.IPUsed for describing.SM RPCcall header messages.This routine is useful for users who wish to generate.SM RPC\s0-stylemessages without using the.SM RPCpackage..br.if t .ne 7.LP.ft B.nf.sp .5xdr_callmsg(xdrs, cmsg)\s-1XDR\s0 *xdrs;struct rpc_msg *cmsg;.fi.ft R.IPUsed for describing.SM RPCcall messages.This routine is useful for users who wish to generate.SM RPC\s0-stylemessages without using the.SM RPCpackage..br.if t .ne 7.LP.ft B.nf.sp .5xdr_opaque_auth(xdrs, ap)\s-1XDR\s0 *xdrs;struct opaque_auth *ap;.fi.ft R.IPUsed for describing.SM RPCauthentication information messages.This routine is useful for users who wish to generate.SM RPC\s0-stylemessages without using the.SM RPCpackage..br.if t .ne 7.LP.ft B.nf.sp .5xdr_pmap(xdrs, regs)\s-1XDR\s0 *xdrs;struct pmap *regs;.fi.ft R.IPUsed for describing parameters to various.B portmapprocedures, externally.This routine is useful for users who wish to generatethese parameters without using the.B pmapinterface..br.if t .ne 7.LP.ft B.nf.sp .5xdr_pmaplist(xdrs, rp)\s-1XDR\s0 *xdrs;struct pmaplist **rp;.fi.ft R.IPUsed for describing a list of port mappings, externally.This routine is useful for users who wish to generatethese parameters without using the.B pmapinterface..br.if t .ne 7.LP.ft B.nf.sp .5xdr_rejected_reply(xdrs, rr)\s-1XDR\s0 *xdrs;struct rejected_reply *rr;.fi.ft R.IPUsed for describing.SM RPCreply messages.This routine is useful for users who wish to generate.SM RPC\s0-stylemessages without using the.SM RPCpackage..br.if t .ne 8.LP.ft B.nf.sp .5xdr_replymsg(xdrs, rmsg)\s-1XDR\s0 *xdrs;struct rpc_msg *rmsg;.fi.ft R.IPUsed for describing.SM RPCreply messages.This routine is useful for users who wish to generate.SM RPCstyle messages without using the.SM RPCpackage..br.if t .ne 8.LP.ft B.nf.sp .5voidxprt_register(xprt)\s-1SVCXPRT\s0 *xprt;.fi.ft R.IPAfter.SM RPCservice transport handles are created,they should register themselves with the.SM RPCservice package.This routine modifies the global variable.BR svc_fds(\|) .Service implementors usually do not need this routine..br.if t .ne 8.LP.ft B.nf.sp .5voidxprt_unregister(xprt)\s-1SVCXPRT\s0 *xprt;.fi.ft R.IPBefore an.SM RPCservice transport handle is destroyed,it should unregister itself with the.SM RPCservice package.This routine modifies the global variable.BR svc_fds(\|) .Service implementors usually do not need this routine..SH SEE ALSO.BR rpc_secure (3),.BR xdr (3).brThe following manuals:.RS.ft IRemote Procedure Calls: Protocol Specification.brRemote Procedure Call Programming Guide.brrpcgen Programming Guide.br.ft R.RE.IR "\s-1RPC\s0: Remote Procedure Call Protocol Specification" ,.SM RFC1050, Sun Microsystems, Inc.,.SM USC-ISI\s0.
Go to most recent revision | Compare with Previous | Blame | View Log
