RPC_SVC_REG(3R)RPC_SVC_REG(3R)NAME
rpc_svc_reg: _rpc_errorhandler, svc_fdset, svc_fds, svc_freeargs,
svc_getargs, svc_getcaller, svc_getreq, svc_getreqset, svc_run,
svc_sendreply, svc_versquiet - library routines for RPC servers
SYNOPSIS AND DESCRIPTION
This page describes function from Irix standard C library (libc) which
are used by RPC servers to process calls comming from clients.
#include <rpc/rpc.h>
void
_rpc_errorhandler(int priority, const char *format, ...)
Called by the RPC library routines to print an error message to
stderr or to syslog(3), if openlog(3) was called. priority values
are defined in <syslog.h>. format is printf-like format string.
See comments in <rpc/errorhandler.h> for details on defining your
own version for more sophisticated error handling.
fd_set svc_fdset;
A global variable reflecting the RPC service side's read file
descriptor bit mask; it is suitable as a parameter to the select(2)
system call. This is only of interest if a service implementor does
not call svc_run(), in order to do asynchronous event processing,
for example. This variable is read-only (do not pass its address to
select!), yet it may change after calls to svc_getreqset() or any
creation routines.
int svc_fds
Similar to svc_fdset, but limited to 32 descriptors. This interface
is obsoleted by svc_fdset.
bool_t
svc_freeargs(SVCXPRT *xprt, xdrproc_t inproc, void *in)
A macro that frees any data allocated by the RPC/XDR system when it
decoded the arguments to a service procedure using svc_getargs().
This routine returns 1 if the results were successfully freed, and 0
otherwise.
bool_t
svc_getargs(SVCXPRT *xprt, xdrproc_t inproc, void *in)
Page 1
RPC_SVC_REG(3R)RPC_SVC_REG(3R)
A macro that decodes the arguments of an RPC request associated with
the RPC service transport handle, xprt. The parameter in is the
address where the arguments will be placed; inproc is the XDR
routine used to decode the arguments. This routine returns 1 if
decoding succeeds, and 0 otherwise. Only after this routine is
called can the server call fork(2) to create a child process to
handle the request.
struct sockaddr_in *
svc_getcaller(SVCXPRT *xprt)
The approved way of getting the network address of the caller of a
procedure associated with the RPC service transport handle, xprt.
void
svc_getreq(int rdfds)
This routine is provided for compatibility with old code. Use
svc_getreqset () when developing new code.
void
svc_getreqset(fd_set *rdfds)
This routine is only of interest if a service implementor does not
call svc_run(), but instead implements custom asynchronous event
processing. It is called when the select(2) system call has
determined that an RPC request has arrived on some RPC socket(s);
rdfds is the resultant read file descriptor bit mask. The routine
returns when all sockets associated with the value of rdfds have
been serviced.
void
svc_run(void)
This routine never returns. It waits for RPC requests to arrive, and
calls the appropriate service procedure using svc_getreq() when one
arrives. This procedure is usually waiting for a select() system
call to return.
bool_t
svc_sendreply(SVCXPRT *xprt, xdrproc_t outproc, void *out)
Called by an RPC service's dispatch routine to send the results of a
remote procedure call. The parameter xprt is the request's
associated transport handle; outproc is the XDR routine which is
used to encode the results; and out is the address of the results.
This routine returns 1 if it succeeds, 0 otherwise.
Page 2
RPC_SVC_REG(3R)RPC_SVC_REG(3R)
void
svc_versquiet(SVCXPRT *xprt)
Tell the RPC library to not complain (send no reply message at all)
about version errors to the client. This is useful when revving
broadcast protocols that sit on a fixed address. TCP services
ignore this flag.
SEE ALSOrpc_svc_cls(3R), rpc_svc_cr(3R), rpc(3R), IRIX Network Programming Guide.
Page 3